arm-core/CLAUDE.md
Andrey Epifancev f12ce87346 docs: соглашения шаблона в CLAUDE.md и OpenSpec change slice-0-skeleton
Срез 0 (issue #1): раздел «Соглашения шаблона» (что оставлено от шаблона команды, что
вырезается, что добавляется); change openspec/changes/slice-0-skeleton — proposal, design
с таблицей «Decisions made without discussion», спеки и tasks; в openspec/config.yaml
строки с двоеточием взяты в кавычки (YAML разбирал их как словари).

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
2026-10-03 02:43:34 +04:00

4.7 KiB
Raw Blame History

CLAUDE.md — arm-core (ядро АРМ КА)

Общий контекст системы — ../CLAUDE.md и ../docs/ (workspace). Этот файл — только про этот репозиторий.

Что это

Ядро: справочники, файлы/документы, маппинг результатов распознавания, вычисления консолидации, маршрут согласования, ЕХ, аудит, права. Единственный писатель в PostgreSQL. Монорепо api/ (FastAPI) + web/ (React/TS) по шаблону команды «Шаблон FastAPI» (нулевой коммит RSHB/DKB_ARMKA@ba172f8; импорт — ba92222, очистка от домена — 8e1f423).

Соглашения шаблона

Полный текст — ../docs/context/03-architecture.md, раздел «Соглашения шаблона команды». Главное для этого репозитория:

  • Команды — из api/ (там .env, pytest.ini, web/ для SPA): python run_server.py, alembic upgrade head, pytest, ruff check . && ruff format --check ., mypy src. Из web/: npm run start|build, npx biome check src, npx tsc --noEmit. Бутстрап — setup/setup.sh (pip/npm через Nexus банка).
  • Раскладка api/src/: api/endpoints → services → repositories → models; DTO — schemas/; инфраструктура — core/ (config, clients, nats_callback, logger, exception_handlers, auth); db/ — engine и сессия. Наши добавления: domain/ (чистые функции по §§ правил), api/scripts/ (check_dbml_vs_orm.py, seed).
  • DI — ручные фабрики Depends в api/dependencies/; сессия из get_async_session; storage/nats — из request.app.state.
  • Настройки — pydantic-settings, api/.env, вложенность __, инфраструктура под OPENBAO__*; DEBUG=true отключает NATS и middleware РАИСА. Флаги разработки (AUTH_DEV_ISSUER) — отдельные поля Settings, по умолчанию выключены.
  • БД — схема dkb (MetaData, search_path, Alembic); PK uuid через UUIDPrimaryMixin; ревизии в api/alembic/versions/; автогенерация — черновик, финал сверяется с DBML скриптом.
  • Ошибки — common/exceptions.py → core/exception_handlers.py, ответ {"detail": …} по-русски. Логи — loguru.
  • Тесты — pytest-asyncio (auto, session loop), APP_ENV=test, ENV_FILE=.env.test; БД-тесты — на PostgreSQL из compose, domain/ — без БД.
  • Линтеры — backend ruff + mypy (api/pyproject.toml); frontend biome (ширина 140, одинарные кавычки) + tsc.
  • Frontend — React 18 + TS strict, rsbuild, antd 6 (основной UI-кит), Redux Toolkit (store/slices/), react-router 7; layouts/ — страницы, widgets/ — блоки, components/ — примитивы; env только REACT_APP_* через conf/config.ts; запросы — ${Config.API_URL}/api/v1/...; REACT_APP_ROOT_PATH = ROOT_PATH бэка.
  • Сборка — платформа запускает api/run_server.py (SERVER__HOST/PORT), ресурсы — raisa_config.yml; SPA: web/dist → api/web/. Dockerfile в корне — только для локального compose и CI (убран из .gitignore шаблона).

Зависимости от соседей

  • Контракты: ../docs/contracts/recognition-result.schema.json (вход из парсера/шлюза), ex-payload-v1.schema.json.
  • Фикстуры: ../fixtures/ (env ARM_KA_FIXTURES); в CI — checkout arm-ka-fixtures.
  • NATS subjects и схема ключей S3 — ../docs/context/03-architecture.md.

Правила репозитория

  • ORM 1:1 с ../docs/model/data-model-v5.13.dbml; api/scripts/check_dbml_vs_orm.py — обязательная проверка CI.
  • Алгоритмы — только из ../docs/context/05-domain-rules.md; номер § — в docstring.
  • Вычисляемые объекты консолидации — api/src/domain/, без ORM-таблиц.
  • Фронт: пользователь слаб во фронте — для TS/React изменений делай ревью сам и объясняй решения в PR.
  • OpenSpec: openspec/ здесь; сквозные изменения — change в ../docs.