feat: Fortschritts-Tracking – user_daily_activity, Tagesziel & GET /auth/stats

- Neue Tabelle user_daily_activity (Tagesverlauf) + Spalte daily_goal_ep
- POST /auth/progress schreibt Tagesaktivität mit
- GET /auth/me liefert daily_goal_ep
- Neuer GET /auth/stats: Tagesverlauf, Tagesziel, Totals, echte Skills je answer_type
- Neuer PUT /auth/goal zum Setzen des Tagesziels

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
This commit is contained in:
2026-06-13 16:40:57 +02:00
parent 895d7c56a1
commit f0f768ff2c
2 changed files with 119 additions and 0 deletions

View File

@@ -534,6 +534,21 @@ async function migrate() {
FOR EACH ROW EXECUTE FUNCTION update_last_seen_at()
`);
// user_daily_activity — Tagesverlauf für Streak-Kalender, Wochengraph, Tagesziel
await query(`
CREATE TABLE IF NOT EXISTS user_daily_activity (
user_id UUID NOT NULL REFERENCES users(id) ON DELETE CASCADE,
activity_date DATE NOT NULL,
ep_earned INTEGER NOT NULL DEFAULT 0,
cards_done INTEGER NOT NULL DEFAULT 0,
correct_count INTEGER NOT NULL DEFAULT 0,
PRIMARY KEY (user_id, activity_date)
)
`);
// Tagesziel (EP/Tag) auf dem App-Profil
await query(`ALTER TABLE users_public ADD COLUMN IF NOT EXISTS daily_goal_ep INTEGER NOT NULL DEFAULT 30`).catch(() => {});
// audios
await query(`
CREATE TABLE IF NOT EXISTS audios (