Перейти к основному содержимому

Модель данных

Зачем нужно

Документ собирает каноническую модель task-bank: задачи, версии, условия, решения, подсказки, таксономия, подборки, варианты, usage, low-level check attempts, checking и evidence.

Правила модели

  • problem задаёт стабильную идентичность задачи.
  • problem_version задаёт воспроизводимое содержимое, которое видел ученик.
  • Published version не редактируется.
  • Answer schema, key, solution и rubric версионируются вместе с problem version.
  • Usage хранит snapshot правил использования, чтобы соседний домен не зависел от будущих изменений.
  • Grouped export хранится в content_export_snapshot, если во внешний домен передаётся set, activity template или program template.
  • Attempt и result всегда ссылаются на конкретную version.
  • Raw answer не публикуется в событиях и не нужен для внешней аналитики.
  • Activity/program templates не содержат roster, enrollment, schedule, attendance или business attempts.
  • Public catalog работает через public-safe projection and publication profile, а не через отдельную базу задач.

Subject and publication

subject

First-class ссылка на предметную область. Канонический справочник subject принадлежит platform reference layer; task-bank хранит subject_key and local validation/projection settings, необходимые для задач, taxonomy and checking.

ПолеНазначение
keyplatform subject key: mathematics, physics, informatics, etc.
titleчеловекочитаемое название
statusactive, hidden, archived
default_localeязык по умолчанию
metadatasubject-specific настройки

Инварианты:

  • problem.subject_key обязателен и ссылается на platform reference data;
  • taxonomy для тем и источников subject-aware;
  • answer schema и checking rules должны поддерживать subject-specific validators.

problem_publication_profile

Профиль публичной пригодности задачи для каталога.

ПолеНазначение
problem_idзадача
public_statusdraft, candidate, ready, published, hidden, embargoed
public_after_dateотложенная публикация
canonical_public_url/tasks/<taskId>
primary_topic_idосновная тема для breadcrumbs and SEO
public_solution_policyshow, show_after_attempt, show_after_date, hide, teacher_only
license_statusallowed, restricted, unknown, forbidden
seo_title_overrideнеобязательное переопределение
seo_description_overrideнеобязательное переопределение
quality_scoreпригодность для каталога

Инварианты:

  • public task имеет ровно один primary topic;
  • canonical URL задачи не зависит от topic/source path;
  • public projection не раскрывает answer key без explicit policy.

Problem core

problem

Каноническая задача.

ПолеНазначение
codeстабильный человекочитаемый код
subject_keyпредмет
statusdraft, review, published, archived, retired
default_difficultyбазовый уровень
source_refисточник или миграция

problem_version

Версия задачи.

ПолеНазначение
problem_idзадача
versionномер
statusdraft, review, published, retired
statementусловие
answer_schemaформат ответа
metadataсложность, время, ограничения
visibilityправила показа решения/подсказок

problem_asset

Медиа и вложения: изображение, PDF, интерактив, исходный файл, diagram.

problem_solution

Эталонное решение.

Типы:

  • short_answer;
  • full_solution;
  • step_by_step;
  • teacher_notes;
  • rubric_explanation.

problem_hint

Подсказка с уровнем раскрытия и visibility rule.

Answer model

answer_schema

Формат ответа:

  • exact value;
  • numeric with tolerance;
  • multiple choice;
  • multiple select;
  • text normalized;
  • expression;
  • unit value;
  • file upload;
  • proof/free text;
  • composite answer.
  • manual review required.

Для физики и будущих предметов numeric_with_tolerance, unit_value, composite_answer, free_text, proof и manual_review_required являются first-class cases, а не исключениями поверх математического short answer.

answer_key

Эталонный ответ или набор допустимых ответов.

checking_rule

Правило проверки: deterministic, manual, hybrid, external checker.

scoring_rule

Баллы, partial credit, penalties, hint penalty, attempt limits.

rubric

Критерии ручной проверки.

Taxonomy

taxonomy_node

Справочник темы, навыка, типа, источника, уровня или класса. Узлы могут быть subject-specific.

