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

Entity / Aggregate: <EntityName>

Дом полей сущности. Все проекции (модели ответа, event payload, ClickHouse-факты, search-документы, data-lineage) ссылаются сюда и перечисляют только дельту, а не переописывают поля.

Назначение

Бизнес-смысл сущности, owning-контекст, aggregate boundary, source of truth vs replica.

Классификация

ПолеЗначение
Контекст<context>
KindAggregateRoot / Entity / ValueObject-owned / Replica / Snapshot
Source of truth<этот контекст / owner-контекст>
Таблица<schema.table_name>
Tenant isolationTenantId

Поля

ПолеТипОбязательностьОграничения (PK/FK/index/constraint)ИсточникОписание
IdGuidДаPKgenerated/appУникальный id.
TenantIdGuidДаindexidentity/eventTenant boundary.
Status<StatusEnum>Да/Нетenum (хранится как text)appТекущий статус сущности.
<FieldName><Type>Да/Нет<min/max/enum/FK ref><source><описание>

Value objects

VO (ObjectLocation, GeoLocationValueObject, FullName, <Custom>) документируются как полноценные типизированные модели с явными полями и ограничениями, не как generic string/object.

<ValueObjectName> (owned)

ПолеТипОбязательностьОграниченияКолонка
<FieldName><Type>Да/Нет<...><column>

Модели JSONB (versioned)

Если jsonb не используется — JSONB-модели не используются. Иначе — типизированная модель + ContractVersion.

<TypedJsonbModelName> (jsonb, ContractVersion = <n>)

ПолеТипОбязательностьОграниченияSince version
<FieldName><Type>Да/Нет<bounded/nullable>v1

Связи

СвязьТипКлючDelete behavior
<RelatedEntity>owned/reference/replica<FK>restrict/cascade/soft

Инварианты и переходы состояний

ИнвариантУсловиеКогда проверяетсяОшибка
<InvariantName><business rule><момент/операция><ErrorCode>

Доменные и интеграционные события

СобытиеТипКогдаSnapshot/поля
<Name>Eventдоменное / интеграционное<переход/условие><из каких полей>

Интеграционные события публикуются атомарно со сменой состояния агрегата.

Индексы, хранение, безопасность

АспектЗначение
Индексы<name/type(btree/gin)/columns/unique/where>
Партиционирование / retention<none / by tenant / by date + срок>
Concurrencyоптимистическая блокировка (правка не должна затирать чужую)
Permissions / PII<permission list / masking>
Auditотметки создания/изменения/удаления (кто и когда), soft-delete

Обратные ссылки

Автоссылки: где используется этот документ.

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

  • Проекции ссылаются сюда: model / event-contract / clickhouse-fact / search-document / data-lineage.