Реализованы сервисы ВМ2 - проверка сообщений и синхронизация с Б24 (деплой еще без перевода в боевой режим)
This commit is contained in:
@@ -1,6 +1,6 @@
|
||||
# arch-05. Правила разработки модулей отдельными агентами
|
||||
|
||||
> Термины — в [`arch-00-glossary.md`](arch-00-glossary.md). Настоящий документ описывает процесс разработки и не переопределяет архитектуру. Иерархия приоритета — в [`README.md`](README.md), раздел «Разрешение конфликтов».
|
||||
> Термины — в [`arch-00-glossary.md`](arch-00-glossary.md). Безопасность VM и production-деплоя — в [`arch-06-service-hosting-security.md`](arch-06-service-hosting-security.md). Настоящий документ описывает процесс разработки и не переопределяет архитектуру. Иерархия приоритета — в [`README.md`](README.md), раздел «Разрешение конфликтов».
|
||||
|
||||
## Цель
|
||||
|
||||
@@ -11,10 +11,19 @@
|
||||
- Перед разработкой агент читает [`README.md`](README.md), архитектурные документы и профильный документ назначенного модуля.
|
||||
- Любое изменение публичного API сопровождается обновлением OpenAPI.
|
||||
- Любое изменение структуры данных сопровождается миграцией.
|
||||
- Все **бизнес-параметры** — в таблице `app_settings`; **infra и секреты** — в `.env`.
|
||||
- Все **бизнес-параметры** — в таблице `app_settings`; несекретная **infra** — в `.env`; production-секреты — только через механизм arch-06.
|
||||
- Нельзя hardcode-ить телефоны, лимиты, тексты, mime types, feature flags и параметры Битрикс24.
|
||||
- Модули, принимающие пользовательский ввод, должны учитывать rate limits и security/safety проверки.
|
||||
|
||||
## Размещение и production-деплой
|
||||
|
||||
- Изменение deployment, VM topology, network exposure, volumes, Linux capabilities, OS/sudo-прав или способа доставки секретов требует impact analysis по arch-06.
|
||||
- Агент не добавляет `deploy` в группу `docker` и не расширяет sudo wildcard-командами. Новое право оформляется как конкретная операция над конкретным systemd-unit с review и rollback.
|
||||
- Production compose, systemd-units, deploy scripts и secret mappings остаются root-owned и недоступны `deploy` на запись.
|
||||
- Для private/no-egress VM допустим временный bootstrap с SSH из trusted ops CIDR и ограниченным egress для пакетов/образов.
|
||||
- Раскатка private/no-egress VM считается незавершённой, пока не выполнен lockdown: public ingress/SSH и общий egress закрыты, private access проверен, а недоступность снаружи зафиксирована.
|
||||
- Повторное открытие ingress/egress после lockdown — документированная break-glass операция с обязательным возвратом в lockdown, а не штатный способ деплоя.
|
||||
|
||||
## Правила базы данных
|
||||
|
||||
- Перечень таблиц, полей, индексов и миграций **определяет модуль-владелец** (`database`, `api-backend`, `bitrix-sync`, `message-safety`, `bitrix-local-app`), а не arch-*.
|
||||
@@ -39,6 +48,7 @@
|
||||
Правила:
|
||||
|
||||
- endpoint naming должен следовать `arch-02-api-contracts.md`;
|
||||
- cross-VM contract test обязан запускать caller и callee как разные network zones: private DNS, verified internal CA, service token, timeout/circuit и запрет plaintext; Docker hostname вынесенного сервиса не считается валидным remote test;
|
||||
- response schema не должна раскрывать внутренние поля;
|
||||
- ошибки возвращаются в едином формате;
|
||||
- для пользовательских данных всегда используется текущий user context из JWT;
|
||||
@@ -86,8 +96,13 @@ Raw OTP запрещено хранить в открытом виде: это
|
||||
- обновлены каталог ошибок в `arch-02` и contract tests, если менялась публичная или internal HTTP-семантика;
|
||||
- созданы миграции, если менялась БД;
|
||||
- обновлены seed `app_settings` и `.env.example`, если добавлялись настройки, service tokens, лимиты или feature flags;
|
||||
- secret value не добавлен в `.env.example`; новый секрет включён только в runtime secret catalog и выдан минимальному набору сервисов;
|
||||
- добавлены тесты;
|
||||
- сервис запускается в Docker Compose;
|
||||
- сервис запускается в root Docker Compose своей VM; CI отдельно валидирует оба projects и отсутствие cross-host `depends_on`/Docker DNS;
|
||||
- remote Message Safety contract tests покрывают v2 `202 + Location + Retry-After`, sticky final result, terminal failed `503`, `409` invariant mapping и legacy v1 migration adapter;
|
||||
- container проверен по arch-06: non-root, `no-new-privileges`, capabilities, read-only filesystem/writable paths, volumes, networks и resource limits;
|
||||
- изменение прав `deploy`, systemd, network exposure, capabilities, volumes или secret delivery отражено в arch-06 и deployment runbook;
|
||||
- для private/no-egress VM выполнен и зафиксирован bootstrap→lockdown checklist;
|
||||
- worker, указанный в Compose/runbook, имеет реально зарегистрированный entrypoint в image; deployment не может заранее выдумывать имя команды;
|
||||
- все изменяемые параметры вынесены из кода;
|
||||
- логи содержат `request_id`, `trace_id` и **`ux_session_id`** (если передан в запросе);
|
||||
|
||||
Reference in New Issue
Block a user