From 1afb825860cd293b8065d51746f4b23e4e8dab5d Mon Sep 17 00:00:00 2001 From: Claude Date: Thu, 12 Feb 2026 14:54:18 +0000 Subject: feat: 学習カード数の上限を撤廃 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit REVIEW_CARDS_LIMIT(復習カード80枚制限)とnewCardsPerDay(1日の新規カード制限) を削除し、期日が来たすべてのカードを制限なく返すように変更。 削除した主な要素: - REVIEW_CARDS_LIMIT定数とカード取得時のlimitパラメータ - newCardsPerDayフィールド(DB schema, 型定義, Zod schema, sync, CRDT) - countDueNewCards, countDueReviewCards, findDueNewCardsForStudy, findDueReviewCardsForStudy(CardRepository) - countTodayNewCardReviews(ReviewLogRepository) - デッキルートからのReviewLogRepository依存 https://claude.ai/code/session_018hrEJ9vg3RPoeAPyEc17gS --- src/server/routes/decks.ts | 43 +++---------------------------------------- 1 file changed, 3 insertions(+), 40 deletions(-) (limited to 'src/server/routes/decks.ts') diff --git a/src/server/routes/decks.ts b/src/server/routes/decks.ts index d73aa0c..ed7077e 100644 --- a/src/server/routes/decks.ts +++ b/src/server/routes/decks.ts @@ -7,25 +7,20 @@ import { cardRepository, type DeckRepository, deckRepository, - type ReviewLogRepository, - reviewLogRepository, } from "../repositories/index.js"; import { createDeckSchema, updateDeckSchema } from "../schemas/index.js"; export interface DeckDependencies { deckRepo: DeckRepository; cardRepo: CardRepository; - reviewLogRepo: ReviewLogRepository; } const deckIdParamSchema = z.object({ id: z.uuid(), }); -const REVIEW_CARDS_LIMIT = 80; - export function createDecksRouter(deps: DeckDependencies) { - const { deckRepo, cardRepo, reviewLogRepo } = deps; + const { deckRepo, cardRepo } = deps; return new Hono() .use("*", authMiddleware) @@ -35,26 +30,7 @@ export function createDecksRouter(deps: DeckDependencies) { const now = new Date(); const decksWithDueCount = await Promise.all( decks.map(async (deck) => { - const [dueNewCards, dueReviewCards, reviewedNewCards] = - await Promise.all([ - cardRepo.countDueNewCards(deck.id, now), - cardRepo.countDueReviewCards(deck.id, now), - reviewLogRepo.countTodayNewCardReviews(deck.id, now), - ]); - - // Apply the same limits as the study screen - const newCardBudget = Math.max( - 0, - deck.newCardsPerDay - reviewedNewCards, - ); - const newCardsToStudy = Math.min(dueNewCards, newCardBudget); - const reviewCardsToStudy = Math.min( - dueReviewCards, - REVIEW_CARDS_LIMIT, - ); - - const dueCardCount = newCardsToStudy + reviewCardsToStudy; - + const dueCardCount = await cardRepo.countDueCards(deck.id, now); return { ...deck, dueCardCount }; }), ); @@ -68,7 +44,6 @@ export function createDecksRouter(deps: DeckDependencies) { userId: user.id, name: data.name, description: data.description, - newCardsPerDay: data.newCardsPerDay, }); return c.json({ deck }, 201); @@ -83,18 +58,7 @@ export function createDecksRouter(deps: DeckDependencies) { } const now = new Date(); - const [dueNewCards, dueReviewCards, reviewedNewCards] = await Promise.all( - [ - cardRepo.countDueNewCards(deck.id, now), - cardRepo.countDueReviewCards(deck.id, now), - reviewLogRepo.countTodayNewCardReviews(deck.id, now), - ], - ); - - const newCardBudget = Math.max(0, deck.newCardsPerDay - reviewedNewCards); - const newCardsToStudy = Math.min(dueNewCards, newCardBudget); - const reviewCardsToStudy = Math.min(dueReviewCards, REVIEW_CARDS_LIMIT); - const dueCardCount = newCardsToStudy + reviewCardsToStudy; + const dueCardCount = await cardRepo.countDueCards(deck.id, now); return c.json({ deck: { ...deck, dueCardCount } }, 200); }) @@ -131,5 +95,4 @@ export function createDecksRouter(deps: DeckDependencies) { export const decks = createDecksRouter({ deckRepo: deckRepository, cardRepo: cardRepository, - reviewLogRepo: reviewLogRepository, }); -- cgit v1.3-1-g0d28