100 lines
10 KiB
Markdown
100 lines
10 KiB
Markdown
# Отчёт генерации 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`, примечание к колонке «Репозиторий»).
|
|
|
|
## ИзвеÑтные Ð¾Ð³Ñ€Ð°Ð½Ð¸Ñ‡ÐµÐ½Ð¸Ñ Ð¸ решениÑ
|
|
|
|
1. **ТранÑпорт `p_` vs `_`**: Kit.Helpers Ñтроит именованные аргументы `_<имÑ>`,
|
|
функции chk объÑвлены Ñ `p_<имÑ>` (db-func-5; решение Ð¿Ð¾Ð»ÑŒÐ·Ð¾Ð²Ð°Ñ‚ÐµÐ»Ñ â€” Ñохранить
|
|
Ñтандарт). До доработки Kit.Helpers (админиÑтратор Kit) вызовы репозиториев
|
|
против живой БД будут давать «function ... does not exist».
|
|
2. **Имена**: решение/проект `MT.Checks` — по указанию пользователÑ
|
|
(в `MT.Check.Core.Dal`/`MT.Checks.Test` отказ).
|
|
3. **Без теÑтов**: теÑтовый проект отÑутÑтвует; `dotnet test` из конвейера иÑключён.
|
|
4. ÐŸÑ€ÐµÐ´ÑƒÐ¿Ñ€ÐµÐ¶Ð´ÐµÐ½Ð¸Ñ Ñборки NU1903 (уÑзвимые пакеты Npgsql/SqlClient и др.) —
|
|
из Kit.Core, вне рамок навыка.
|
|
|
|
## Возобновление/завершение
|
|
|
|
ПоÑле доработки Kit.Helpers доÑтаточно проверить вызовы на теÑтовой БД
|
|
(Ñпецификации вызовов не менÑÑŽÑ‚ÑÑ). СтатуÑÑ‹ `DONE` — поÑле утверждениÑ
|
|
пользователем.
|