Связь задачи с taxonomy node и весом.

Для published/public задачи нужен один primary topic. Secondary topics разрешены, но публичный UI может показывать их collapsed. Source hierarchy может храниться как taxonomy_node(type='source') с parent path или позднее выделиться в отдельный source_node.

Problem relations

problem_relation

Единая модель методических и редакторских связей между задачами.

TypeСемантикаНаправленность
duplicateфактически та же задача или дубль записиsymmetric
analogта же задача с непринципиальными изменениями: числа, имена, декорацииsymmetric
parameterized_variantвариант из общей параметрической схемыsymmetric or generated_from
set_variantA/B вариант в рамках набора или тураcontext-bound
similarпохожая задача для рекомендаций, не editorial identitysymmetric, often generated
prerequisiteA полезно решить до Bdirected
same_methodрешается тем же методомsymmetric
ПолеНазначение
from_problem_idисходная задача
to_problem_idсвязанная задача
relation_typeтип связи
statussuggested, confirmed, rejected, hidden
weightсила связи
created_by_user_idавтор
reviewed_by_user_idмодератор
metadataобоснование, метод, источник

Инварианты:

  • no self-link;
  • prerequisite directed and acyclic;
  • generated similar не становится analog без editorial confirmation;
  • variant не используется как общий термин для duplicate/analog/similar/prerequisite.

Sets, variants, usage

problem_set

Подборка задач.

Purpose: homework, lesson, competition, diagnostic, training, manual.

problem_set является простой подборкой или collection. Он не должен подменять полноценный сценарий занятия (activity_template) или программу (program_template).

Access policy may reference identity organization context:

  • identity_organization_id;
  • organization_team_id;
  • organization_permission_grant;
  • identity_user_id для автора или персонального доступа.

Ownership rule: problem_set / collection belongs to task-bank. organization, organization_team, membership and grants belong to identity.

problem_set_item

Позиция задачи в подборке с version policy.

problem_variant

Параметризованный вариант задачи или вариант комплекта: A/B, класс, параллель, тур. Редакционные связи duplicate, analog, similar, prerequisite живут в problem_relation, а не смешиваются в problem_variant.

Activity templates

activity_template

Шаблон задачной активности.

Примеры:

  • lesson;
  • circle lesson;
  • homework;
  • trainer;
  • diagnostic;
  • competition round design;
  • review session;
  • intensive session.
ПолеНазначение
subject_keyпредмет
titleназвание
activity_typelesson, homework, trainer, diagnostic, competition_round, review, intensive
statusdraft, review, approved, published, archived, retired
age_groupклассы/возраст
difficulty_rangeдиапазон сложности
duration_minutesрекомендуемая длительность
primary_topic_idосновная тема
objectiveметодическая цель
teacher_notesзаметки преподавателю
student_introвводный текст ученику
visibilityprivate, organization, public
owner_user_idавтор
identity_organization_idорганизация-владелец, если есть
versionверсия шаблона

Инварианты:

  • activity template не содержит LMS group, roster, schedule, attendance или assignment;
  • published template immutable или versioned;
  • export во внешний домен идёт через content_export_snapshot.

activity_template_section

Блок внутри активности.

Section roles:

  • warmup;
  • theory_bridge;
  • main;
  • practice;
  • homework;
  • challenge;
  • reserve;
  • reflection;
  • diagnostic.
ПолеНазначение
activity_template_idшаблон
titleназвание блока
section_roleроль блока
orderпорядок
duration_minutesрекомендуемое время
teacher_notesкомментарии преподавателю
student_instructionsинструкции ученику

activity_template_item

Элемент активности, чаще всего problem version.

ПолеНазначение
activity_template_idшаблон
section_idблок
problem_idзадача
problem_version_idversion lock или null при version policy
problem_set_item_idесли элемент пришёл из подборки
orderпорядок
rolemain, warmup, reserve, homework, challenge, diagnostic, example
requiredобязательный или optional
recommended_time_minutesвремя
recommended_pointsбаллы
checking_modeauto, manual, hybrid, none
solution_visibility_policyкогда показывать решение
hint_policyправила подсказок
teacher_commentкомментарий преподавателю
student_commentкомментарий ученику

