MT.Checks/Plan/backup/2026-09-08/dal_report.md

6.1 KiB
Raw Blame History

Отчёт генерации 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_datep_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.slnx0 ошибок (предупреждения NU1903/CS — из Kit.Core, вне рамок).
  • dotnet test MT.Check.Core.Dal.Tests — 0 тестов, успешно (тела и тесты не генерированы — блокировка).
  • DalTools check0 нарушений (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 <DalTools> -- 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) — исполнение на тестовой базе, отдельный шаг.