# Аудит документации «Дейл»: сверка с кодом/конфигами > Исторический документ (аудит документации, 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_//` | `CardsService` строит `projects//__` | ✅ исправлено | | 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/cards` → `POST /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//__` | ✅ исправлено | | 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//__` — `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 этапы 1–7, §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.