Program templates

program_template

Программа, трек или курсоподобная структура из активностей.

Примеры:

  • “Олимпиадная математика 3–4 класс, годовая программа”;
  • “Физика 7 класс, стартовый интенсив”;
  • “Подготовка к турниру, 12 занятий”;
  • “32 занятия первого трека и 32 занятия второго трека”.
ПолеНазначение
subject_keyпредмет
titleназвание
program_typecircle, course_content, intensive, competition_prep, trainer_path
statusdraft, review, approved, published, archived, retired
age_groupклассы/возраст
duration_unitsколичество занятий/модулей
objectiveцель
visibilityprivate, organization, public
owner_user_idавтор
identity_organization_idорганизация-владелец
versionверсия

Инвариант: program template не содержит enrollment, schedule, teacher assignment или course progress.

program_track

Траектория внутри программы: базовый, продвинутый, трек 1, трек 2.

Связь program/track с activity templates.

ПолеНазначение
program_template_idпрограмма
program_track_idтрек
activity_template_idактивность
orderномер занятия
module_labelмодуль
requiredобязательное или optional
replacement_group_idгруппа заменяемых активностей
prerequisite_activity_idprerequisite activity

Export snapshots

content_export_snapshot

Зафиксированная передача problem_set, activity_template или program_template во внешний домен.

ПолеНазначение
source_typeproblem_set, activity_template, program_template
source_idid исходного объекта
source_versionверсия исходного объекта
target_domainlms, competitions, storefront, management, manual
target_typelesson, homework, training, tour, public_catalog, diagnostic
target_idвнешний id, если уже есть
statusdraft, exported, locked, active, retired, failed
exported_by_user_idкто экспортировал
locked_atмомент фиксации
payload_hashконтроль целостности
payloadimmutable content payload или secure refs
metadatatarget-specific details

Snapshot фиксирует:

  • problem ids and problem version ids;
  • order, roles and sections;
  • answer schema references;
  • scoring snapshot;
  • visibility policy snapshot;
  • solution/hint policy snapshot;
  • teacher/student comments, если разрешены;
  • source lineage.

Инварианты:

  • locked snapshot immutable;
  • external domains не зависят от mutable draft;
  • snapshot не раскрывает answer key потребителям без соответствующего scope/policy.

problem_usage

Явная связь task-bank с внешним контекстом.

ПолеНазначение
problem_version_idкакая версия используется
context_domainlms, competitions, management, storefront, manual
context_typelesson, homework, tour, training
context_idвнешний id
statusdraft, active, locked, suspended, archived
scoring_rule_snapshotправила на момент usage
visibility_policyкогда показывать решения и результаты

problem_usage остаётся per-problem связью. Для grouped export подборки, activity template или program template используется content_export_snapshot, который может создавать или ссылаться на набор problem_usage records.

Attempts and checking

problem_attempt

Low-level попытка проверки конкретной задачи. Она не заменяет lms_activity_attempt, learning_training_attempt, competition_submission или competition_result.

ПолеНазначение
problem_usage_idконтекст
problem_version_idверсия
identity_user_idученик
statusstarted, submitted, checking, checked, cancelled, void
answerraw answer
submitted_atвремя отправки

answer_check

Результат проверки.

ПолеНазначение
attempt_idпопытка
methodauto, manual, hybrid, external
statuspending, checked, needs_manual_review, failed, overridden
is_correcttrue/false/null
scoreбалл
max_scoreмаксимум
feedbackбезопасный feedback
checked_by_user_idпроверяющий

manual_review

Очередь и решение ручной проверки.

Evidence

problem_evidence

Нормализованный низкоуровневый signal:

  • attempted;
  • solved;
  • partially solved;
  • failed;
  • solved with hint;
  • needs review;
  • repeated difficulty.

Evidence содержит subject/topic/skill links, но не делает вывод mastery.

Audit

task_bank_audit_log

Аудит публикации, изменения answer key, visibility, manual override, import/export и доступа к solution.