feat(deck): add daily learning limits and today's study stats

- Add newPerDay and revPerDay fields to Deck model (Anki-style)
- Add settings modal to configure daily limits per deck
- Display today's studied counts (new/review/learning) on deck page
- Add i18n translations for all 8 languages
- Fix JSON syntax errors in fr-FR.json and it-IT.json
- Fix double counting bug in repoGetTodayStudyStats
This commit is contained in:
2026-03-16 09:01:55 +08:00
parent a68951f1d3
commit bc0b392875
23 changed files with 466 additions and 60 deletions

View File

@@ -15,6 +15,8 @@ export const schemaActionInputUpdateDeck = z.object({
desc: z.string().max(500).optional(),
visibility: z.enum(["PRIVATE", "PUBLIC"]).optional(),
collapsed: z.boolean().optional(),
newPerDay: z.number().int().min(0).max(999).optional(),
revPerDay: z.number().int().min(0).max(9999).optional(),
});
export type ActionInputUpdateDeck = z.infer<typeof schemaActionInputUpdateDeck>;
export const validateActionInputUpdateDeck = generateValidator(schemaActionInputUpdateDeck);
@@ -46,6 +48,8 @@ export type ActionOutputDeck = {
visibility: "PRIVATE" | "PUBLIC";
collapsed: boolean;
conf: unknown;
newPerDay: number;
revPerDay: number;
createdAt: Date;
updatedAt: Date;
cardCount?: number;