cards/apps/api
Till JS 9f019d8e2f
Some checks are pending
CI / validate (push) Waiting to run
feat(cards): leech detection in /me/stats + Stats-Page-Sektion
Karten mit ≥4 Lapses werden im Stats-Endpoint als `leech_cards`
geliefert (mit Front-Snippet, Deck-Name, Lapses-Count, sortiert
desc, max 20). Stats-Page zeigt eine rote „Schwierige Karten"-
Sektion mit Link in den Card-Editor.

* apps/api/src/routes/me.ts: GROUP BY card → SUM(lapses) ≥ 4
  Filter, frontSnippetFor()-Helper für alle 6 Card-Types
  (basic, basic-reverse, cloze, image-occlusion, audio-front,
  typing, multiple-choice). Cloze-Markup wird gestrippt damit
  der Snippet UI-tauglich ist.
* apps/web Stats-Page: neue CardSurface mit Warning-Icon, scrollbare
  Liste mit Front + Deck + Lapses-Badge, Empty-State.
* i18n in DE/EN/FR/IT/ES (5 Strings + plural-Form).

104/104 Tests grün (kein neuer Test — bestehende /me/stats-Tests
covern die Aggregations-Form), web check 0 errors.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-12 19:01:48 +02:00
..
scripts db(cards): baseline migration + drizzle-tracking bootstrap script 2026-05-12 18:53:52 +02:00
src feat(cards): leech detection in /me/stats + Stats-Page-Sektion 2026-05-12 19:01:48 +02:00
tests security(cards): fail-secure dev-stub, headers, rate-limit, dsgvo audit 2026-05-12 16:56:03 +02:00
Dockerfile fix(api Dockerfile): COPY app-manifest.json (runtime-import) 2026-05-08 20:14:20 +02:00
drizzle.config.ts Phase 12 R0+R1: Marketplace-Restore-Plan + Schema in marketplace-pgSchema 2026-05-09 15:05:22 +02:00
package.json db(cards): baseline migration + drizzle-tracking bootstrap script 2026-05-12 18:53:52 +02:00
tsconfig.json Phase 3 follow-up: type-check + tests grün, ts-fsrs v5 API 2026-05-08 14:41:04 +02:00
vitest.config.ts security(cards): fail-secure dev-stub, headers, rate-limit, dsgvo audit 2026-05-12 16:56:03 +02:00