Daily LLM-обзор
Что это
Заголовок раздела «Что это»Кнопка → Pages Function → Anthropic API → текстовое резюме. Доступно две аудитории:
- Учитель. Сводка по когорте: где класс силён, где проседает, какие микроскиллы в ZPD большинства, на ком сфокусироваться.
- Ученик. Персональный взгляд: что освоено, что в зоне роста, где сделать ещё попыток.
/api/daily-review, mis arvutab agregaadid koodis, saadab need Claude'ile ja saab lühikese kokkuvõtte. Arvud, mis mudelisse läksid, on avatavas plokis.Где проходит граница LLM
Заголовок раздела «Где проходит граница LLM»В проекте есть жёсткое правило: математика не идёт через LLM
(см. web/lib/explain.ts). Эта фича границу не нарушает — LLM получает
только агрегированные числа, посчитанные детерминированно в
src/lib/review-stats.ts. В подсказке прямо запрещено выдумывать pKnown,
имена и темы. Под раскрываемым блоком «Исходные числа» виден тот же JSON,
что ушёл в модель — можно сверить факт за фактом.
Что под капотом
Заголовок раздела «Что под капотом»[виджет DailyReviewPanel] │ POST /api/daily-review { audience, snapshotKey, focusUserId? } ▼[Pages Function functions/api/daily-review.ts] 1. валидирует payload 2. FileSnapshotLoader → student_skill_state-совместимый JSON 3. cohortAggregates / studentAggregates (медианы, ZPD-разбивка) 4. system + user → Anthropic Messages API (prompt caching) 5. парсит JSON-ответ модели 6. возвращает { markdown, actionItems, rawNumbers, usage }Снимок сейчас читается из src/data/snapshots/demo-cohort.json (сгенерирован
скриптом scripts/seed-demo-snapshot.mjs поверх data/matx-define). Когда
companion MATx даст HTTP-эндпойнт student_skill_state, в Pages Function
меняется одна строка на HttpSnapshotLoader — формат идентичен схеме PR-1
(user_id, competency_id, pKnown, attempts, last_updated).
Модель и стоимость
Заголовок раздела «Модель и стоимость»По умолчанию claude-haiku-4-5-20251001 — короткий обзор по таблице чисел,
длинного reasoning не нужно. Системный блок помечен cache_control: ephemeral,
так что повторные нажатия в течение 5 минут читают его из кэша. Триггер только
ручной — ни cron, ни автоматических вызовов.
Прод-настройка
Заголовок раздела «Прод-настройка»В Cloudflare Pages → Settings → Environment variables добавить
ANTHROPIC_API_KEY (Encrypted). Локально: cp study-guide/.dev.vars.example study-guide/.dev.vars, вписать ключ, и npx wrangler pages dev dist.