docs: STATUS.md auf Phase-9-Welle-2-Stand
22 Commits / 105 Tests / Phase 9 weit ausgebaut. Subtilität #10 (content_hash-Architektur) ergänzt — Anki-Re-Import-Dedupe nutzt es, Backfill-Lücke für Pre-9j-Karten dokumentiert. Git-Historie auf neuesten Stand. "Was als Nächstes" auf Pre-Flight + Media-Upload neu sortiert. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
This commit is contained in:
parent
593d4475df
commit
e7ae93dcf9
1 changed files with 42 additions and 15 deletions
57
STATUS.md
57
STATUS.md
|
|
@ -1,6 +1,6 @@
|
|||
# Cards — Projekt-Status & Onboarding
|
||||
|
||||
**Letztes Update:** 2026-05-08 (Phase 8 + Phase 9 Polish-Welle)
|
||||
**Letztes Update:** 2026-05-08 (Phase 8 + Phase 9 erweiterte Polish-Welle)
|
||||
**Wenn du gerade neu bist (Mensch oder KI):** dieses Dokument soll dir
|
||||
in 5 Minuten den vollen Kontext geben. Lies es vor allem anderen.
|
||||
|
||||
|
|
@ -13,10 +13,10 @@ in 5 Minuten den vollen Kontext geben. Lies es vor allem anderen.
|
|||
Code-Übernahme aus dem alten `mana-monorepo`, sauber neu gebaut —
|
||||
mit einer dokumentierten Ausnahme für den Anki-Format-Parser
|
||||
(Phase 8c, standalone Parser-Logik).
|
||||
- **17 saubere Commits** auf `main`. Type-check 4/4 grün, **94 Tests
|
||||
grün** (41 Domain + 48 API + 5 Web), lokaler E2E-Smoke (Postgres →
|
||||
API → Frontend → Föderations-Endpunkte → Cloze-Card → /stats →
|
||||
/me/export) durch.
|
||||
- **22 saubere Commits** auf `main`. Type-check 4/4 grün, **105 Tests
|
||||
grün** (51 Domain + 49 API + 5 Web), lokaler E2E-Smoke (Postgres →
|
||||
API → Frontend → Föderations-Endpunkte → Cloze-Card mit Hint →
|
||||
/stats → /me/export → /cards/hashes) durch.
|
||||
- **Phasen 0, 1, 3, 4, 5, 8 vollständig durch.** **Phase 9 Polish-
|
||||
Welle teilweise** (Card-Edit, Cloze-Editor, Inbox-Banner, Account-
|
||||
/DSGVO-Self-Service, Statistik-Dashboard) — i18n + Image-Occlusion
|
||||
|
|
@ -89,7 +89,7 @@ Vollständiger Plan: [`mana/docs/playbooks/CARDS_GREENFIELD.md`](../mana/docs/pl
|
|||
| 6 | Subscriptions/Credits via mana-credits | ⏸ offen | autonom möglich |
|
||||
| 7 | AI/MCP-Integration | ⏸ offen | braucht laufende mana-mcp |
|
||||
| 8 | Anki-Import (.apkg-Parser, Cloze-Support) | ✅ | 92 Tests grün, /import-Route benutzbar, Cloze als 3. MVP-Card-Type |
|
||||
| 9 | Polish (DSGVO-UI, Settings, Account, Statistik, i18n, A11y) | 🟡 läuft | Card-Edit + Cloze-Editor + Inbox-Banner + Account/DSGVO + Statistik durch (9a-9f). i18n, A11y-Pass, Hint-Anzeige bei Cloze, Image-Occlusion und manuelle Cloze-Hint-UI offen |
|
||||
| 9 | Polish (DSGVO-UI, Settings, Account, Statistik, i18n, A11y) | 🟡 weit | Card-Edit + Cloze-Editor + Inbox-Banner + Account/DSGVO + Statistik + Pre-Flight-Swap + i18n DE/EN + A11y-Pass + Cloze-Hint-Anzeige + Anki-Re-Import-Dedupe durch (9a–9j). Verbleibend: Image-Occlusion, manueller Cloze-Hint-Editor-Help-UI, Media-Upload für Anki-Import |
|
||||
| 10 | Production-Deploy (Mac Mini, Cloudflare-Tunnel) | ⏸ offen | braucht DNS + Tunnel-Config |
|
||||
| 11 | Decommission Cards-Modul aus mana-monorepo | ⏸ offen | erst nach Phase 10 |
|
||||
|
||||
|
|
@ -231,6 +231,11 @@ Volle Konventionen: [`CLAUDE.md`](CLAUDE.md)
|
|||
## Git-Historie
|
||||
|
||||
```
|
||||
593d447 Phase 9j: Anki-Re-Import-Dedupe via content_hash
|
||||
4b451f1 Phase 9i: Cloze-Hint-Anzeige
|
||||
fd86d96 Phase 9h: A11y-Pass
|
||||
c25c1d0 Phase 9g: i18n DE/EN über alle Routes
|
||||
a640594 docs: STATUS.md auf Phase-9-Polish-Stand
|
||||
6db6dc3 Phase 9f: Statistik-Dashboard
|
||||
03117d5 Phase 9e: Account-Page mit DSGVO-Self-Service
|
||||
aff4d95 Phase 9d: Pre-Flight — Protocol-Mirror durch upstream ersetzt
|
||||
|
|
@ -366,7 +371,24 @@ in parse.ts). Bei Update von `sql.js` muss die Datei neu kopiert
|
|||
werden: `cp apps/web/node_modules/sql.js/dist/sql-wasm.wasm
|
||||
apps/web/static/sql-wasm.wasm`.
|
||||
|
||||
### 10. Cards-Modul in mana-monorepo wird nach Live-Gang **gelöscht**
|
||||
### 10. content_hash auf cards (Sprint 9j)
|
||||
|
||||
Jede neue Karte bekommt einen SHA-256-`content_hash` über
|
||||
`{type, sorted-fields}` — geschrieben automatisch im Card-POST,
|
||||
genutzt vom Anki-Re-Import-Dedupe (`/api/v1/cards/hashes` lädt
|
||||
nur die Hash-Liste, der Importer dedupliziert clientseitig).
|
||||
|
||||
`cardContentHash()` in `@cards/domain` ist deterministisch und
|
||||
field-order-invariant. Cluster-Markup, Whitespace und Hint-
|
||||
Annotationen zählen mit — bewusst, weil zwei Cards mit dem Text
|
||||
`Paris ist Hauptstadt` und `{{c1::Paris}} ist Hauptstadt` sind
|
||||
inhaltlich verschieden.
|
||||
|
||||
**Backfill-Lücke:** Pre-Sprint-9j-Karten haben `content_hash = NULL`.
|
||||
Der `/hashes`-Endpoint filtert sie weg, also können sie irrtümlich
|
||||
beim Re-Import erneut entstehen. Backfill-Skript ist Phase-10-Polish.
|
||||
|
||||
### 11. Cards-Modul in mana-monorepo wird nach Live-Gang **gelöscht**
|
||||
|
||||
Strategie-B-Konsequenz: nach `cardecky.mana.how` live + 2 Wochen Test
|
||||
folgt ein Decommission-PR in mana-monorepo, der `apps/mana/.../modules/cards/`,
|
||||
|
|
@ -397,22 +419,27 @@ diskutiert worden.
|
|||
|
||||
In Reihenfolge meiner Empfehlung:
|
||||
|
||||
1. **Phase 9 weiter ausbauen** — i18n DE/EN-Pass über alle Routes,
|
||||
A11y-Pass, Hint-Anzeige bei Cloze (`{{c1::a::hint}}`), Media-
|
||||
Upload für Anki-Import (additiv via lokalem cards-api-Endpoint).
|
||||
Re-Import-Dedupe wäre nice. ~3–5 Tage.
|
||||
2. **Pre-Flight Restklemmen abräumen** — DNS, GitHub-Repo
|
||||
1. **Pre-Flight Restklemmen abräumen** — DNS, GitHub-Repo
|
||||
`mana-ev/cards`, mana-auth-App-Reg (Service-Key + Public-Key),
|
||||
mana-share-Manifest-Reg. Verdaccio + Protocol-Swap durch
|
||||
(Sprint 8d). Hängt an User-Aktion + laufender Plattform.
|
||||
mana-share-Manifest-Reg. Hängt an User-Aktion + laufender
|
||||
Plattform.
|
||||
2. **Media-Upload für Anki-Import** (Sprint-Kandidat 15) — lokaler
|
||||
`POST /api/v1/media/upload`-Endpoint mit MinIO oder Disk;
|
||||
Anki-Importer reicht die Filename→URL-Map durch sanitizeAnkiHtml.
|
||||
Open: Storage-Backend-Wahl (MinIO vs. lokal). 1–2 Tage.
|
||||
3. **Phase 6 (Subscriptions)** — braucht laufende mana-credits +
|
||||
Phase 2 Auth-Föderation.
|
||||
4. **Phase 7 (AI/MCP)** — braucht laufende mana-mcp.
|
||||
5. **Phase 10 (Production-Deploy)** — Mac Mini + Cloudflare-Tunnel,
|
||||
nach allen Pre-Flight-Items.
|
||||
6. **content_hash-Backfill** — Pre-Phase-9j-Karten haben null
|
||||
content_hash; ein einmaliges Skript würde sie nachziehen, sodass
|
||||
Re-Import-Dedupe lückenlos funktioniert. Phase 10-Polish, sobald
|
||||
Live-User da sind.
|
||||
|
||||
Was nicht autonom geht: Phase 2, 6, 7, 10 — alle hängen an Pre-Flight
|
||||
oder Plattform-Diensten. Phase 9 weiter ist autonom möglich.
|
||||
oder Plattform-Diensten. Phase 9 ist breit ausgebaut; Image-Occlusion
|
||||
und Image-Occlusion-Editor wären die nächsten autonomen Polish-Items.
|
||||
|
||||
---
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue