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

Карта владения

Зачем нужно

Документ фиксирует владельца каждой канонической сущности экосистемы. Один владелец — один источник истины. Копия данных в другом сервисе не делает его владельцем.

Правила владения

  • У каждой сущности ровно один владелец среди 7 доменов или platform-слой.
  • Read-model и интеграционные снапшоты не являются источником истины.
  • Изменение владельца оформляется через ADR в decisions/.
  • Владелец сущности владеет также её жизненным циклом, статусной моделью и API.

Platform-слой (общеплатформенные данные)

СущностьНазначение
subjectканоническая образовательная область
levelуровень сложности
formatспособ доставки обучения
grade_rangeвозрастной/школьный диапазон
system_settingглобальные настройки
pages_config, navigation_menuконфигурация платформенного фронтенда
translationsi18n-ресурсы
feature_flagфлаги релизов
notification_rule, notification, notification_templateобщеплатформенные уведомления
plugin, plugin_settingregistry и настройки platform plugins

Подробности: platform/reference-data, platform/topology.

identity

Сущность
user, user_profile, user_email, user_phone, user_field_definition, user_field_value
educator_profile
user_credentials, user_auth_methods, auth_flow_session, verification_code
user_session, refresh_token, saved_account, device_binding
role, permission, user_role_assignment
family_group, user_family_group, student_profile, student_service_settings (post-MVP), delegated_session, child_device_authorization
country, region, organization_reference
organization, organization_role, organization_membership, organization_invitation
organization_ownership_claim, organization_ownership_transfer, organization_merge
organization_team, organization_team_membership, organization_permission_grant, organization_student
oauth_client, oauth_authorization_code, oauth_refresh_token, oauth_consent
actor_context
audit_log (security events)

Identity владеет organization как access/context layer: справочник, рабочая организация, членство, owner/admin/member roles, команды, ученики организации, заявки, transfers, grants и ручная склейка. Соседние домены могут хранить только ссылки, snapshots и product-specific контекст.

educator_profile — принадлежащая identity анкета и trust profile пользователя. Он не является ролью, assignment или источником прав.

storefront

Сущность
storefront_page, storefront_block, storefront_page_version
storefront_form, storefront_form_submission
storefront_catalog_item, storefront_collection
storefront_public_profile, storefront_profile_role
storefront_review, storefront_achievement, storefront_fact
storefront_page_version.seo, storefront_redirect

Storefront не владеет: продуктами, ценами, преподавателями как сотрудниками, дорожной картой как канонической моделью, прогрессом, отзывами как авторскими сущностями (отзыв принадлежит автору и хранится с consent).

Канонические имена storefront берутся из storefront data-model. Старые имена landing_page, catalog_view, public_profile, public_team, fact, public_roadmap_view, seo_metadata, redirect_rule, lead_form_submission допустимы только как UI aliases, не как ownership/code names.

crm

Сущность
crm_account, crm_person_link, crm_contact
crm_lead, crm_deal, crm_interaction, crm_ticket
product, product_type, product_run, price_plan
crm_order, crm_invoice, crm_payment, crm_refund, crm_balance_entry
crm_entitlement, crm_entitlement_consumption_log
crm_teacher_rate, crm_payable_activity, crm_payroll_period, crm_payroll_item, crm_teacher_payout
crm_adjustment, crm_note, crm_sync_log
crm_audit_log

CRM владеет коммерческой и финансовой стороной. Право доступа — это crm_entitlement, его потребление — crm_entitlement_consumption_log. Непрефиксные entitlement и entitlement_consumption_log допустимы только как короткие термины в тексте, не как имена таблиц/API.

lms

Сущность
lms_course, lms_course_version, lms_node, lms_content_block
lms_activity, lms_homework, lms_submission, lms_feedback
lms_enrollment, lms_teacher_assignment
lms_progress_snapshot, lms_activity_attempt, learning_evidence
lms_workbook, lms_project
lms_chat_thread, lms_chat_message
lms_onboarding_flow, lms_onboarding_step
learning_workspace, learning_group, learning_group_participant
roadmap_program, roadmap_module, roadmap_topic, topic_pathway, mini_group_track
topic_progress, topic_completion, topic_enrichment
group, session, attendance, schedule_rule, room
session_topic_link, session_lesson_link, session_change, makeup_assignment
xp, xp_event, badge, badge_award, streak
lms_booking_slot, lms_calendar_event

LMS владеет: учебной частью занятия (attendance, evidence), дорожной картой как канонической моделью, геймификацией и Learning Workspace как рабочим слоем преподавателя. CRM владеет финансовой стороной (списание crm_entitlement_consumption_log).

task-bank

Сущность
problem, problem_version, problem_translation
problem_set, problem_variant, problem_relation
problem_publication_profile
activity_template, activity_template_section, activity_template_item
program_template, program_track, program_activity_link
content_export_snapshot
taxonomy_node, problem_taxonomy_link
problem_solution, problem_hint
answer_schema, answer_key, checking_rule, scoring_rule, rubric
problem_usage
problem_attempt, answer_check, manual_review, problem_evidence

Task-bank владеет содержанием задач, версиями, подборками, методическими activity/program templates, public eligibility, relations, export snapshots и low-level check/content artifacts. LMS и competitions attempts/results не становятся task-bank-owned; использование задач во внешних сценариях моделируется через problem_usage, а grouped export через content_export_snapshot. Task-bank может использовать organization_id, organization_team_id и organization permission grants для доступа к подборкам, но не владеет организациями, командами и членством.

competitions

Сущность
competition_event, competition_season, competition_tour, competition_track
competition_venue, competition_organization
competition_registration, competition_participant, competition_group
competition_access_claim
competition_tour_activity_binding, competition_tour_task_structure, competition_tour_task_item
competition_submission refs/status, competition_check, competition_score, competition_result
competition_publication, competition_award_document
external_teacher_profile как projection/access record, не canonical educator profile

Competitions используют identity, task-bank, crm, lms, но не дублируют их сущности. Competitions владеет competition_participant, competition_registration, activity binding refs, submission refs/status, score snapshots и результатами. Runtime attempts/responses/files/checking живут в LMS activity runtime или temporary adapter. organization_student остаётся identity-owned external ref; олимпиадное участие не переносит владение учеником организации в competitions. Продуктовые teacher/venue permissions в competitions не являются глобальной ролью teacher и не заменяют Learning Workspace.

management

Сущность
management_metric, management_metric_value, management_data_source
management_dashboard, management_dashboard_widget, management_saved_view
management_alert, management_alert_rule
management_plan, management_plan_target, management_plan_fact
management_task, management_task_comment, management_task_history, management_task_template
goal_profile, goal, goal_milestone, goal_owner, goal_subject
goal_criterion, goal_evidence, goal_review
recommendation, recommendation_action
diagnostic_session, diagnostic_result
management_action, management_audit_log

Management владеет агрегатами и управленческими сущностями, но не подменяет первичные доменные данные.

Сущности, у которых владелец явно не первый кандидат

СущностьВладелецПочему
attendancelmsфакт учебного присутствия; финансовая часть отдельно
entitlementcrmэто право доступа, выданное по коммерческой логике
crm_entitlement_consumption_logcrmэто факт списания, инициированный lms через событие
productcrmпродукт как коммерческая единица; lms-курс — отдельная сущность
roadmap_topiclmsдорожная карта — учебная модель
goalmanagementцели семьи и ученика — управленческая аналитика
recommendationmanagementрекомендации — вывод аналитики
xp, badge, streaklmsгеймификация связана с учебной активностью
storefront_reviewstorefrontвитринная публикация отзыва с consent автора; не владеет авторским высказыванием вне publication lifecycle
educator_profileidentityанкета и доверие преподавателя не являются преподавательскими правами
learning_group_participantlmsрабочий ученик преподавателя не обязан быть официальным organization_student

Запреты

  • Не назначать двух владельцев одной сущности.
  • Не считать копию в read-model источником истины.
  • Не приравнивать поле в чужой таблице (например, lms_enrollment.entitlement_id) к владению этой сущностью.
  • Не переносить владение без ADR.

Связанные документы