Files
Deal/docs/superpowers/reviews/2026-09-10-docs-audit.md
T
Rustam Khalimov 27c7831910
ci / build-test (push) Canceled after 0s
Deal — единая кодовая база
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 зелёные.
2026-09-11 23:56:47 +03:00

12 KiB
Raw Blame History

Аудит документации «Дейл»: сверка с кодом/конфигами

Исторический документ (аудит документации, 2026-09-10; следующий — 2026-09-11-docs-final-sweep.md). Актуальное состояние — docs/superpowers/STATUS.md и docs/technical/Техническая-документация-Дейл.md.

Дата: 2026-09-11 Проверено: docs/spec/ТЗ-дейл-новая-архитектура.md, docs/user-guide/Инструкция-пользователя-Дейл.md, docs/technical/Техническая-документация-Дейл.md, docs/api/api-map.md, плюс docs/superpowers/STATUS.md. Метод: сверка утверждений с кодом (src/core/Deal.Api/Endpoints/*, src/core/Deal.Infrastructure/**, src/frontend/src/**, src/{ai,ml,telegram}-service), конфигами (deploy/compose.*.yml, appsettings*.json) и скриптами (scripts/*.sh). Докер не поднимался, тесты не перезапускались (см. «непроверяемое»).

Сводка

  • Найдено расхождений: 30 (по пунктам таблиц ниже).
  • Исправлено прямо в доках: 30.
  • Значимые подтверждённые факты, с которыми доки сходятся: порты (core 5080/5082, telegram 5101, ai 5102, ml 5103, metrics 9464, postgres 5433, minio 9000/9001, grafana 3001), единые домены /api/cards + /api/containers, оператор-консоль #/operator и активация #/join, ключи Telegram — у оператора (global_settings), команды запуска.

Расхождения (файл:строка → в доке → реальность → исправлено)

docs/technical/Техническая-документация-Дейл.md

# Место В доке Реальность (код) Статус
1 §2 «Структура» (~L43) проект Deal.Modules.Projects/ каталога нет; есть Deal.Modules.Telegram/ исправлено на Deal.Modules.Telegram
2 §3 «Модули core» (таблица, ~L74) «Выбранные» владеет Deal.Modules.Projects; нет Telegram сервисы «Выбранных» — в Deal.Modules.Kanban (CardsService.Selected); модуль Deal.Modules.Telegram существует исправлено + добавлена строка Telegram
3 §3 (абзац, ~L80) «Projects — сервисами пространства…» модуля Projects нет (перенесено в Kanban) исправлено
4 §4 «Ключевые таблицы public» (~L109-112) tenants(…, limits_json), users(…, email, role), invites(id, tenant_id, email, code, expires_at, used_at), app_settings tenants(Id,Name,Status,CreatedAt), users(…,Login,…), invites(Code PK,Email,TenantId,Status,ExpiresAt,ActivatedAt,CreatedById,CreatedAt), global_settings; таблицы app_settings нет исправлено
5 §4 сноска (~L122) Operators, OperatorSessions таблицы — operators, operator_sessions (миграция SystemSaaS) исправлено
6 §6 «Файлы» (~L202) ключ объекта = tenant_<id>/<card_id>/<file_id> CardsService строит projects/<card_id>/<file_id>_<unixMs>_<safeName> исправлено
7 §8 «Развёртывание» (сноска, ~L304) «корневой docker-compose.yml — наследие LeadRadar» файл перенесён в archive/leadradar-legacy/; в корне его нет исправлено
8 §11 этап 5 (~L510) модуль/таблица Deal.Modules.Projects/ProjectCards без пометки упразднены с этапа 9 добавлена пометка «историческое состояние»
9 §11 TODO (~L619-620) «OpenAPI-карта снимается с LeadRadar», «миграции на 1000 схем — в плане этапа 0» api-map и контракты есть; пакетная миграция реализована (этап 12) исправлено
10 §13.4a (~L717) секреты включают tgKeys.apiHash в настройках тенанта, маска apiHashSet tgKeys у тенанта нет; ключи — у оператора (global_settings, GET/PUT /api/operator/settings/telegram-keys) исправлено + пометка
11 §13.5 «Проверка схем» (~L888) схема тенанта содержит Boards, ProjectCards; public — неполный Boards/ProjectCards удалены (этап 9); актуальны Containers, Dialogs, Disc* и т.д. исправлено на актуальный список
12 §13.6 «Тесты» (~L905) dotnet test ожидает 1203 PASS актуальный core — 1275 исправлено
13 §13.7 env (~L976) core в compose задаёт DEAL_DEMO=1 в compose.dev.yml DEAL_DEMO нет; демо-ручки удалены исправлено
14 §13.7 smoke (~L994) POST /api/demo/simulate-lead/api/leads/{id}/trash dev-smoke.sh: POST /api/cardsPOST /api/cards/{id}/trash исправлено
15 §13.7 ручные проверки (~L1061) PATCH /api/settings tgKeys ключи — у оператора (вариант A) исправлено
16 §13.8 (~L1074) public.Operators/OperatorSessions operators/operator_sessions исправлено
17 §13.8 (~L1111) «приостановка тенанта (вход 401…)» вход приостановленного тенанта — 403 (AuthEndpoints) исправлено
18 §13 заголовок (~L636) «актуально для этапов 0–10» актуально по этап 12 исправлено
19 §13.4e (~L841) исторический раздел этапа 5 без пометки операции переехали в /api/cards*, модуль/таблица удалены добавлена пометка
20 §16 «Добивка» (~L1339) core-тесты 1245/1245 актуально 1275/1275 исправлено

docs/user-guide/Инструкция-пользователя-Дейл.md

# Место В доке Реальность Статус
21 §1 «Особенности» (~L32-34) демо-кнопки («демо-карточка», «демо-сообщение») при DEAL_DEMO=1 во фронте демо-кнопок нет, ручки POST /api/demo/* и флаг удалены исправлено

docs/api/api-map.md

# Место В доке Реальность Статус
22 §3.1 (~L59) change-password — минимум 4 символа AuthEndpoints — минимум 8 исправлено
23 §4.1 (~L248) objectKey: "cards/c_…/pf_…" формат projects/<cardId>/<fileId>_<ms>_<name> исправлено
24 §5 «Прочие домены» (~L400) Operator + join = 21 24 операторских ручки + /api/join = 25 исправлено

docs/superpowers/STATUS.md

# Место В доке Реальность Статус
25 (~L30) core 1203/1203 PASS 1275 исправлено
26 (~L52) «демо DEAL_DEMO» демо удалено исправлено
27 (~L56) public.Operators/OperatorSessions operators/operator_sessions исправлено
28 (~L76) «демо-пространство, DEAL_DEMO=1» dev-seed admin/admin, демо удалено исправлено
29 (~L90) «settings/boards/demo-карточка» (live-приёмка) актуальные ручки — /api/settings, /api/cards исправлено + историческая пометка
30 (~L94) «simulate-lead → карточка inbox» dev-smoke.sh: POST /api/cards → карточка planned исправлено

Нумерация строк приблизительная (после правок сместилась).

Проверено и сходится (выборка)

  • Порты: core HTTP 5080 / gRPC-ингресс 5082, telegram-service 5101, ai-service 5102, ml-service 5103, metrics 9464 (METRICS_PORT), postgres host-порт 5433, minio 9000/9001, grafana 127.0.0.1:3001, prometheus 127.0.0.1:9090 — совпадают с deploy/compose.*.yml и Dockerfile.
  • Команды: docker compose -f deploy/compose.dev.yml up -d --build, scripts/dev-smoke.sh, scripts/test.sh (+ npm run lint:i18n), фронт npm run dev — совпадают.
  • Единый API: /api/cards + /api/containers; домены /api/leads|projects|boards|columns удалены — совпадает с Endpoints/* и api-map.
  • Оператор-консоль: hash-роутер #/ / #/operator / #/join?code=…src/frontend/src/router.js; ключи Telegram — global_settings + OperatorSettingsEndpoints.
  • БД: Containers вместо Boards, ProjectCards нет, Cards с модульными JSON-полями; публичные таблицы audit_log/token_usage_events/global_settings/rate_limit_counters и lowercase operators/operator_sessions — подтверждено EF-конфигами и миграциями.
  • Файлы: objectKey = projects/<cardId>/<fileId>_<ms>_<name>CardsService.Files.
  • Наблюдаемость: /metrics на отдельном HTTP/1.1-эндпоинте :9464, Serilog, promtail/loki/grafana — подтверждено DealMetricsHosting, compose.prod.yml.

Осталось / непроверяемое

  • Счётчики тестов сервисов (telegram 125, ai 52, ml 38): перезапуск тестов не выполнялся (запрет на долгие процессы). В доках трогали только core-счётчик (1203/1245 → 1275) по ground-truth задания; сами цифры сервисов не подтверждались кодом.
  • Точное число операторских ручек (25) — подсчёт по Endpoints/Operator* + JoinEndpoint; группировка может отличаться от авторской (ранее было 21 — вероятно, до этапа 12).
  • Исторические разделы-журналы (§11 этапы 17, §13.4c/4d/4e, live-приёмки в STATUS/планах) намеренно сохраняют легаси-термины (Boards, /api/leads, /api/projects, DEAL_DEMO, ProjectCards). Добавлены точечные пометки «историческое состояние»; полный перепис не выполнялся (вне правил задачи).
  • Планы/архитектурные доки (docs/superpowers/plans/*, docs/architecture/*) содержат легаси-термины (Boards, ProjectCards, docker-compose.yml) — вне периметра аудита.
  • Живые контуры (Telegram-вход, реальные LLM-вызовы, mTLS-рукопожатие, backup/restore на docker-стеке) не проверялись — нужны креды/Docker; в доках они помечены ⚠ Manual.
  • Дубли/внутренние противоречия: техдок §11 этап 5 и §13.4e описывают снятый контур «Выбранных» как историю; при следующей редакции их, возможно, стоит свернуть в ссылку на §3.