10 KiB
Отчёт генерации DAL (навык project_dal) — прогон 2026-09-08
Ð¡Ñ‚Ð°Ñ‚ÑƒÑ Ñтапов
| Ðтап | Ð¡Ñ‚Ð°Ñ‚ÑƒÑ |
|---|---|
| 0_scan (разведка) | done |
| 1_rules (правила MCP) | done |
| 2_spec (Ñпецификации теÑтов) | done — утверждены пользователем |
| 3_code (генерациÑ) | done (теÑты не ÑоздаютÑÑ â€” решение пользователÑ) |
| 4_validate | done — build 0 ошибок; check: 1 извеÑтный false positive (Ñм. ниже) |
| 5_report | done — ожидание ÑƒÑ‚Ð²ÐµÑ€Ð¶Ð´ÐµÐ½Ð¸Ñ DONE |
ВерÑии правил
- Каталог MCP standarts-catalog: 1.2 (= rules-baseline.json 1.2); раÑхождений
нет,
validate-rulesне требовалÑÑ. - ИÑпользованные облаÑти: c-dal 1.1, d-tst 1.1, c-tst 1.1, c-cs 1.1, db-m 1.1, db-s 1.1, db-func 1.1, db-tst 1.1, c-dm 1.1, d-dev 1.1, d-db 1.1 (вÑе 2026-09-04).
Решение (проект MT.Checks)
MT.Checks.slnx→ проектMT.Checks\MT.Checks.csproj(net10.0), ProjectReference наI:\Gitea\Kit\Kit.Core\Kit.Core\Kit.Core.csproj(Kit.Helpers).- ТеÑтового проекта нет — решение Ð¿Ð¾Ð»ÑŒÐ·Ð¾Ð²Ð°Ñ‚ÐµÐ»Ñ Â«Ð±ÐµÐ· теÑтов ÑовÑем» (2026-09-08).
Файлы
| Файл | Содержимое |
|---|---|
Domain\ChkCheck.cs |
ÑущноÑть проверки (+ Type/Status-Ñправочники, Params — Ñтрока JSON) |
Domain\ChkType.cs |
Ñправочник типов + конÑтанты ChkTypes (6 значений) |
Domain\ChkStatus.cs |
Ñправочник ÑтатуÑов + конÑтанты ChkStatuses (4 значениÑ) |
Repository\Filter\ChkCheckFilter.cs |
фильтр Select (null = уÑловие не применÑетÑÑ) |
Repository\ChkCheckRepository.cs |
Insert/Update/Delete/Select/Get |
Repository\ChkTypeRepository.cs |
Select (Ñправочник — только чтение) |
Repository\ChkStatusRepository.cs |
Select (Ñправочник — только чтение) |
ÐеймÑпейÑÑ‹: MT.Checks.Domain, MT.Checks.Repository, MT.Checks.Repository.Filter
(папка/Ð¿Ñ€ÐµÑ„Ð¸ÐºÑ ÑÐ»Ð¾Ñ Chk в коде не иÑпользуютÑÑ â€” решение пользователÑ).
Методы → функции БД
| Метод | Ð¤ÑƒÐ½ÐºÑ†Ð¸Ñ | Возврат |
|---|---|---|
ChkCheckRepository.Insert(ChkCheck) |
chk.chk_check_insert |
id запиÑи |
ChkCheckRepository.Update(ChkCheck) |
chk.chk_check_update |
чиÑло Ñтрок (read-modify-write; guard Id=0) |
ChkCheckRepository.Delete(int) |
chk.chk_check_delete |
чиÑло Ñтрок (guard id=0) |
ChkCheckRepository.Select(ChkCheckFilter) |
chk.chk_check_select |
IList<ChkCheck> |
ChkCheckRepository.Get(int) |
chk.chk_check_get |
ChkCheck? (guard id=0) |
ChkTypeRepository.Select() |
chk.chk_type_select |
IList<ChkType> |
ChkStatusRepository.Select() |
chk.chk_status_select |
IList<ChkStatus> |
Каждый метод — ровно одна Ñ…Ñ€Ð°Ð½Ð¸Ð¼Ð°Ñ Ñ„ÑƒÐ½ÐºÑ†Ð¸Ñ, транÑпорт — fluent API Kit.Helpers
(PrepareExecute<T>().AsStoredProcedure().AddParameter*().AddConverter(...)),
конвертеры таблиц ответа — inline-лÑмбды.
Слой БД (Ñтот же прогон)
DB/chk/functions/*.sql— 7 функций (параметрыp_*по db-func-5);DB/chk/func_specs/*.md— 7 Ñпецификаций Ñ Ñ‚ÐµÑÑ‚-планами (d-db-9);DB/chk/tests/test_*.psql— 7 psql-теÑтов (не иÑполнÑлиÑÑŒ — нужна теÑÑ‚Ð¾Ð²Ð°Ñ Ð±Ð°Ð·Ð°:psql -d <база> -f DB/chk/tests/test_*.psql);DB/chk/functions.md— ÑтатуÑÑ‹: функцииDEV/«ФункциÑ»=CODE; «Репозиторий»=REQÑ Ð¿Ñ€Ð¸Ð¼ÐµÑ‡Ð°Ð½Ð¸ÐµÐ¼ (unit-теÑты не ÑоздаютÑÑ,CODEпо d-dev-3 неприменим).
ВалидациÑ
dotnet build MT.Checks.slnx— 0 ошибок (Ð¿Ñ€ÐµÐ´ÑƒÐ¿Ñ€ÐµÐ¶Ð´ÐµÐ½Ð¸Ñ NU1903/CS — из Kit.Core).- DalTools
check(Ñ Ð¼Ð°Ð½Ð¸Ñ„ÐµÑтом) — 1 нарушение c-dal-1, извеÑтный false positive: ÑвриÑтика «SQL в Ñтроке C#» Ñканирует текÑÑ‚ между Ñтроковыми литералами файла и находит ÑловоSelectв Ñигнатуре методаSelect(ChkCheckFilter)— Ð¸Ð¼Ñ Ð¼ÐµÑ‚Ð¾Ð´Ð° обÑзательно по правилу c-dal-5 (имена CRUD: Insert/Update/Delete/Select/Get). ÐеуÑтранимо в коде без Ð½Ð°Ñ€ÑƒÑˆÐµÐ½Ð¸Ñ Ñтандарта; SQL в Ñтроках отÑутÑтвует.
Спецификации теÑтов
1-docs/2-core/chk/repository_tests/ — ChkCheckRepository.md (17 теÑтов),
ChkTypeRepository.md, ChkStatusRepository.md — утверждены как документациÑ
ожидаемого поведениÑ. ТеÑтовый код по решению Ð¿Ð¾Ð»ÑŒÐ·Ð¾Ð²Ð°Ñ‚ÐµÐ»Ñ Ð½Ðµ ÑоздаётÑÑ
(Ñм. DB/chk/functions.md, примечание к колонке «Репозиторий»).
ИзвеÑтные Ð¾Ð³Ñ€Ð°Ð½Ð¸Ñ‡ÐµÐ½Ð¸Ñ Ð¸ решениÑ
- ТранÑпорт
p_vs_: Kit.Helpers Ñтроит именованные аргументы_<имÑ>, функции chk объÑвлены Ñp_<имÑ>(db-func-5; решение Ð¿Ð¾Ð»ÑŒÐ·Ð¾Ð²Ð°Ñ‚ÐµÐ»Ñ â€” Ñохранить Ñтандарт). До доработки Kit.Helpers (админиÑтратор Kit) вызовы репозиториев против живой БД будут давать «function ... does not exist». - Имена: решение/проект
MT.Checks— по указанию Ð¿Ð¾Ð»ÑŒÐ·Ð¾Ð²Ð°Ñ‚ÐµÐ»Ñ (вMT.Check.Core.Dal/MT.Checks.Testотказ). - Без теÑтов: теÑтовый проект отÑутÑтвует;
dotnet testиз конвейера иÑключён. - ÐŸÑ€ÐµÐ´ÑƒÐ¿Ñ€ÐµÐ¶Ð´ÐµÐ½Ð¸Ñ Ñборки NU1903 (уÑзвимые пакеты Npgsql/SqlClient и др.) — из Kit.Core, вне рамок навыка.
Возобновление/завершение
ПоÑле доработки Kit.Helpers доÑтаточно проверить вызовы на теÑтовой БД
(Ñпецификации вызовов не менÑÑŽÑ‚ÑÑ). СтатуÑÑ‹ DONE — поÑле утверждениÑ
пользователем.