Модель данных
Трёхслойная модель ИТ-актива и связанные домены.
Три слоя актива
Asset core
Общие поля: permanent code, name, description, type, current state, criticality,
org unit, completeness, archive flag и attestation dates. Код генерируется из
AssetType.codeMask; при отсутствии mask вводится вручную.
Typed profiles
| Profile | Типы активов | Для чего нужен |
|---|---|---|
ApplicationProfile | Information system | Класс ИС, RTO/RPO, support, data flags, successor |
ComputeProfile | VM, physical server | CPU/RAM, OS, environment, hostname и аппаратные поля |
StorageVolumeProfile | Volume/LUN | Provisioned/used GB, pool, replication и дата измерения |
LicenseProfile | Software license, subscription | Metric, entitled/consumed, срок, vendor и commercial data |
Числовые и структурированные поля находятся в profiles, чтобы отчёты не разбирали произвольный JSONB.
Custom attributes
AttributeDefinition описывает поля типа актива. Значения хранятся в
Asset.attributes JSONB и валидируются динамической Zod-схемой. GIN index
ускоряет JSONB lookup, хотя UI пока не предоставляет отдельные attribute filters.
Метамодель
AssetClass— Applications, Infrastructure, Licenses, Other;AssetType— конкретный тип, class, profile, lifecycle и code mask;Lifecycle/LifecycleState— доступные статусы;DictionaryType/DictionaryValue— все перечисления;RelationType— каталог допустимых направленных связей.
В текущей модели нет transition graph. Lifecycle — только список статусов.
Люди и ответственность
OrgUnit образует иерархию подразделений. Person хранит контакты и может быть
связан с одним login user. AssetRoleAssignment назначает сотрудника на актив с
role, FTE, primary/backup и периодом действия. Завершённые назначения не удаляются.
Производные данные
Не сохраняются отдельно:
- resource aggregation ИС — считается по
PART_OFи Compute profiles; - license compliance — считается из entitled/consumed;
- report datasets — строятся при запросе;
- FTE utilization — сумма активных назначений;
- status распределения — агрегация текущего реестра.
Это уменьшает риск расхождения между паспортом и фактическими связями.

