# Отчёт генерации DAL (проект_dal) — прогон 2026-09-08, завершён БЛОКИРОВКОЙ на этапе 3 ## Статус | Этап | Статус | |---|---| | 0_scan (разведка) | done | | 1_rules (правила MCP) | done | | 2_spec (спецификации тестов) | done — утверждены пользователем | | 3_code (генерация) | **blocked** — конфликт транспорта (см. ниже) | | 4_validate | не выполнялся | | 5_report/DONE | не выполнялся | ## Версии правил - Каталог MCP standarts-catalog: **1.2** (= rules-baseline.json 1.2). - Области: c-dal 1.1, d-tst 1.1, c-tst 1.1, c-cs 1.1, db-m 1.1, db-s 1.1 (все от 2026-09-04; составы правил совпали с baseline). Дополнительно загружены: db-func 1.1, db-tst 1.1, c-dm 1.1, d-dev 1.1, d-db 1.1. - `validate-rules` не требовался (расхождений нет). ## Причина блокировки Транспорт `Kit.Helpers` (`SqlHelperPostgres.UpdateParamNames`) строит вызов хранимой функции с именованными аргументами `_<имя> => :_<имя>`, добавляя `_` к ключу параметра. Все функции экосистемы Kit (course, partner) объявлены с параметрами `_<имя>` (_guid, _partner_id). Функции слоя chk объявлены по правилу **db-func-5** с префиксом `p_` (p_check_date, p_id, ...) — такой вызов через Kit.Helpers невозможен (`_p_check_date` ≠ `p_check_date` → «function does not exist»). **Решение пользователя (2026-09-08):** стандарт db-func-5 сохраняется (`p_`); генерация DAL заблокирована до доработки Kit.Helpers (администратор Kit): варианты — политика именования параметров в транспорте (не добавлять `_`, если ключ уже имеет префикс `p_`/`_`) либо иной согласованный механизм. ## Слой БД (создано в этом прогоне, статус DEV / «Функция»=CODE) - `DB/chk/functions/*.sql` — 7 функций: chk_type_select, chk_status_select, chk_check_insert, chk_check_update, chk_check_delete, chk_check_select, chk_check_get (db-func-2..8; db-m-3/4/5/8; db-s-8). - `DB/chk/func_specs/*.md` — 7 спецификаций с тест-планами (d-db-9). - `DB/chk/tests/test_*.psql` — 7 psql-тестов, нумерация = строкам спецификаций (db-tst-1..3, db-tst-6). **Не выполнялись** — нужна тестовая база PostgreSQL: `psql -d <база> -f DB/chk/tests/test_*.psql`. - `DB/chk/functions.md` — статусы обновлены; `tables.md`, `DB/readme.md` — синхронизированы. - `db/manifest.json` — FRESH, 3 сущности (ChkCheck CRUD; ChkType/ChkStatus — select). ## Решение C# (создано) - `MT.Check.slnx`; `MT.Check.Core.Dal` (net10.0; ProjectReference на `I:\Gitea\Kit\Kit.Core\Kit.Core\Kit.Core.csproj`); `MT.Check.Core.Dal.Tests` (xunit). - Домен: `Chk/Domain/ChkType.cs` (+ChkTypes), `ChkStatus.cs` (+ChkStatuses), `ChkCheck.cs` (c-dm-1..11; chk_type_id → TypeId и т.п.). - Репозитории-заготовки: `Chk/Repository/ChkCheckRepository.cs` (Insert/Update/ Delete/Select/Get), `ChkTypeRepository.cs`, `ChkStatusRepository.cs` (Select — c-dal-2: системные справочники только чтение); фильтр `Chk/Repository/Filter/ChkCheckFilter.cs` (c-dal-14/15). - Тест-хелперы: `Tests/Helpers/ConnectionStringTest.cs`, `DataTableAssertExtensions.cs` (по шаблонам навыка). - Имена: решение MT.Check, проект MT.Check.Core.Dal — заданы пользователем (умолчание от имени папки отклонено из-за кириллической «С» в «MT.Сhecks»). ## Результаты build/test/check - `dotnet build MT.Check.slnx` — **0 ошибок** (предупреждения NU1903/CS — из Kit.Core, вне рамок). - `dotnet test MT.Check.Core.Dal.Tests` — 0 тестов, успешно (тела и тесты не генерированы — блокировка). - DalTools `check` — **0 нарушений** (c-dal/c-tst). ## Методы → функции (проект, тела не реализованы) | Метод | Функция | Спецификация тестов | |---|---|---| | ChkCheckRepository.Insert/Update/Delete/Select/Get | chk.chk_check_insert/update/delete/select/get | 1-docs/2-core/chk/repository_tests/ChkCheckRepository.md (13 тестов) | | ChkTypeRepository.Select | chk.chk_type_select | ChkTypeRepository.md (2 теста) | | ChkStatusRepository.Select | chk.chk_status_select | ChkStatusRepository.md (2 теста) | ## Возобновление (после доработки Kit.Helpers) 1. `dotnet run --project -- show-state` → продолжить с 3_code. 2. Наполнить тела методов (транспорт fluent, p_-параметры) и тесты 1:1 спецификациям; статусы «Репозиторий» → CODE; build/test/check; отчёт; DONE. ## Неопределённости / допущения - Имя решения «MT.Check» — свободный выбор пользователя (папка содержит кириллицу). - Kit.Helpers подключён ProjectReference на внешний репозиторий (NuGet-пакета нет). - Имена сущностей в манифесте: ChkType/ChkStatus/ChkCheck (ToPascal от chk_*). - psql-тесты функций не исполнялись (нет доступа к тестовой БД в этом прогоне). - Задача «Проверка» БД-функций (db-tst) — исполнение на тестовой базе, отдельный шаг.