architecture Specification
Purpose
Нормативные ограничения принятой архитектуры системы «Обратная связь — регион». Проектные представления находятся в architecture/.
Requirements
Requirement: REQ-ARC-001 — Атомарная фиксация публикации и задания
{
"id": "REQ-ARC-001",
"level": "REQ",
"status": "agreed",
"owner": "architecture-owner",
"parents": [
"HLR-POS-005",
"HLR-POS-008"
],
"sources": [
"DEC-ARCH-002",
"architecture/catalog.md"
],
"questions": [],
"required_aspects": [
"before_commit",
"after_commit"
],
"verification": "test",
"risk": "high"
}
Система MUST атомарно фиксировать публикацию, answered и сохранённое задание уведомления в одной транзакции STORE-DATA-MAIN. Внешний вызов разрешён после commit. До commit остановка не оставляет частичных изменений; после commit задание восстанавливается без повторной публикации. Область действия указана для REQ-ARC-001 в таблице «Нормативные ограничения» архитектурного каталога; изменение транзакционной границы требует пересмотра DEC-ARCH-002.
Scenario: SCN-ARC-001 — Остановка на границе commit
- GIVEN Управляемая остановка процесса до и после фиксации; синтетическая жалоба с полным комплектом
- WHEN Опубликовать итог, остановить процесс в заданной точке и перезапустить
- THEN До commit публикации и задания нет; после commit сохранено одно восстанавливаемое задание
Подробности и данные: acceptance/scenarios/scn-arc-001.json.
Requirement: REQ-ARC-002 — Граница аналитического доступа
{
"id": "REQ-ARC-002",
"level": "REQ",
"status": "agreed",
"owner": "architecture-owner",
"parents": [
"HLR-POS-006",
"HLR-POS-007"
],
"sources": [
"DEC-ARCH-003",
"architecture/catalog.md"
],
"questions": [],
"required_aspects": [
"allowed_path",
"forbidden_path"
],
"verification": "inspection",
"risk": "high"
}
CMP-APP-QUERY MUST читать только STORE-DATA-AGG и MUST NOT иметь прямых/транзитивных зависимостей от STORE-DATA-MAIN, его репозиториев, соединений и учётных данных, включая fallback и экспорт. CMP-APP-PROJECTION строит агрегаты вне контекста запроса. Проверяются зависимости и SQL-grants учётной записи CMP-APP-QUERY. Исключений нет; изменение границы требует пересмотра DEC-ARCH-003 и этого REQ.
Scenario: SCN-ARC-002 — Инспекция аналитической зависимости
- GIVEN Два кандидатных манифеста зависимостей и прав; один разрешённый, один с обходом
- WHEN Вычислить транзитивные зависимости CMP-APP-QUERY и проверить SQL-grants
- THEN Агрегированный путь принят; транзитивный доступ к STORE-DATA-MAIN отклонён
Подробности и данные: acceptance/scenarios/scn-arc-002.json.
Requirement: REQ-ARC-003 — Соответствие технологическому базису
{
"id": "REQ-ARC-003",
"level": "REQ",
"status": "agreed",
"owner": "architecture-owner",
"parents": [
"HLR-POS-008"
],
"sources": [
"architecture/technology-stack.md",
"DEC-ARCH-004"
],
"questions": [],
"required_aspects": [
"approved_products",
"pinned_delivery"
],
"verification": "inspection",
"risk": "high"
}
Сборка и серверная среда системы MUST соответствовать продуктам, редакциям, версиям и области применения технологического базиса. Поставка MUST иметь закреплённые сборки, хеши и конфигурацию сервиса по правилам базиса. Несогласованная замена и плавающая версия блокируют приёмку; изменение базиса согласует архитектор. Исключений нет.
Scenario: SCN-ARC-003 — Инспекция технологического состава поставки
- GIVEN Технологический базис и инвентаризация сборки/среды с положительным и отрицательными кандидатами
- WHEN Сопоставить продукты, редакции, области применения и фиксацию точных сборок с согласованным базисом
- THEN Соответствующий состав принят; несогласованная замена и незакреплённая сборка отклонены с указанием нарушенного TECH-ID
Случаи и отдельные CHECK: acceptance/scenarios/scn-arc-003.json. Инспекция состава дополняется испытаниями совместимости приложения на выбранной среде.