Kizuki
    Preparing search index...

    Interface ReviewPlan

    When a concept comes back: due (today or earlier), upcoming, or blocked (it needs concepts that have not had a clean session yet, listed in blockedBy).

    interface ReviewPlan {
        blockedBy: string[];
        conceptId: string;
        due: string;
        gapDays: number;
        lastSessionAt?: string;
        status: "due" | "upcoming" | "blocked";
        streak: number;
    }
    Index
    blockedBy: string[]

    The ids of confirmed concepts this one needs that have not had a clean session yet. Empty when nothing blocks it.

    conceptId: string

    The concept this plan is for.

    due: string

    The day the concept comes back, as YYYY-MM-DD. When the exam is today or later and this would fall on or after it, it moves to the day before the exam, but never before today.

    gapDays: number

    The wait after the last session, in days: 0 with no session yet, 1 after a miss, and 1, 2, 4, 8 and so on (up to MAX_GAP_DAYS) for clean sessions in a row.

    lastSessionAt?: string

    When the concept's last session ended, as an ISO time string. undefined if it has no ended session.

    status: "due" | "upcoming" | "blocked"

    blocked if blockedBy is not empty, otherwise due when due is today or earlier, and upcoming after that.

    streak: number

    Clean sessions in a row since the last miss.