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

@@ -59,6 +59,8 @@ export async function repoGetDeckById(input: RepoInputGetDeckById): Promise<Repo
visibility: deck.visibility,
collapsed: deck.collapsed,
conf: deck.conf,
newPerDay: deck.newPerDay,
revPerDay: deck.revPerDay,
createdAt: deck.createdAt,
updatedAt: deck.updatedAt,
cardCount: deck._count?.cards ?? 0,
@@ -86,6 +88,8 @@ export async function repoGetDecksByUserId(input: RepoInputGetDecksByUserId): Pr
visibility: deck.visibility,
collapsed: deck.collapsed,
conf: deck.conf,
newPerDay: deck.newPerDay,
revPerDay: deck.revPerDay,
createdAt: deck.createdAt,
updatedAt: deck.updatedAt,
cardCount: deck._count?.cards ?? 0,
@@ -118,6 +122,8 @@ export async function repoGetPublicDecks(input: RepoInputGetPublicDecks = {}): P
visibility: deck.visibility,
collapsed: deck.collapsed,
conf: deck.conf,
newPerDay: deck.newPerDay,
revPerDay: deck.revPerDay,
createdAt: deck.createdAt,
updatedAt: deck.updatedAt,
cardCount: deck._count?.cards ?? 0,
@@ -175,6 +181,8 @@ export async function repoGetPublicDeckById(input: RepoInputGetPublicDeckById):
visibility: deck.visibility,
collapsed: deck.collapsed,
conf: deck.conf,
newPerDay: deck.newPerDay,
revPerDay: deck.revPerDay,
createdAt: deck.createdAt,
updatedAt: deck.updatedAt,
cardCount: deck._count?.cards ?? 0,
@@ -279,6 +287,8 @@ export async function repoSearchPublicDecks(input: RepoInputSearchPublicDecks):
visibility: deck.visibility,
collapsed: deck.collapsed,
conf: deck.conf,
newPerDay: deck.newPerDay,
revPerDay: deck.revPerDay,
createdAt: deck.createdAt,
updatedAt: deck.updatedAt,
cardCount: deck._count?.cards ?? 0,
@@ -316,6 +326,8 @@ export async function repoGetUserFavoriteDecks(
visibility: fav.deck.visibility,
collapsed: fav.deck.collapsed,
conf: fav.deck.conf,
newPerDay: fav.deck.newPerDay,
revPerDay: fav.deck.revPerDay,
createdAt: fav.deck.createdAt,
updatedAt: fav.deck.updatedAt,
cardCount: fav.deck._count?.cards ?? 0,