Deal — единая кодовая база
ci / build-test (push) Canceled after 0s

SaaS-мониторинг Telegram: ядро (модули Cards/Kanban/Pipeline/Tenants/Settings/
Discovery, Api, Infrastructure), сервисы telegram/ai/ml/storage, фронт Vue,
контракты и grpc-hosting, деплой-конфиги (dev/prod/observability/CI-раннер),
Gitea Actions CI, документация (ТЗ, техдок, api-map, код-стайл, планы, бэклог).

Текущее состояние: все этапы роадмапа 0–12 закрыты, сборка 5 sln 0/0,
тесты 1340/130/52/38/9 зелёные.
This commit is contained in:
Rustam Khalimov
2026-09-11 23:56:47 +03:00
commit 27c7831910
1383 changed files with 158436 additions and 0 deletions
@@ -0,0 +1,95 @@
# Финальная «подбивка» документации «Дейл» (2026-09-11)
> Дата: 2026-09-11
> Периметр: все `docs/**` (актуальные доки — spec/user-guide/technical/api/STATUS; исторические —
> `plans/*`, `reviews/*`, `specs/*`, старые `architecture/*`).
> Метод: сквозной поиск по проблемным терминам (`Boards`, `ProjectCards`, `Deal.Modules.Projects`,
> `ProjectStages`, корневой `docker-compose.yml`, `DEAL_DEMO`, демо-эндпоинты, `l_`/`pr_`, `app_settings`,
> «лид» как сущность, старые порты/пути/счётчики тестов) + чтение актуальных доков и сверка с кодом
> (`src/**`, `deploy/compose.*.yml`, `scripts/dev-smoke.sh`, `deploy/observability/grafana/dashboards/`).
> Докер не поднимался, тесты не перезапускались. Предшествующий аудит — `2026-09-10-docs-audit.md`
> (30 расхождений, уже помечен как исторический).
## Сводка
- Найдено новых расхождений: **9** (по таблице ниже).
- Исправлено в актуальных доках: **9**.
- Добавлено исторических пометок: **20** файлов.
- Переписывание содержания исторических артефактов не выполнялось (по правилам задачи).
## Расхождения (файл:строка → в доке → реальность → действие)
| # | Файл:строка | В доке | Реальность | Действие |
|---|---|---|---|---|
| 1 | `docs/superpowers/STATUS.md` ~L4 | «Все этапы **010** выполнены (100%)» | таблица этапов — **012**, «Итого 0–12 = 100%» (строка ниже) | ✅ исправлено на 0–12 |
| 2 | `docs/superpowers/STATUS.md` ~L25 | этап 10 — «**ELK**-дашборды» | стек — Loki + promtail + Grafana (`deploy/observability/grafana/dashboards/Deal-*.json`); Elasticsearch/Kibana нет | ✅ «Grafana/Loki-дашборды» |
| 3 | `docs/superpowers/STATUS.md` ~L54 | «Настройки (ключи **AI/Telegram** enc:, промпты, валюты)» у тенанта | ключи Telegram — глобально у оператора (`public.global_settings`); у тенанта только подключение аккаунта | ✅ «ключи AI enc: …; Telegram-ключи — глобально у оператора» |
| 4 | `docs/superpowers/STATUS.md` ~L134 | «судьба legacy `docker-compose.yml`» (открытый вопрос) | файл перенесён в `archive/leadradar-legacy/` (2026-09-10) | ✅ «перенесён в `archive/leadradar-legacy/`» |
| 5 | `docs/superpowers/STATUS.md` ~L141 | «Core-тесты **1245/1245**» | актуально **1275/1275** (в том же разделе ниже уже 1275) | ✅ исправлено на 1275/1275 |
| 6 | `docs/superpowers/STATUS.md` ~L167 | «реестр id-стадий `ProjectStages`» | с этапа 9 каталог — `CardsDefaultContainers` (`Deal.Modules.Cards/Application/CardsDefaultContainers.cs`) | ✅ аннотировано «(с этапа 9 — `CardsDefaultContainers`)» |
| 7 | `docs/superpowers/STATUS.md` ~L7, ~L94 | «dev-smoke **12/12**» (в двух местах) | `scripts/dev-smoke.sh` выполняет **14** проверок (config + 6 контейнеров + login/status/containers/create/list/trash/ML-флашер); таблица этапа 9 уже фиксирует `PASS=14` | ✅ исправлено на 14/14 |
| 8 | `docs/technical/Техническая-документация-Дейл.md` §8 ~L319 | `dev-smoke.sh`: «… → `/api/tg/status`**simulate-lead** → флашер MlOutbox …» | скрипт: `/api/tg/status``POST /api/cards` → trash → флашер MlOutbox | ✅ заменено на `POST /api/cards` → trash |
| 9 | `docs/user-guide/Инструкция-пользователя-Дейл.md` ~L6, L32-34, L41, L262 | «dev/демо-окружение», «демо-пространство с входом `admin`/`admin`» | демо удалено; dev-seed создаёт bootstrap-тенанта `Default` (env `DEAL_BOOTSTRAP_LOGIN/PASSWORD`, дефолт `admin`/`admin`) | ✅ «Dev-окружение», «bootstrap-пространство `Default`» |
## Добавленные исторические пометки
Единая шапка: `> Исторический документ этапа N. Актуальное состояние — docs/superpowers/STATUS.md и docs/technical/Техническая-документация-Дейл.md.`
Планы (`docs/superpowers/plans/`, 15 файлов):
`2026-09-04-channel-discovery.md` (план Discovery прототипа LeadRadar),
`2026-09-05-deal-roadmap.md` (roadmap этапов 07),
`2026-09-05-deal-scaffold.md` (этап 0),
`2026-09-05-deal-stage1-tenancy.md``2026-09-05-deal-stage7-saas.md` (этапы 17),
`2026-09-09-deal-stage9-unified-card.md` (этап 9),
`2026-09-10-deal-stage10-operator-analytics.md` (этап 10),
`2026-09-10-deal-stage11-i18n.md` (этап 11),
`2026-09-10-deal-stage12-observability-hardening.md` (этап 12).
Ревью (`docs/superpowers/reviews/`):
`2026-09-08-code-quality-review.md` (этап 8),
`2026-09-10-tz-compliance-audit.md` (аудит соответствия ТЗ),
`2026-09-10-docs-audit.md` (аудит документации; добавлена ссылка на текущий отчёт).
Специи/архитектура:
`docs/superpowers/specs/2026-09-04-channel-discovery-design.md` (дизайн Discovery прототипа),
`docs/architecture/2026-09-05-deal-architecture-design.md` (архдизайн-черновик),
`docs/architecture/2026-09-09-unified-card.md` (дизайн единой карточки, этап 9).
Не тронуты по существу (актуальны): `docs/architecture/2026-09-10-unified-api-contract.md`,
`docs/architecture/2026-09-10-operator-analytics-contract.md`.
## Проверено и сходится
- **Единый API**: `/api/cards` + `/api/containers`; `api-map` §1/§3.5 корректно фиксирует удаление
`/api/leads|projects|boards|columns` и переименование `new_lead → new_card`; ссылки на «бывшие» домены —
в контексте «удалено», а не как действующие.
- **Ключи Telegram**: spec §4.1/§8, user-guide §3, api-map §6, technical §13.7/§13.10 — везде у оператора
(`/api/operator/settings/telegram-keys`, `public.global_settings`).
- **Оператор-консоль/активация**: `#/operator`, `#/join?code=…` — spec §10, user-guide §11, technical §13.10,
api-map — совпадают.
- **Порты**: core 5080/5082, telegram 5101, ai 5102, ml 5103, metrics 9464, postgres 5433, minio 9000/9001,
grafana 3001, prometheus 9090 — совпадают между spec/user-guide/technical/api и compose-файлами.
- **Core-тесты**: 1275 (technical §13.6/§16, STATUS таблица/итоги) — противоречий в актуальных доках нет.
- **Префиксы id**: `c_` (единый) — api-map §4.1, technical §11/§12/§8; `l_`/`pr_` в актуальных доках отсутствуют
(остались только в помеченных исторических разделах и внешних исторических артефактах).
- **`app_settings`**: в актуальных доках нет; актуальная таблица — `global_settings` (`public`).
- **Исторические артефакты**: `Boards`/`ProjectCards`/`Deal.Modules.Projects`/`ProjectStages`/`DEAL_DEMO`/
демо-ручки/`docker-compose.yml` встречаются только в документах, получивших историческую пометку.
## Осталось спорным / намеренно не тронуто
1. **Ссылка из spec на исторический архдизайн.** `docs/spec/ТЗ-дейл-новая-архитектура.md` (шапка)
указывает среди связанных `docs/architecture/2026-09-05-deal-architecture-design.md` — документ теперь
помечен историческим. Формально не ошибка (файл существует, помечен), но при следующей редакции ссылку,
возможно, стоит заменить на `2026-09-10-unified-api-contract.md`.
2. **`tgKeys` в historical §13.4b технического дока** (`GET /api/settings` перечисляет `tgKeys`): раздел
помечен историческим (§13 шапка + заметка §13.4a о переносе ключей к оператору). По правилам задачи
содержание исторических разделов не переписывалось.
3. **Счётчики тестов сервисов** (telegram 125, ai 52, ml 38): не перепроверялись кодом/прогоном
(запрет на долгие процессы); в актуальных доках они не противоречат друг другу.
4. **«Live SaaS 15/15»** — цифра из исторических приёмок, независимо не подтверждалась.
5. **Число операторских ручек (25)** в api-map §5 — подсчёт по `Endpoints/Operator*` + `/api/join`;
группировка может отличаться от авторской (ранее было 21). Не перепроверялось.
6. **Исторический журнал §11 техдока** (этапы 17) и §13.4c/4d/4e намеренно сохраняют легаси-термины
под пометками; сведение их в ссылки на §3 — задача следующей редакции, а не этой подбивки.
7. **`docs/architecture/2026-09-10-*`** (контракты) по условию задачи не редактировались; они актуальны.