Взаимодействия
FLOW-ARCH-REGISTER — Регистрация
- Требования: REQ-IN-001, REQ-IN-002, REQ-NFR-001
- Связи каталога: REL-ACCESS-REGISTER, REL-REGISTER-FLOW, REL-DATA-COMPLAINT, REL-FLOW-AUDIT, REL-DATA-AUDIT
Основная ветка после проверки личности. Внешний канал не входит в синхронный путь подтверждения.
Сценарии: SCN-POS-002, SCN-POS-003, SCN-POS-019
sequenceDiagram
participant CMP_APP_ACCESS as Серверный доступ
participant CMP_APP_REGISTRATION as Регистрация
participant CMP_APP_FLOW as Жалоба и состояние
participant STORE_DATA_MAIN as Операционные данные
participant CMP_APP_AUDIT as Аудит
CMP_APP_ACCESS->>CMP_APP_REGISTRATION: 1. Передать проверенный запрос#59; валидировать до записи
CMP_APP_REGISTRATION->>CMP_APP_FLOW: 2. Начать транзакцию, проверить ключ и вызвать владельца жалобы
CMP_APP_FLOW->>STORE_DATA_MAIN: 3. Сохранить жалобу и ключ#59; конфликтует уникальный индекс
CMP_APP_FLOW->>CMP_APP_AUDIT: 4. Записать эффективное изменение в той же транзакции
CMP_APP_AUDIT->>STORE_DATA_MAIN: 5. Зафиксировать транзакцию#59; вернуть сохранённый результат по стеку вызова
Границы/отказы: Возвраты подразумеваются стеком вызова и не дублируют связи. Ошибка валидации прекращает поток до записи; повтор ключа возвращает прежний результат, конфликт тела определяется REQ-IN-002. Изоляция/индексы проверяются конкурентным тестом; порог производительности остаётся в REQ-NFR-001.
FLOW-ARCH-PUBLISH — Публикация с восстановлением уведомления
- Требования: REQ-ANS-003, REQ-DEL-001, REQ-DEL-002, REQ-ARC-001
- Связи каталога: REL-ACCESS-PUBLISH, REL-PUBLISH-ROUTE, REL-PUBLISH-RESPONSE, REL-DATA-PUBLICATION, REL-PUBLISH-FLOW, REL-DATA-COMPLAINT, REL-PUBLISH-NOTIFY, REL-PUBLISH-AUDIT, REL-DATA-AUDIT, REL-DATA-NOTIFY, REL-NOTIFY-CHANNEL, REL-CHANNEL-PROVIDER
Линейная ветка успешной публикации; фоновый участок начинается после commit. Отказные ветки перечислены ниже.
Сценарии: SCN-POS-008, SCN-POS-013, SCN-ARC-001
sequenceDiagram
participant CMP_APP_ACCESS as Серверный доступ
participant CMP_APP_PUBLICATION as Публикация
participant CMP_APP_ROUTING as Маршрутизация
participant CMP_APP_RESPONSES as Ответы ведомств
participant STORE_DATA_MAIN as Операционные данные
participant CMP_APP_FLOW as Жалоба и состояние
participant CMP_APP_NOTIFY as Уведомления и outbox
participant CMP_APP_AUDIT as Аудит
participant CMP_APP_CHANNEL as Адаптер внешнего канала
participant EXT_SERVICE_NOTIFY as Провайдер уведомлений
CMP_APP_ACCESS->>CMP_APP_PUBLICATION: 1. Подтвердить публикацию
CMP_APP_PUBLICATION->>CMP_APP_ROUTING: 2. В общей транзакции получить актуальный комплект
CMP_APP_PUBLICATION->>CMP_APP_RESPONSES: 3. Проверить согласованные версии#59; защитить от конкурентного изменения
CMP_APP_PUBLICATION->>STORE_DATA_MAIN: 4. Сохранить неизменный итог
CMP_APP_PUBLICATION->>CMP_APP_FLOW: 5. Обновить состояние через владельца жалобы
CMP_APP_FLOW->>STORE_DATA_MAIN: 6. Сохранить новое состояние в той же транзакции
CMP_APP_PUBLICATION->>CMP_APP_NOTIFY: 7. Создать задание через владельца уведомления
CMP_APP_PUBLICATION->>CMP_APP_AUDIT: 8. Записать эффективную публикацию через владельца аудита
CMP_APP_AUDIT->>STORE_DATA_MAIN: 9. Сохранить аудит в той же транзакции
CMP_APP_NOTIFY->>STORE_DATA_MAIN: 10. Сохранить задание#59; координатор фиксирует общую транзакцию
CMP_APP_NOTIFY->>STORE_DATA_MAIN: 11. Фоновый обработчик после commit захватывает сохранённое задание
CMP_APP_NOTIFY->>CMP_APP_CHANNEL: 12. Передать минимальное сообщение
CMP_APP_CHANNEL->>EXT_SERVICE_NOTIFY: 13. Отправить провайдеру
Границы/отказы: Публикация, answered и задание фиксируются вместе. Отказ до commit откатывает все три; после commit задание восстанавливается из БД. Внешний вызов находится вне транзакции. Успех провайдера и потеря квитанции могут привести к повтору уведомления; exactly-once внешней доставки не обещано. Полнота/версии и повтор публикации проверяются исходными SCN, расписание повторов — REQ-DEL-002. Диаграмма не изображает все ветви.
FLOW-ARCH-PROJECTION — Подготовка и чтение агрегатов
- Требования: REQ-ANA-001, REQ-ANA-002, REQ-ANA-003, REQ-ARC-002
- Связи каталога: REL-READ-COMPLAINT, REL-READ-ASSIGNMENT, REL-READ-PUBLICATION, REL-DATA-AGGREGATE, REL-ACCESS-QUERY, REL-READ-AGGREGATE
Построение привилегированным модулем и отдельный аналитический запрос. Время среза задаёт исходная спецификация.
Сценарии: SCN-POS-015, SCN-POS-016, SCN-ARC-002
sequenceDiagram
participant CMP_APP_PROJECTION as Построение проекции
participant STORE_DATA_MAIN as Операционные данные
participant STORE_DATA_AGG as Аналитические агрегаты
participant CMP_APP_ACCESS as Серверный доступ
participant CMP_APP_QUERY as Аналитические запросы
CMP_APP_PROJECTION->>STORE_DATA_MAIN: 1. Прочитать необходимые факты согласованного снимка
CMP_APP_PROJECTION->>STORE_DATA_MAIN: 2. Прочитать число поручений для того же снимка
CMP_APP_PROJECTION->>STORE_DATA_MAIN: 3. Прочитать публикации для того же снимка
CMP_APP_PROJECTION->>STORE_DATA_AGG: 4. Атомарно опубликовать версию разрешённых агрегатов
CMP_APP_ACCESS->>CMP_APP_QUERY: 5. Принять аналитический запрос к выбранной версии
CMP_APP_QUERY->>STORE_DATA_AGG: 6. Читать только опубликованные агрегаты
Границы/отказы: Исходные чтения — один согласованный снимок, не независимые актуальные запросы. Недостроенная версия недоступна запросам; запрос не делает fallback в операционную БД. Формулы, когорты и suppression принадлежат REQ-ANA-*. Политика реальных данных открыта в Q-POS-002; изоляция модулей одного процесса не защищает от компрометации всего backend.