fix(card): use RELEARNING_STEPS for relearning card interval preview

This commit is contained in:
2026-03-13 15:44:06 +08:00
parent 4243cdc68b
commit 7c71ffcf31

View File

@@ -36,24 +36,24 @@ function calculateNewCardIntervals(): PreviewIntervals {
};
}
function calculateLearningIntervals(left: number): PreviewIntervals {
const steps = SM2_CONFIG.LEARNING_STEPS;
function calculateLearningIntervals(left: number, isRelearning: boolean): PreviewIntervals {
const steps = isRelearning ? SM2_CONFIG.RELEARNING_STEPS : SM2_CONFIG.LEARNING_STEPS;
const stepIndex = Math.floor(left % 1000);
const again = steps[0];
const again = steps[0] ?? 1;
let hard: number;
if (stepIndex === 0 && steps.length >= 2) {
hard = (steps[0] + steps[1]) / 2;
} else if (stepIndex < steps.length - 1) {
hard = steps[stepIndex];
const step0 = steps[0] ?? 1;
const step1 = steps[1] ?? step0;
hard = (step0 + step1) / 2;
} else {
hard = SM2_CONFIG.GRADUATING_INTERVAL_GOOD * 1440;
hard = steps[stepIndex] ?? steps[0] ?? 1;
}
let good: number;
if (stepIndex < steps.length - 1) {
good = steps[stepIndex + 1];
good = steps[stepIndex + 1] ?? steps[0] ?? 1;
} else {
good = SM2_CONFIG.GRADUATING_INTERVAL_GOOD * 1440;
}
@@ -68,8 +68,9 @@ export function calculatePreviewIntervals(card: CardPreview): PreviewIntervals {
case CardType.NEW:
return calculateNewCardIntervals();
case CardType.LEARNING:
return calculateLearningIntervals(card.left, false);
case CardType.RELEARNING:
return calculateLearningIntervals(card.left);
return calculateLearningIntervals(card.left, true);
case CardType.REVIEW:
default:
return calculateReviewIntervals(card.ivl, card.factor);