arm-ka-docs/context/KICKOFF-PROMPT.md
Andrey Epifancev f9240fd351 DBML v5.24: таблица vgo_assignment (AURORA-1751/1540/1541, #196), §5/§8 под факт реализации
Миграция 0011_dbml_v5_24 (vgo_assignment) уже была слита в arm-core main;
docs/model/data-model-v5.24.dbml не существовал — arm-core-dbml-check
красный в регрессии 2026-11-02_2131. Таблица описана по факту ORM/миграции
(dbml_parity.py уже содержал хардкод под это: поля side нет — решение
зафиксировано).

Заодно приведены в соответствие с уже слитым кодом:
- 05-domain-rules.md §5: экран «Пары ВГО» (elimination-totals/pairs) оставлен
  как есть (двойной учёт — известное ограничение, из UI убран), добавлен
  п. 2a — разнесение строк в «Таблице корректировок» (vgo_assignment),
  которое и решает двойной учёт исключением спорной строки до ручного
  решения аналитика;
- §8: корректировка — массивы debit[]/credit[], всегда APPLIED, без
  REVOKED, оптимистичная блокировка по version_no, порог строго > 5 % (R-35);
- OQ-178: открытый вопрос "включительно или нет" (ТЗ/DOC-272613 против
  факта реализации) зафиксирован отдельно от уже закрытого OQ-174;
- analyst/eliminations-vgo.md, dev/api-contract-corrections.md/goodwill.md,
  context/*, Makefile, openspec/config.yaml, repo-templates/arm-core.CLAUDE.md —
  версия 5.23 → 5.24; диаграмма part08 перерисована.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
2026-11-02 23:09:32 +04:00

74 lines
7.6 KiB
Markdown
Raw 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.

# KICKOFF-PROMPT — первое сообщение агенту в workspace
Запускать `claude` из корня workspace (`~/work/arm-ka/`), когда выполнен чек-лист в конце файла.
---
Ты начинаешь разработку АРМ КА с нуля в workspace из нескольких git-репозиториев (`docs/`, `fixtures/`, `arm-core/`,
`tabular-parser/`, `scan-gateway/`). Прочитай в таком порядке и **не пиши код, пока не закончишь**:
1. `CLAUDE.md` (workspace) и `docs/context/00-workspace-layout.md` — как устроена рабочая область, статус аналитики, макет.
2. `docs/context/01-project-overview.md`, `02-glossary.md` — предметная область.
3. `docs/context/03-architecture.md`, `04-data-model-guide.md`, затем **весь** `docs/model/data-model-v5.24.dbml` и
`docs/model/entities-v5.24.md`.
4. `docs/context/05-domain-rules.md` — алгоритмы (особенно §1.0 и §12 — парсеры ищут структуру по содержимому);
`06-test-data.md`; `07-open-questions.md`; `10-user-journey.md`; `09-delivery-plan.md`.
5. `arm-core/`, `tabular-parser/`, `scan-gateway/` — три репозитория, развёрнутые из нулевого коммита шаблона команды,
и их `CLAUDE.md`. Выясни соглашения шаблона: структура, DI, ORM/миграции, тесты, линтеры, сборка, фронт.
6. `docs/mockup/INDEX.md` — индекс макета. HTML-файлы макета **не читай подряд**; открывай один экран, только когда
он нужен для задачи.
Затем сделай четыре вещи и остановись для ревью:
**A. Дополни `docs/context/03-architecture.md`** разделом «Соглашения шаблона» и заполни секции «Соглашения шаблона» в
`CLAUDE.md` каждого из трёх репозиториев. Не переделывай шаблон под документ — наоборот. Зафиксируй, что вырезано из
шаблона в `tabular-parser` и `scan-gateway` (фронт, лишние таргеты).
**B. Сверь docs/context/10-user-journey.md и docs/mockup/INDEX.md со снимками docs/mockup/screens/ — дополни пропуски из раздела «Что осталось уточнить», расхождения с DBML/правилами занеси в 07-open-questions.md. HTML макета не читай как текст; при необходимости рендерь scripts/mockup_crawl.py.
**C. Напиши OpenSpec proposal для Среза 0** — три change, по одному в каждом сервисном репозитории
(`openspec/changes/slice-0-skeleton/`), и один в `docs/` для сквозного: `docker-compose` workspace-уровня (PostgreSQL,
NATS, MinIO, эмулятор ИС Сканирование), контракт `recognition-result.schema.json` v1.0, CI-шаблон. В `arm-core`:
миграция 0001 по DBML целиком, seed справочников/ролей/прав, auth с dev-эмитентом JWT, `check_dbml_vs_orm.py`.
В `tasks.md` — задачи ≤ половины дня, в порядке зависимостей, с указанием репозитория.
**D. Составь список вопросов ко мне** — только те, без которых нельзя начать Срез 0 (версии Python/Node в шаблоне,
секреты, реестр образов, доступ к `arm-ka-fixtures` из CI). Вопросы по предметной области не задавай — они в
`07-open-questions.md`; если нужен ответ для среза — делай допущение по правилам из этого файла.
Ограничения на всё время работы:
- имена таблиц, колонок и enum'ов — ровно как в DBML v5.24; поля, которых нет в DBML, не изобретать;
- алгоритмы — только из `05-domain-rules.md`; из страниц ТЗ напрямую не кодировать;
- парсеры: никаких координат ячеек, букв колонок, имён листов и номеров строк в коде — структура по содержимому,
синонимы в `rules/*.yaml`; фикстуры — регрессия, не спецификация;
- деньги — `Decimal`/`numeric(18,2)`;
- всё, что в DBML помечено «не хранится / вычисляется», — чистые функции в `domain/`;
- любое изменение модели — через новую версию DBML с changelog и миграцию;
- один OpenSpec change и один PR — на один репозиторий; `git -C <repo>`; никаких коммитов в `main`;
- общение, коммиты, комментарии, документация — по-русски; идентификаторы — по-английски.
Когда Срез 0 принят: Срез 1 (справочники, `arm-core`), затем Срез 2 (`tabular-parser` + маппинг в `arm-core`) — его
начинай с property-тестов на `fixtures/osv/**` и `fixtures/statements-xlsx/**`, потом парсер.
---
## Подготовка workspace перед kickoff (чек-лист для пользователя)
Репозитории в Gitea: `arm-ka-docs`, `arm-ka-fixtures` (ограниченный доступ), `arm-core`, `arm-tabular-parser`,
`arm-scan-gateway`; `main` защищён везде.
- [ ] `mkdir ~/work/arm-ka && cd ~/work/arm-ka` — workspace, **не** `git init`
- [ ] `docs/`: клонировать `arm-ka-docs`, положить содержимое пакета `docs/` + `docs/source/tz/` (22 md + `_tree.json` +
`_export.md` с датой экспорта) + `docs/source/biq/` (3 docx → pandoc md) + `docs/mockup/dkb_24.09.26/`;
`python ../scripts/mockup_index.py docs/mockup/dkb_24.09.26 > docs/mockup/INDEX.md`
- [ ] `CLAUDE.md` пакета — в корень workspace (не в docs); `scripts/` — в `docs/scripts/` или корень workspace
- [ ] `fixtures/`: клонировать `arm-ka-fixtures`, разложить файлы по `06-test-data.md` §6 (`scripts/sort_osv_fixtures.py`
из инструкции), добавить `statements-xlsx/` (попросить у аналитиков ББ/ОФР в Excel; пока — лист «Отчетность» из
`Анализ *.xlsx` и рекомендуемые формы)
- [ ] `arm-core/`, `tabular-parser/`, `scan-gateway/`: из нулевого коммита шаблона (`00-workspace-layout.md`), в каждый —
`CLAUDE.md` из `docs/repo-templates/`, пустой `openspec/` (`openspec init`), codegraph-индекс
- [ ] `.claude/settings.json` workspace: хуки guard-main (по репозиторию файла), require-plan, cc-status; разрешения на
`git -C`
- [ ] `tea login`; метки `slice-0 … slice-8` в каждом сервисном репозитории
- [ ] первый коммит в каждом репозитории — «шаблон/контекст как есть», в ветке, PR, merge — единственный раз без плана