arm-ka-docs/context/KICKOFF-PROMPT.md
Andrey Epifancev e70f589112 DBML v5.23 (elimination_rules_version NOT NULL), §5 без каскада, пары ВГО по версии (#164, AURORA-1536)
Решения владельца 23.10.2026 по ревью arm-core #175:
- consolidation_version.elimination_rules_version — not null, существующим
  версиям номер проставляет миграция по дате создания;
- §5: каскад по остатку отменён (21.10), правила считаются отдельно до
  разнесения строк AURORA-1751; суммы сторон со знаком, при min <= 0 процент
  не считается; отрицательные строки в упаковку не идут (NEGATIVE_AMOUNT);
  группы сортируются по проценту расхождения; выдача — список троек версии
  и детализация тройки;
- OQ-173, OQ-174, OQ-175; страница аналитика; гайд фронта §5.7.2;
  ссылки на модель и диаграммы — v5.23.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-23 18:34:21 +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.23.dbml` и
`docs/model/entities-v5.23.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.23; поля, которых нет в 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 — единственный раз без плана