Entity / Aggregate: <EntityName>
Дом полей сущности. Все проекции (модели ответа, event payload, ClickHouse-факты, search-документы,
data-lineage) ссылаются сюда и перечисляют только дельту, а не переописывают поля.
Назначение
Бизнес-смысл сущности, owning-контекст, aggregate boundary, source of truth vs replica.
Классификация
| Поле | Значение |
|---|
| Контекст | <context> |
| Kind | AggregateRoot / Entity / ValueObject-owned / Replica / Snapshot |
| Source of truth | <этот контекст / owner-контекст> |
| Таблица | <schema.table_name> |
| Tenant isolation | TenantId |
Поля
| Поле | Тип | Обязательность | Ограничения (PK/FK/index/constraint) | Источник | Описание |
|---|
Id | Guid | Да | PK | generated/app | Уникальный id. |
TenantId | Guid | Да | index | identity/event | Tenant 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.