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

91 lines
6.1 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# Отчёт генерации 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 <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) — исполнение на тестовой базе, отдельный шаг.