D06 — Модель данных (платформонезависимая)¶
Домен: D06 — УМД и контент · Статус: draft (черновик для ревью). Что моделируем: норма-ось академического контура — образовательную программу как комплект-манифест и её компоненты. «Кого/сколько учим» (Набор, контингент) — это D05; «что произошло» (ведомости, обязательства) — D04. Здесь только «чему и как». Версионность: норма версионируется только вперёд и только по изменению (не по календарю). Год набора — это привязка когорты к версии (живёт в D05), а не сама версия. Нормативка: ссылки на ФЗ-273 даны для ориентира и подлежат сверке человеком (см.
CLAUDE.md).
1. Сущности¶
1.1 ОПОП (манифест)¶
Образовательная программа как корень-комплект: собственного содержания почти не несёт, задаёт идентичность и держит ссылки на версии компонентов (ФЗ-273 ст. 2 — «комплекс, представленный в виде учебного плана, …»). Применимость: [ВУЗ, СПО].
| Атрибут | Тип | Описание |
|---|---|---|
| id | UUID | Внутренний идентификатор |
| напр_спец | ссылка | Направление/специальность (в границах лицензии, D02) |
| profil | string? | Профиль / направленность — различитель ОПОП внутри направления |
| forma_obucheniya | enum | очная / очно-заочная / заочная (допустимый набор задаёт ФГОС, ст. 17) |
| uroven | enum | СПО / бакалавриат / специалитет / магистратура / … |
| fgos_id | ссылка | ФГОС-основание (standards/fgos) |
| kvalifikaciya | string | Присваиваемая квалификация (производна от ФГОС) |
| status | enum | draft / действует / закрыта-для-набора |
| tekushchaya_versiya_id | ссылка | Текущая версия-манифест |
Вариант для ДПО. Дополнительная профессиональная программа (ДПП) — сестринская сущность того же типа, но норма-основание у неё не ФГОС, а профстандарт/квалтребования (ст. 76; для профпереподготовки с 01.03.2026 — также условия и результаты ФГОС СПО/ВО). Применимость
[ДПО]. Моделируется отдельной карточкой на следующем шаге.
1.2 Версия ОПОП¶
Сам манифест: неизменный после утверждения снимок ссылок на версии компонентов. Новая версия рождается изменением любого компонента.
| Атрибут | Тип | Описание |
|---|---|---|
| id | UUID | Идентификатор версии |
| opop_id | ссылка | Родительская ОПОП |
| nomer | string | Номер версии (только возрастает) |
| deystvuet_s | date | Начало действия |
| osnovanie | string | Что вызвало версию (новый ФГОС, изменение РПД, приказ) |
| sostav | список ссылок | Закреплённые версии компонентов (учебный план, РПД, ФОС, …) |
| utverzhdenie_id | ссылка? | Документ утверждения (событие документооборота ≠ логическая версия) |
1.3 Учебный план¶
Структурный компонент: перечень, трудоёмкость, последовательность, периоды, формы промежуточной аттестации (ст. 2).
| Атрибут | Тип | Описание |
|---|---|---|
| id | UUID | Идентификатор |
| versiya | string | Версия плана |
| deystvuet_s | date | Начало действия |
| obyom_ze | number | Общий объём (з.е./часы), сверяется с ФГОС |
| dolya_variativnoy | number | Доля части, формируемой участниками |
1.4 Строка учебного плана¶
Дискретная единица плана — конкретная дисциплина/модуль/практика в конкретном периоде.
| Атрибут | Тип | Описание |
|---|---|---|
| id | UUID | Идентификатор |
| plan_id | ссылка | Учебный план |
| disciplina_id | ссылка | Дисциплина/модуль/практика |
| period | int | Семестр/курс размещения |
| trudoyomkost_ze | number | Вес строки |
| chast | enum | обязательная / формируемая участниками |
| promezhutochnaya_forma_id | ссылка | Форма контроля (§1.11) уровня программы: экзамен / зачёт / курсовая / ГИА (промежуточная аттестация; порождает запланированное событие в УП, §1.12) |
1.5 Дисциплина / модуль / практика¶
Каталожная единица содержания. Переиспользуется строками планов.
| Атрибут | Тип | Описание |
|---|---|---|
| id | UUID | Идентификатор |
| naimenovanie | string | Название |
| tip | enum | дисциплина / МДК / практика / ГИА |
1.6 Рабочая программа дисциплины (РПД)¶
Содержательный компонент нормы: как именно реализуется одна строка учебного плана —
цель, результаты освоения, тематический план, условия реализации. Входит в состав версии
ОПОП наравне с учебным планом и ФОС (ФЗ-273 ст. 2 — образовательная программа представлена
в том числе «рабочими программами … дисциплин (модулей)»; ⚠ подлежит сверке человеком).
Применимость: [ВУЗ, СПО, ДПО, Асп], ДО — partial.
Собственной оси версий не имеет. «Версия РПД» — это участие конкретной её редакции
в Версия ОПОП.sostav; норма версионируется только вперёд и только по изменению (см. 1.2).
Год набора в РПД не хранится — это привязка когорты к версии и живёт в D05.
Ключевой инвариант источника истины. РПД не владеет трудоёмкостью и формами контроля — она их проецирует из «Строки учебного плана» (read-only, пересобирается при смене версии плана). Норма-основание содержания — ФГОС; для ДПП — профстандарт/квалтребования.
| Атрибут | Тип | Описание |
|---|---|---|
| id | UUID | Внутренний идентификатор |
| stroka_up_id | ссылка | Строка учебного плана (дисциплина + период) — носитель идентичности и источник derived-полей |
| versiya_opop_id | ссылка | Версия ОПОП, держащая редакцию РПД в sostav |
| uroven | enum | СПО / бакалавриат / специалитет / магистратура / ординатура / аспирантура / ДПО — задаёт применимый профиль реквизитов |
| fgos_id | ссылка? | ФГОС-основание (standards/fgos); для ДПП — профстандарт/квалтребования |
| razrabotchiki | список ссылок | Разработчики (сотрудники, D07); закрепляются заведующим кафедрой |
| inye_litsa | список | Иные участники разработки/согласования/экспертизы (ручной ввод) |
| tsel | text | Цель программы (ручной ввод / типовой шаблон) |
| zadachi | список | Задачи программы (ручной ввод) |
| status | enum | draft / на_согласовании / утверждена / архив — документооборот, не логическая версия |
Производные поля (read-only, проекция из учебного плана / справочников):
| Поле | Источник |
|---|---|
| trudoyomkost (часы по видам, ЗЕ) | Строка учебного плана · ФГОС (сверка объёма) |
| formy_kontrolya | Строка учебного плана → promezhutochnaya_forma_id → Форма контроля (§1.11) |
| nazvanie_discipliny | Дисциплина (справочник, §1.5) |
Разделы содержания (норма-структура; детальный реестр реквизитов — в машиночитаемом представлении, не дублируется здесь):
| Раздел | Что несёт |
|---|---|
| Общая характеристика | разработчики, наименования, трудоёмкость (derived), формы контроля (derived), цель, задачи, межпредметные связи |
| Результаты освоения | компетенции и индикаторы (derivedFrom ФГОС), результаты обучения, оценочные средства |
| Тематический план | периоды, темы, виды занятий, контактная и самостоятельная работа |
| Карточки тем/занятий | детализация занятия: содержание, формы, ресурсы, контрольные точки |
| Условия реализации | учебно-методическое и материально-техническое обеспечение, литература, практическая подготовка |
Жизненный цикл. draft → согласование → утверждение → (изменение любого реквизита →
новая редакция → новая Версия ОПОП). Архивация — вместе с закрытием версии ОПОП для набора.
Инварианты.
- Одна РПД ↔ одна строка учебного плана внутри версии плана (1:1).
- derived-поля в РПД не редактируются: правка часов / форм контроля — только через учебный план, иначе два источника истины.
- Компетенции не вводятся вручную, а ссылаются на узлы ФГОС (standards/fgos) через дескриптор результата освоения (§1.10).
- РПД не хранит год набора и собственный номер версии (год — D05, версия — Версия ОПОП).
Вариант СПО. Вместо дисциплины — профессиональный модуль / МДК; добавляются комплексные формы контроля (квалификационный экзамен). Профиль —
SPO.Вариант ДПО (ДПП). Норма-основание — не ФГОС, а профстандарт/квалтребования (⚠ ст. 76; для профпереподготовки с 01.03.2026 — также условия и результаты ФГОС СПО/ВО). Появляются поля ЭО и ДОТ. Профиль —
DPO.
Машиночитаемое представление. РПД формализована как JSON-Двойник — единый объект, обслуживающий заполнение, проверку, печать, обратное восстановление и трассировку:
standards/rpd/schema/discipline-program-twin.schema.json— контракт (JSON Schema 2020-12), валидируется в CI наравне сstandards/fgos;standards/rpd/data/discipline-program-twin.full-template.json— эталонный шаблон v0.2.0 (91 реквизит, профили по уровням, привязки печати, правила валидации);- блоки
forms/print/reverseImportДвойника — слой реализации: в стандарте описываются ссылкой, конкретные привязки живут в реализации (1С / веб), а не в норме.
Связи. derivedFrom → ФГОС (standards/fgos); partOf → Версия ОПОП;
references → Строка учебного плана; evidences ← ФОС / оценочные материалы.
Формат адресации — JSON Pointer (RFC 6901), не собственная нотация. Поля
fieldSource.sourcePath (внутри одного документа) и relationLink.from/.to
(между документами, включая внешние — standards/fgos/data/*.json) объявлены
в схеме с format: json-pointer / format: uri-reference. Решение принято по
итогам разбора inbox/2026-07-06-univercon-fgos-rp-konspekt.md («Вопрос 1»,
common-ярус): вместо изобретения собственного языка связей — принят
существующий IETF-стандарт (JSON Pointer) для адресации и паттерн JSON
Reference (file.json#/pointer) для межфайловых ссылок. ⚠ Формат объявлен как
целевой; 91 существующее значение sourcePath в эталонном шаблоне пока в
dot-notation (curriculum.discipline.name), не мигрировано — см. открытый
вопрос в CHANGELOG.
1.7 Фонд оценочных средств (ФОС)¶
Версионируемый компонент: чем измеряется достижение индикаторов.
| Атрибут | Тип | Описание |
|---|---|---|
| id | UUID | Идентификатор |
| rpd_id | ссылка | Рабочая программа |
| versiya | string | Версия |
| sredstva | список | Оценочные средства, привязанные к индикаторам |
1.8 Компетенция¶
Компетенция существует двумя разными способами в зависимости от типа — это не одна сущность с общим хранением, а два разных механизма под одним именем.
УК / ОПК — не хранятся в D06. Компетенция целиком живёт внутри документа ФГОС
(standards/fgos/data/*.json, вложенные массивы competencies.universal[] /
competencies.general_professional[]). D06 её не копирует к себе, а адресует
напрямую естественной двойкой (fgos_id, kod). Проверено на реальных данных:
поле indicators внутри компетенции ФГОС всегда пусто — стандарт задаёт только
компетенцию, индикатор не входит в состав документа (см. §1.9).
ПК — хранимая D06-сущность. Устанавливается ОО на основе профстандарта; существует только в контексте конкретной версии ОПОП (разные версии ОПОП по одному направлению могут устанавливать разные ПК).
| Атрибут | Тип | Описание |
|---|---|---|
| versiya_opop_id | ссылка | Версия ОПОП, устанавливающая эту ПК — часть естественного ключа |
| kod | string | Код (например, «ПК-3») — часть естественного ключа вместе с versiya_opop_id |
| formulirovka | string | Формулировка (авторский текст ОО) |
| proishozhdenie | object | {document_id: profstandart_id, put: [funkciya]} — трудовая функция профстандарта, на основе которой сформулирована ПК |
Естественный ключ ПК — (versiya_opop_id, kod), не синтетический UUID: ПК не
существует вне контекста своей версии ОПОП, отдельный глобальный идентификатор
не нужен.
1.9 Индикатор достижения компетенции¶
Всегда хранимая D06-сущность, независимо от типа компетенции (УК/ОПК/ПК). Проверено на реальных данных ФГОС: индикаторы там не заполняются — это исключительно авторская работа ОО, привязанная к версии ОПОП (см. §1.8).
| Атрибут | Тип | Описание |
|---|---|---|
| versiya_opop_id | ссылка | Версия ОПОП — часть естественного ключа |
| kod | string | Код индикатора (например, «УК-1.1») — часть естественного ключа вместе с versiya_opop_id |
| formulirovka | text | Формулировка (авторский текст ОО) |
| proishozhdenie | object | Дискриминированная ссылка на происхождение требования — см. таблицу ниже |
Естественный ключ индикатора — (versiya_opop_id, kod). Индикатор физически
живёт в версии ОПОП, не внутри документа нормы — синтетический UUID не нужен.
proishozhdenie — дискриминированная ссылка, не часть первичного ключа.
Разводит «где хранится» (версия ОПОП, всегда) от «на основании чего
сформулировано» (документ-источник или локальная ПК):
| tip | Реквизиты | Смысл |
|---|---|---|
фгос |
document_id: fgos_id, put: [kod_kompetencii] |
Раскрывает компетенцию УК/ОПК данного ФГОС напрямую — локальной строки Компетенции нет (см. §1.8) |
пк |
kod_pk (в той же versiya_opop_id) |
Раскрывает локально хранимую ПК (§1.8); происхождение самой ПК от профстандарта уже зафиксировано на строке ПК, здесь не дублируется |
Инвариант: proishozhdenie не участвует в идентичности индикатора — два
индикатора с одинаковым происхождением, но в разных версиях ОПОП, это разные
строки (разный автор, возможно разная формулировка). Происхождение — атрибут,
не ключ.
1.10 Дескриптор результата освоения (РПД)¶
Хранимая сущность внутри РПД (§1.6, раздел содержания «Результаты освоения»): конкретное обещание дисциплины по конкретному пункту нормы — «эта РПД формирует именно это знание/умение/навык ради именно этого индикатора». Автор — разработчик РПД; заполняется вручную, не выводится автоматически.
| Атрибут | Тип | Описание |
|---|---|---|
| id | UUID | Идентификатор |
| rpd_id | ссылка | Рабочая программа (§1.6), которой принадлежит дескриптор |
| indikator_id | ссылка | Индикатор (§1.9, естественный ключ versiya_opop_id + kod) — единственная точка входа в норму |
| tekst | text | Что именно должен знать/уметь/чем владеть обучающийся (ручной ввод) |
| vklad | enum | Тип вклада: формирует / контролирует |
Дескриптор — хаб, норма не адресуется напрямую. Карточка занятия («формируемые компетенции», §1.12) и ФОС/оценочные средства (§1.7) ссылаются на дескриптор РПД, а не на индикатор нормы напрямую. Одна точка входа вместо нескольких при перевыпуске нормы (новая редакция ФГОС не требует правки ссылок во всех местах, где компетенция упоминалась, — только пересвязки дескриптора).
Матрица компетенций — вычисляемый вид, не хранилище. Сводная таблица
«строка учебного плана × компетенция» собирается агрегацией дескрипторов
всех РПД версии ОПОП: rpd_id → stroka_up_id (строка плана) и
indikator_id → proishozhdenie (какая компетенция — либо (fgos_id, kod) из
ФГОС напрямую, либо локальная ПК по kod_pk внутри той же версии ОПОП). Не
хранится отдельной M:N-таблицей. Дублирующего источника истины не возникает:
правда лежит в дескрипторах и индикаторах, матрица — их проекция для чтения
(аккредитация, полнота покрытия).
1.11 Форма контроля (как норма)¶
Форма контроля — элемент нормы (описание того, что должно быть проверено). Это НЕ экземпляр проверки (последний живёт в D04 как факт: конкретная попытка на конкретном событии). Одна норма — много фактов.
Атрибуты (наследуются из academic-concept v1.4 §3.2, форма контроля как единая сущность с осями):
| Атрибут | Тип | Описание |
|---|---|---|
| id | UUID | Идентификатор |
| naimenovanie | string | «Модульный контроль темы 3», «Экзамен по дисциплине D», «Курсовая по D» |
| uroven | enum | занятие / тема / модуль / дисциплина (промежуточная аттестация) / программа (ГИА) |
| sposob_zakrytiya | enum | прямой (запись делается на событии) / агрегированный (вычисляется из нижележащих) |
| rol_v_reytinge | enum | обязательная (для проходного порога) / повышающая (сверх порога) |
| ves | number | Условные баллы |
| tip_ocenki | enum | балл-100 / зачёт-незачёт / оценка-5 / комплексная |
| istochnik | enum | РПД (уровни занятие/тема/модуль/дисциплина) / УП (уровень программы) |
| istochnik_id | ссылка | Ссылка на РПД или строку УП |
Три оси форм контроля (из Дидактикон Блок III):
| Ось | Значения | Смысл |
|---|---|---|
role_in_rating |
required / bonus | обязательная для порога / повышающая |
assignment_mode |
all / per_student | назначается всем зарегистрированным / индивидуально |
time_model |
inline / extended | должна уложиться в событие (с duration_minutes) / переживает событие (с due_at) |
1.12 Запланированное учебное событие¶
Родовое понятие: генератор обязательств в академическом контуре, зафиксированный на уровне плана (не в момент проведения). Термин совпадает с academic-concept v1.4 §4. Виды: занятие / модульный контроль / экзамен / зачёт / курсовая / день практики / ГИА.
Ключевой принцип (из доклада §4): «Расписание не создаёт события — оно их разворачивает». Событие возникает в плане (в РПД или УП), расписание (D14) его переносит в календарь и ресурсы, реализация (D04) фиксирует факт.
| Атрибут | Тип | Описание |
|---|---|---|
| id | UUID | Идентификатор |
| vid | enum | занятие / модульный_контроль / экзамен / зачёт / курсовая / день_практики / ГИА |
| istochnik | enum | РПД (внутри дисциплины) / УП (уровень программы) |
| istochnik_id | ссылка | Ссылка на РПД или строку УП |
| forma_kontrolya_id | ссылка? | Форма контроля (§1.11), которая закрывается этим событием (может отсутствовать для чисто дисциплинарных занятий) |
| paket_id | ссылка? | Пакет занятия (§1.13) — для видов «занятие», «день_практики» и т.п. |
| tema_id | ссылка? | Тема тематического плана (для «занятие», «модульный_контроль») |
| ozhidaemaya_dlitelnost | duration | пара / рабочий день / N часов |
| forma_provedeniya | enum | очно / онлайн / гибрид (атрибут, не отдельный класс — по §4.3 academic-concept) |
Инвариант: одно занятие в расписании (слот D14) может содержать 1..N запланированных учебных событий с разными правилами формирования состава (пример: само занятие + модульный контроль, где второй — не для всех).
Как формируется состав события: пересечение (кто имеет событие в траектории D05) × (кто активен на дату). Формулировка из §4 доклада: «состав каждого учебного события формируется в момент его наступления, из тех, у кого это событие стоит в траектории и чей статус позволяет на нём быть». Черновой состав вычисляется на старте, факт затвердевает через буфер (D04).
1.13 Пакет занятия¶
Пакет — манифест события, «картридж» (аналогия из §7 доклада): знает о дисциплине, теме, виде, форме контроля; не знает группу, дату, преподавателя. Один пакет — много запусков на разных группах, в разных семестрах, у разных преподавателей.
Модель наследует ключевые решения из lesson-package-concept.md (в inbox):
| Атрибут | Тип | Описание |
|---|---|---|
| id | UUID | Стабильный идентификатор |
| versiya | string | Semver методической редакции |
| revisiya | string | Технический sha сборки |
| schema_versiya | string | Версия схемы описания пакета |
| privyazka.opop | ссылка | ОПОП |
| privyazka.plan | ссылка | Учебный план |
| privyazka.rpd | ссылка | РПД / РПП |
| privyazka.tema | ссылка? | Тема тематического плана |
| privyazka.vid_zanyatiya | enum | Лекция / семинар / практика / лаба / … |
| ozidayemaya_dlitelnost | duration | pair / lesson / academic_day (§4 lesson-package) |
| tselii | список | Цели именно этого занятия |
| kompetencii | список ссылок | Осваиваемые индикаторы (стык с §1.9) |
| materials | список | Ссылки на материалы, разбитые по visibility_gate |
| formy_kontrolya | список ссылок | Ссылки на формы контроля (§1.11), возможные внутри события |
| gates | список ссылок | Gate (§1.14) — на входе и выходе события |
| istochniki_dannykh | enum | base (из ИС) / overlay (педагог) / runtime (LMS) — три слоя данных |
Инварианты пакета:
- Стейтлесс. Пакет ничего не помнит между запусками. Прогресс, оценки, факты — в D04.
- Атомарен. Один пакет = одна единица учебного процесса (одно занятие / один экзамен / один день практики).
- Переиспользуем. Пакет применяется на многих запусках, пока РПД актуальна.
- Три источника данных (base + overlay + runtime): база собирается из ИС, overlay — правки педагога, runtime — контекст запуска (группа, дата, преподаватель) подставляется в момент проведения.
1.14 Gate¶
Первоклассная сущность: шлюз, блокирующий проход по занятию до выполнения условия. Тексты gate — из централизованной библиотеки (вуз/кафедра), ad-hoc — исключение. Версионирование обязательно: факт прохождения привязан к версии текста.
| Атрибут | Тип | Описание |
|---|---|---|
| id | UUID | Идентификатор |
| vid | enum | entry-test / consent / briefing / readiness / form / attendance |
| tekst | text | Текст gate (для consent, briefing, readiness) |
| tekst_versiya | string | Версия текста — на неё ссылается факт прохождения |
| razmeshchenie | enum | entry (перед началом) / exit (перед завершением) / interstitial (между смысловыми частями — отложено, не MVP) |
| yur_znachimost | enum? | Обычный / требует бумажной подписи (для инструктажей ТБ) |
Инвариант: пакет стейтлесс. Факт прохождения gate хранится в D04, а не в пакете. При запуске пакет спрашивает D04: «эти gate уже пройдены этим студентом?».
2. Жизненные циклы¶
2.1 Версия ОПОП (только вперёд)¶
- Нет изменений компонентов — новой версии нет; несколько наборов делят одну версию.
- После утверждения версия неизменна; правка = следующая версия.
- Ежегодное переутверждение без изменений — новое
utverzhdenie_id, та же логическая версия.
2.2 Статусы ОПОП¶
«Закрыта-для-набора» не отменяет версию: пристёгнутые когорты доучиваются по своей.
3. Инварианты¶
- ОПОП существует только в границах лицензии (D02): специальность × форма × адрес.
- УК и ОПК импортированы из ФГОС и локально неизменяемы; ПК устанавливает ОО на основе профстандарта.
- Версия ОПОП неизменна после утверждения; изменение компонента → новая версия (только вперёд).
- Объём учебного плана равен объёму ФГОС с учётом долей обязательной и формируемой частей.
- Каждая компетенция покрыта хотя бы одним дескриптором результата освоения (§1.10) в составе РПД версии ОПОП; матрица покрытия — вычисляемый вид над дескрипторами, не отдельное хранилище (полнота покрытия).
- Каждый индикатор обеспечен хотя бы одним оценочным средством в ФОС.
- ОПОП-манифест не содержит собственного учебного текста — только ссылки на версии компонентов.
- Набор (D05) пристёгнут ровно к одной Версии ОПОП.
- План учебных событий формируется в двух местах: в РПД (внутри дисциплины) и в строках УП (уровня программы). Единый план из двух уровней.
- Форма контроля — норма, не факт. Одна форма контроля D06 порождает множество попыток проверки — но каждая попытка живёт в D04 как отдельная запись. Правка факта — только через сторно (D04), но не через изменение формы контроля.
- Пакет — стейтлесс. Пакет знает о норме (дисциплина / тема / форма контроля / материалы / gates), но НЕ знает о runtime-контексте (группа / дата / преподаватель). Все факты запуска — в D04.
- Расписание не создаёт события. События появляются в плане (РПД / УП); D14 только назначает им время, аудиторию, преподавателя. Один слот D14 может покрывать 1..N запланированных событий D06.
- Дескриптор — единственная точка входа в норму. Карточка занятия и ФОС ссылаются на дескриптор РПД (§1.10), не на индикатор ФГОС напрямую. Перевыпуск редакции ФГОС не требует правки ссылок во всех потребителях — только пересвязки дескриптора.
- УК/ОПК не хранятся в D06 — только ПК. Компетенция УК/ОПК адресуется
естественной двойкой
(fgos_id, kod)прямо вstandards/fgos/data/*.json; локальной строки в D06 не заводится. ПК — единственный тип компетенции, хранимый локально (§1.8), потому что устанавливается самой ОО, а не существует в готовом виде во внешнем документе. - Индикатор всегда хранится в ОПОП, никогда — в документе нормы. ФГОС не
задаёт индикаторов (проверено на реальных данных — поле всегда пусто).
Естественный ключ индикатора —
(versiya_opop_id, kod); происхождение (proishozhdenie) — атрибут-дискриминатор, не часть ключа (§1.9).
4. Контракты с другими доменами¶
D06 ↔ D02 (лицензирование)¶
Допустимое множество ОПОП ограничено реестровой записью лицензии (ст. 91): специальность/направление, форма, адрес. ОПОП вне этих границ — невалидна.
D06 ↔ standards/fgos¶
ОПОП ссылается на ФГОС (fgos_id). УК/ОПК и объём/срок импортируются и считаются заданными; локальная правка запрещена (инвариант 2, 4).
D06 → D05 (управление контингентом)¶
Точка сцепки двух осей. Набор несёт ссылку opop_versiya_id (связь «многие-к-одному»: много наборов → одна версия). Пин устанавливается приёмной кампанией по году набора и далее только перецепляется событием траектории (перевод, смена формы, восстановление). Эту ссылку добавляем на шаге 2 в D05.
D06 ↔ D04 (образовательная деятельность)¶
D04 читает структуру пристёгнутой Версии ОПОП как источник обязательств: строки учебного плана → элементы траектории → обязательства. Освоение компетенции (факт D04) сверяется с индикаторами пристёгнутой версии, а не текущей. Потребление — снимком, по паттерну дома.
Форма контроля — норма vs факт. D06 владеет нормой (§1.11): «должен быть модульный контроль темы 3, вес 30, порог 60%». D04 владеет фактом: конкретная попытка на конкретном событии с оценкой. Одна норма D06 порождает множество фактов D04.
D06 → D14 (расписание)¶
D14 разворачивает план запланированных событий D06 на сетку ресурсов (аудитории, преподаватели, потоки). Контракт по докладу §4: «Расписание не создаёт события — оно их разворачивает».
Что передаётся: - Список запланированных учебных событий (§1.12) на период - Их привязки (дисциплина / тема / вид / форма контроля / пакет) - Правила формирования состава (общее правило — «кто имеет это событие в траектории»)
Что НЕ передаётся: - Материалы, формы контроля, gates — их D14 не касается; они читаются D04 напрямую из пакета при проведении
Слот расписания D14 — временной интервал + ресурсы — покрывает 1..N запланированных событий D06. Пример: слот «10:30–12:00 ауд. 301 гр. БИ-25-1 преп. Иванов» может содержать событие «занятие № 14 по D» + событие «модульный контроль темы 3» (у второго — свой состав, часть студентов уже перезачла).
D06 → D05 (траектория)¶
D05 читает план учебных событий D06 (РПД + УП) для формирования траектории обучающегося: развёртка УП с учётом его выборов и перезачётов. Траектория знает, какие события предстоят этому обучающемуся.
Состав события формируется как пересечение (траектория обучающегося содержит это событие) × (статус контингента активен на дату).
5. ERD (mermaid)¶
erDiagram
OPOP ||--o{ OPOP_Version : "версионируется"
OPOP }o--|| FGOS : "основан на"
OPOP_Version ||--|| StudyPlan : "пинит версию"
OPOP_Version ||--o{ Competency : "пинит ПК (устанавливает ОО)"
StudyPlan ||--o{ StudyPlanLine : "состоит из"
StudyPlanLine }o--|| Discipline : "ссылается на"
StudyPlanLine }o--o| FormaKontrolya : "промежуточная аттестация"
Discipline ||--o{ WorkProgram : "имеет"
WorkProgram ||--o{ AssessmentFund : "обеспечен"
OPOP_Version ||--o{ Indicator : "пинит индикаторы (авторская работа ОО)"
Indicator }o--o| Competency : "раскрывает ПК (если основание — профстандарт)"
WorkProgram ||--o{ Descriptor : "формулирует результаты освоения"
Descriptor }o--|| Indicator : "единственная точка входа в норму"
WorkProgram ||--o{ PlannedEvent : "планирует события внутри дисциплины"
StudyPlanLine ||--o{ PlannedEvent : "порождает события уровня программы"
PlannedEvent }o--o| FormaKontrolya : "закрывает форму"
PlannedEvent }o--o| Package : "оснащено пакетом"
Package ||--o{ FormaKontrolya : "содержит формы контроля"
Package ||--o{ Gate : "имеет шлюзы"
PlannedEvent {
enum vid "занятие|модульный_контроль|экзамен|зачёт|курсовая|день_практики|ГИА"
enum istochnik "РПД|УП"
duration ozhidaemaya_dlitelnost
enum forma_provedeniya "очно|онлайн|гибрид"
}
Descriptor {
ref rpd_id
ref indikator_id "единственная ссылка на норму"
text tekst "что должен знать/уметь/чем владеть"
enum vklad "формирует|контролирует"
}
Competency {
ref versiya_opop_id "часть естественного ключа — только ПК"
string kod "часть естественного ключа"
string formulirovka
object proishozhdenie "профстандарт: document_id, put=[funkciya]"
}
Indicator {
ref versiya_opop_id "часть естественного ключа"
string kod "часть естественного ключа"
text formulirovka
object proishozhdenie "discriminator: фгос|пк, document_id/kod_pk, put"
}
FormaKontrolya {
string naimenovanie
enum uroven "занятие|тема|модуль|дисциплина|программа"
enum sposob_zakrytiya "прямой|агрегированный"
enum rol_v_reytinge "обязательная|повышающая"
number ves
}
Package {
string versiya
string revisiya
string schema_versiya
duration ozidayemaya_dlitelnost
}
Gate {
enum vid "entry-test|consent|briefing|readiness|form|attendance"
string tekst_versiya "версия текста"
enum razmeshchenie "entry|exit"
}
Внешняя сцепка (за пределами D06): -
D05.Набор }o--|| OPOP_Version : "пин по году набора"-D14.Слот }o--o{ PlannedEvent : "разворачивает 1..N событий на слот"-D05.Траектория }o--o{ PlannedEvent : "включает события для обучающегося"-D04.УчебноеСобытие(факт) }o--|| PlannedEvent : "реализация плана"-Indicator.proishozhdenie }o--|| standards/fgos.Competency : "адресуется двойкой (fgos_id, kod), если основание — ФГОС; локальной строки Компетенции для УК/ОПК в D06 нет"Матрица компетенций не показана как сущность ERD — это вычисляемый вид (
StudyPlanLine × Competency, агрегация черезWorkProgram → Descriptor → Indicator → Competency), а не хранимая таблица.