Каталог архитектурных фактов
- Статус: agreed
Единые определения элементов, связей и владельцев. Таблицы ниже используются точечными проверками ссылок, доступа к данным и нормативных ограничений. Порядок разделов/столбцов и свободные пояснения могут меняться; диаграммы и архитектурную достаточность проверяет агент.
Элементы
| ID | Имя | Тип | Родитель | Ответственность |
|---|---|---|---|---|
| SYS-APP-FEEDBACK | Обратная связь — регион | system | — | Обработка жалоб и публикация итогов в границах текущей версии требований |
| ACT-USER-CITIZEN | Заявитель | actor | — | Подаёт обращение, уточняет и читает свой итог |
| ACT-USER-STAFF | Оператор и ведомства | actor | — | Обрабатывают обращение в соответствии с предметными ролями |
| ACT-USER-ANALYST | Аналитик | actor | — | Читает разрешённые агрегированные отчёты |
| ACT-USER-SUPPORT | Сопровождение | actor | — | Диагностирует технические отказы |
| EXT-SERVICE-IDENTITY | Провайдер идентификации | external | — | Синтетическая идентификация; промышленный контракт открыт в Q-POS-003 |
| EXT-SERVICE-NOTIFY | Провайдер уведомлений | external | — | Принимает технические уведомления; доступ к кабинету остаётся в системе |
| UNIT-APP-WEB | Веб-интерфейс | unit | SYS-APP-FEEDBACK | Кабинет заявителя и рабочие места; серверные права не заменяются видимостью кнопок |
| UNIT-APP-BACKEND | Модульный backend | unit | SYS-APP-FEEDBACK | Один процесс приложения с логическими модулями и фоновыми обработчиками |
| STORE-DATA-MAIN | Операционные данные | store | SYS-APP-FEEDBACK | Транзакционное хранение жалоб, поручений, ответов, публикаций, уведомлений и аудита |
| STORE-DATA-AGG | Аналитические агрегаты | store | SYS-APP-FEEDBACK | Версионированные разрешённые агрегаты без построчного аналитического экспорта |
| CMP-APP-ACCESS | Серверный доступ | module | UNIT-APP-BACKEND | Сессия, авторизация и выбор предметного интерфейса |
| CMP-APP-REGISTRATION | Регистрация | module | UNIT-APP-BACKEND | Валидация, ключ идемпотентности и координация регистрации |
| CMP-APP-FLOW | Жалоба и состояние | module | UNIT-APP-BACKEND | Владелец жалобы, уточнений и переходов её состояния |
| CMP-APP-ROUTING | Маршрутизация | module | UNIT-APP-BACKEND | Владелец поручений, версий назначения и выбора справочника |
| CMP-APP-RESPONSES | Ответы ведомств | module | UNIT-APP-BACKEND | Владелец черновиков и согласованных версий ответов |
| CMP-APP-PUBLICATION | Публикация | module | UNIT-APP-BACKEND | Полнота комплекта и владелец зафиксированной итоговой версии |
| CMP-APP-NOTIFY | Уведомления и outbox | module | UNIT-APP-BACKEND | Владелец сохранённых заданий; восстановление, попытки и технические статусы |
| CMP-APP-CHANNEL | Адаптер внешнего канала | module | UNIT-APP-BACKEND | Минимальное сообщение провайдеру и разбор результата; не владеет таблицей заданий |
| CMP-APP-PROJECTION | Построение проекции | module | UNIT-APP-BACKEND | Привилегированное чтение необходимых операционных фактов и запись агрегатов |
| CMP-APP-QUERY | Аналитические запросы | module | UNIT-APP-BACKEND | Только разрешённые агрегаты и фиксированные измерения |
| CMP-APP-AUDIT | Аудит | module | UNIT-APP-BACKEND | Владелец записей эффективных изменений |
Связи
| ID | От | К | Назначение | Протокол | Контракт | Доступ | Сущность |
|---|---|---|---|---|---|---|---|
| REL-UI-CITIZEN | ACT-USER-CITIZEN | UNIT-APP-WEB | Действия соответствующего рабочего места | HTTPS | — | none | — |
| REL-UI-STAFF | ACT-USER-STAFF | UNIT-APP-WEB | Действия соответствующего рабочего места | HTTPS | — | none | — |
| REL-UI-ANALYST | ACT-USER-ANALYST | UNIT-APP-WEB | Действия соответствующего рабочего места | HTTPS | — | none | — |
| REL-UI-SUPPORT | ACT-USER-SUPPORT | UNIT-APP-WEB | Действия соответствующего рабочего места | HTTPS | — | none | — |
| REL-WEB-API | UNIT-APP-WEB | CMP-APP-ACCESS | Запросы с серверной проверкой сессии и прав | HTTPS | — | none | — |
| REL-ACCESS-IDENTITY | CMP-APP-ACCESS | EXT-SERVICE-IDENTITY | Проверка удостоверения автора | identity adapter | — | none | — |
| REL-ACCESS-REGISTER | CMP-APP-ACCESS | CMP-APP-REGISTRATION | Регистрация после проверки личности | module API | contracts/complaint-submit.schema.json | none | — |
| REL-ACCESS-FLOW | CMP-APP-ACCESS | CMP-APP-FLOW | Уточнение и чтение собственных обращений | module API | — | none | — |
| REL-ACCESS-ROUTE | CMP-APP-ACCESS | CMP-APP-ROUTING | Рабочее место оператора; права и версия | module API | — | none | — |
| REL-ACCESS-RESPOND | CMP-APP-ACCESS | CMP-APP-RESPONSES | Подготовка/согласование ответов ведомства | module API | contracts/agency-response.schema.json | none | — |
| REL-ACCESS-PUBLISH | CMP-APP-ACCESS | CMP-APP-PUBLICATION | Подтверждение публикации ведущим согласующим | module API | — | none | — |
| REL-ACCESS-QUERY | CMP-APP-ACCESS | CMP-APP-QUERY | Разрешённый аналитический запрос | module API | — | none | — |
| REL-ACCESS-SUPPORT | CMP-APP-ACCESS | CMP-APP-NOTIFY | Техническая диагностика и управляемый повтор | module API | — | none | — |
| REL-REGISTER-FLOW | CMP-APP-REGISTRATION | CMP-APP-FLOW | Создание жалобы и сохранение ключа идемпотентности | module API | — | none | — |
| REL-ROUTE-FLOW | CMP-APP-ROUTING | CMP-APP-FLOW | Проверка версии/состояния и переход через владельца жалобы | module API | — | none | — |
| REL-RESPONSE-ROUTE | CMP-APP-RESPONSES | CMP-APP-ROUTING | Проверка актуального поручения | module API | — | none | — |
| REL-PUBLISH-ROUTE | CMP-APP-PUBLICATION | CMP-APP-ROUTING | Получение активного обязательного комплекта | module API | — | none | — |
| REL-PUBLISH-RESPONSE | CMP-APP-PUBLICATION | CMP-APP-RESPONSES | Получение согласованных версий ответов | module API | — | none | — |
| REL-PUBLISH-FLOW | CMP-APP-PUBLICATION | CMP-APP-FLOW | Фиксация answered в общей транзакции | module API | — | none | — |
| REL-PUBLISH-NOTIFY | CMP-APP-PUBLICATION | CMP-APP-NOTIFY | Постановка задания в общей транзакции; внешний канал после commit | module API | — | none | — |
| REL-NOTIFY-CHANNEL | CMP-APP-NOTIFY | CMP-APP-CHANNEL | Попытка доставки и получение технического результата | module API | — | none | — |
| REL-CHANNEL-PROVIDER | CMP-APP-CHANNEL | EXT-SERVICE-NOTIFY | Минимальное уведомление без текста и имени | provider adapter | — | none | — |
| REL-FLOW-AUDIT | CMP-APP-FLOW | CMP-APP-AUDIT | Запись эффективного изменения через владельца аудита | module API | — | none | — |
| REL-ROUTE-AUDIT | CMP-APP-ROUTING | CMP-APP-AUDIT | Запись эффективного изменения через владельца аудита | module API | — | none | — |
| REL-RESPONSE-AUDIT | CMP-APP-RESPONSES | CMP-APP-AUDIT | Запись эффективного изменения через владельца аудита | module API | — | none | — |
| REL-PUBLISH-AUDIT | CMP-APP-PUBLICATION | CMP-APP-AUDIT | Запись эффективного изменения через владельца аудита | module API | — | none | — |
| REL-NOTIFY-AUDIT | CMP-APP-NOTIFY | CMP-APP-AUDIT | Запись эффективного изменения через владельца аудита | module API | — | none | — |
| REL-DATA-COMPLAINT | CMP-APP-FLOW | STORE-DATA-MAIN | Хранение сущности через единственного владельца | SQL | — | read_write | Complaint |
| REL-READ-COMPLAINT | CMP-APP-PROJECTION | STORE-DATA-MAIN | Чтение разрешённых фактов | SQL | — | read | Complaint |
| REL-DATA-ASSIGNMENT | CMP-APP-ROUTING | STORE-DATA-MAIN | Хранение сущности через единственного владельца | SQL | — | read_write | Assignment |
| REL-READ-ASSIGNMENT | CMP-APP-PROJECTION | STORE-DATA-MAIN | Чтение разрешённых фактов | SQL | — | read | Assignment |
| REL-DATA-RESPONSE | CMP-APP-RESPONSES | STORE-DATA-MAIN | Хранение сущности через единственного владельца | SQL | — | read_write | AgencyResponse |
| REL-DATA-PUBLICATION | CMP-APP-PUBLICATION | STORE-DATA-MAIN | Хранение сущности через единственного владельца | SQL | — | read_write | FinalPublication |
| REL-READ-PUBLICATION | CMP-APP-PROJECTION | STORE-DATA-MAIN | Чтение разрешённых фактов | SQL | — | read | FinalPublication |
| REL-DATA-NOTIFY | CMP-APP-NOTIFY | STORE-DATA-MAIN | Хранение сущности через единственного владельца | SQL | — | read_write | Notification |
| REL-DATA-AUDIT | CMP-APP-AUDIT | STORE-DATA-MAIN | Хранение сущности через единственного владельца | SQL | — | read_write | AuditEvent |
| REL-DATA-AGGREGATE | CMP-APP-PROJECTION | STORE-DATA-AGG | Хранение сущности через единственного владельца | SQL | — | read_write | AggregateMetrics |
| REL-READ-AGGREGATE | CMP-APP-QUERY | STORE-DATA-AGG | Чтение разрешённых фактов | SQL | — | read | AggregateMetrics |
Владение данными
| ID | Сущность | Определение | Владелец | Хранилище | Читатели |
|---|---|---|---|---|---|
| OWN-DATA-COMPLAINT | Complaint | docs/models.md | CMP-APP-FLOW | STORE-DATA-MAIN | CMP-APP-PROJECTION |
| OWN-DATA-ASSIGNMENT | Assignment | docs/models.md | CMP-APP-ROUTING | STORE-DATA-MAIN | CMP-APP-PROJECTION |
| OWN-DATA-RESPONSE | AgencyResponse | docs/models.md | CMP-APP-RESPONSES | STORE-DATA-MAIN | — |
| OWN-DATA-PUBLICATION | FinalPublication | docs/models.md | CMP-APP-PUBLICATION | STORE-DATA-MAIN | CMP-APP-PROJECTION |
| OWN-DATA-NOTIFY | Notification | docs/models.md | CMP-APP-NOTIFY | STORE-DATA-MAIN | — |
| OWN-DATA-AUDIT | AuditEvent | docs/models.md | CMP-APP-AUDIT | STORE-DATA-MAIN | — |
| OWN-DATA-AGGREGATE | AggregateMetrics | architecture/concepts.md | CMP-APP-PROJECTION | STORE-DATA-AGG | CMP-APP-QUERY |
Распределение требований
| Требование | Ответственный элемент | Участники |
|---|---|---|
| REQ-ANA-001 | CMP-APP-PROJECTION | CMP-APP-QUERY, STORE-DATA-AGG |
| REQ-ANA-002 | CMP-APP-PROJECTION | CMP-APP-QUERY, STORE-DATA-AGG |
| REQ-ANA-003 | CMP-APP-PROJECTION | CMP-APP-QUERY, STORE-DATA-AGG |
| REQ-ANS-001 | CMP-APP-RESPONSES | CMP-APP-ROUTING, CMP-APP-PUBLICATION, CMP-APP-ACCESS |
| REQ-ANS-002 | CMP-APP-RESPONSES | CMP-APP-ROUTING, CMP-APP-PUBLICATION, CMP-APP-ACCESS |
| REQ-ANS-003 | CMP-APP-RESPONSES | CMP-APP-ROUTING, CMP-APP-PUBLICATION, CMP-APP-ACCESS |
| REQ-DEL-001 | CMP-APP-PUBLICATION | CMP-APP-FLOW, CMP-APP-NOTIFY |
| REQ-DEL-002 | CMP-APP-NOTIFY | CMP-APP-PUBLICATION, CMP-APP-CHANNEL |
| REQ-DEL-003 | CMP-APP-NOTIFY | CMP-APP-PUBLICATION, CMP-APP-CHANNEL |
| REQ-IN-001 | CMP-APP-REGISTRATION | CMP-APP-FLOW, CMP-APP-ACCESS, CMP-APP-AUDIT |
| REQ-IN-002 | CMP-APP-REGISTRATION | CMP-APP-FLOW, CMP-APP-ACCESS, CMP-APP-AUDIT |
| REQ-MOD-001 | CMP-APP-FLOW | CMP-APP-ACCESS, CMP-APP-AUDIT |
| REQ-MOD-002 | CMP-APP-FLOW | CMP-APP-ACCESS, CMP-APP-AUDIT |
| REQ-NFR-001 | CMP-APP-REGISTRATION | CMP-APP-FLOW, STORE-DATA-MAIN, UNIT-APP-WEB |
| REQ-OPS-001 | CMP-APP-NOTIFY | CMP-APP-CHANNEL, CMP-APP-ACCESS |
| REQ-RTE-001 | CMP-APP-ROUTING | CMP-APP-FLOW, CMP-APP-RESPONSES, CMP-APP-AUDIT |
| REQ-RTE-002 | CMP-APP-ROUTING | CMP-APP-FLOW, CMP-APP-RESPONSES, CMP-APP-AUDIT |
| REQ-RTE-003 | CMP-APP-ROUTING | CMP-APP-FLOW, CMP-APP-RESPONSES, CMP-APP-AUDIT |
| REQ-RTE-004 | CMP-APP-ROUTING | CMP-APP-FLOW, CMP-APP-RESPONSES, CMP-APP-AUDIT |
| REQ-SEC-001 | CMP-APP-ACCESS | CMP-APP-FLOW, CMP-APP-QUERY |
| REQ-SEC-002 | CMP-APP-AUDIT | CMP-APP-FLOW, CMP-APP-ROUTING, CMP-APP-PUBLICATION |
| REQ-TIM-001 | CMP-APP-FLOW | CMP-APP-REGISTRATION, CMP-APP-ROUTING, CMP-APP-PROJECTION |
| REQ-ARC-001 | CMP-APP-PUBLICATION | CMP-APP-NOTIFY, CMP-APP-FLOW, STORE-DATA-MAIN |
| REQ-ARC-002 | CMP-APP-QUERY | CMP-APP-PROJECTION, STORE-DATA-AGG, CMP-APP-ACCESS |
| REQ-ARC-003 | SYS-APP-FEEDBACK | UNIT-APP-BACKEND, STORE-DATA-MAIN, STORE-DATA-AGG |
Нормативные ограничения
| Требование | Решение | Элементы | Проверки |
|---|---|---|---|
| REQ-ARC-001 | DEC-ARCH-002 | CMP-APP-PUBLICATION, CMP-APP-NOTIFY, CMP-APP-FLOW, STORE-DATA-MAIN | CHECK-ARC-001-01, CHECK-ARC-001-02 |
| REQ-ARC-002 | DEC-ARCH-003 | CMP-APP-QUERY, CMP-APP-PROJECTION, STORE-DATA-MAIN, STORE-DATA-AGG | CHECK-ARC-002-01, CHECK-ARC-002-02 |
| REQ-ARC-003 | DEC-ARCH-004 | SYS-APP-FEEDBACK, UNIT-APP-BACKEND, STORE-DATA-MAIN, STORE-DATA-AGG | CHECK-ARC-003-01, CHECK-ARC-003-02, CHECK-ARC-003-03, CHECK-ARC-003-04 |
Применение технологического базиса
Продукты, версии и области применения определены только в technology-stack.md. Связи с единицами исполнения показаны в structure.md; размещение — в deployment.md. Инвентаризация среды подтверждает фактический состав, а каталог задаёт ответственность проекта.