Срез 0: скелет ядра — ORM и миграция 0001 по DBML v5.13, seed, auth с dev-эмитентом, обмен через recognition_job #3
Loading…
x
Reference in New Issue
Block a user
No description provided.
Delete Branch "feat/1-slice-0-skeleton"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Issue #1 — реализация change
slice-0-skeleton(97 коммитов после merge proposal #2). Не закрывает issue: закрытие — послеopenspec archiveкомандой «закрывай».Что сделано
api/pyproject.toml(ruff, mypy),requirements-dev.txt,Dockerfile(python:3.11-slim),Makefile(venvбезraisa_*,lint,test,test-integration,check,check-full,up,migrate,seed,seed-dev),ENV_FILEв Settings, NATS без nkeys при пустых учётных данных,/healthcheck.nats, префикс/api/v1;web/package.json:raisa-*→optionalDependencies.dkb, partial unique,NULLS NOT DISTINCT, FK-цикл черезuse_alter; миграция0001с полным откатом;api/scripts/check_dbml_vs_orm.py(pydbml) — 0 расхождений; тест паритета мигрированной схемы с ORM.api/seed/core(7 ролей, 16 прав, матрица §10 — 52 строки, план счетов 94н + субсчета 1С — 122, правила элиминации v1 ББ — 8 + 59 счетов, чек-лист BASIC/EXTENDED — 37) иapi/seed/dev(3 РФ, 7 пользователей); идемпотентно.TokenVerifier(dev HS256 заAUTH_DEV_ISSUER+DEBUG, JWKS-каркас),current_user/require(permission),GET /api/v1/me,POST /api/v1/dev/tokenтолько в dev.recognition_jobна core NATS (без JetStream): outbox, ackprocessing, повторная публикация без ack (30 с × 3 →dlq,NO_ACK), inbox с дедупом поresult_msg_id, регистрация результата вs3_object, вахтёрreply_deadline;NoopMapperкак точка расширения Среза 2.AuditService(append-only).api/contracts/,src/contract/) с тестом идентичности кdocs/contracts.Проверки
make check: ruff, format, mypy чисто; 590 unit passed.make check-fullпротив compose (docs/dev): exit 0 — 590 unit + 153 integration (цикл миграций upgrade → downgrade → upgrade, пустой autogenerate, сверка схемы),dbml-check0 расхождений,docker buildок, web:npm install,biome,tsc,rsbuild buildок. DoD-прогон:make up → migrate → seed-dev → /api/v1/me(KA_RF 10 прав, ADMIN 7, KA_GO 11; без токена 401; приDEBUG=falsedev-маршрут 404) и e2e обмен через NATS (published → ack → done +s3_object, повтор результата без изменений). OpenAPI покрыт тестомtest_full_app_me_dev_token_and_openapi.openspec validate --strict— valid.Rulings I made
Полный список —
openspec/changes/slice-0-skeleton/design.md, таблица «Decisions made without discussion» (№14–105: пред-проверка, рулинги по ходу, решения исполнителей, fix-wave). Ключевые: R-1 Makefile в корне, backend-цели черезcd api; R-4required_document_ruleвaudit_ex.py; R-7 обменrecognition_jobне пишетaudit_eventв Срезе 0 (нет подходящегоaudit_action); R-9naming_conventionдля ограничений; R-11PyJWT[crypto]+cryptographyв прод-requirements; R-15CREATE SCHEMAтолько при отсутствии схемы; R-16 тесты в отдельной БДarmcore_pytest_<hex>; R-17 email нормализуется (lower), >1 совпадения → 403; R-19.env.testна порты compose; R-20MINIO_SECURE(false для http); R-22 финальные статусы inbox {done, needs_check, error, timeout, dlq}; R-23web/package-lock.jsonв.gitignore(решение о commit — за человеком). Трейлеры трёх коммитов исправлены до push.Deferred (в follow-up issue при закрытии)
T1.2, T8.3 (
required_document_ruleNULLS NOT DISTINCT → DBML v5.14), T12.2, T13.5 (OQ-47), T14.1–T14.3, T15.4 (--devбез guard), T16.2 (aud/iss, параметры JWT РАИСА), T17.2 (аудит LOGIN_FAILED), T20.7, T22.2, T22.9/T24.9/I-6 (разнести быстрый inbox и маппер Среза 2), T23.1, T23.9, T24.3, T24.6, T26.2 (npm audit6 high в шаблонных зависимостях), M-1, M-5, M-6 (recognition_exchange.py786 строк), M-8, M-10, O-8. Предложения в docs (OQ, DBML v5.14, контракт) —openspec/changes/slice-0-skeleton/open-questions-proposal.md.Что нужно решить человеку
Коммитить ли
web/package-lock.json; 404 vs 405 под/api/v1; обязательныйaudв проде; параметры JWT РАИСА.Связанные
RSHB/arm-ka-docsветкаfeat/1-slice-0-skeleton(контракт v1.0, compose) — PR после фазы 2;RSHB/arm-tabular-parser,RSHB/arm-scan-gateway— в работе.🤖 Generated with Claude Code
https://claude.ai/code/session_012vJkmBGKKqMoEMzvsXG3y2
Тест сверяет имена и упорядоченные значения с блоками Enum {} DBML через pydbml. Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>openspec/changes/slice-0-skeleton/open-questions-proposal.md — носитель 15 предложенных вопросов, правок статусов OQ-46/OQ-47 и кандидатов в DBML v5.14 для docs-PR (открывает владелец ../docs); архивируется вместе с change. Добавлены пункты финального ревью: аудит LOGIN/LOGIN_FAILED, CORS * и доверенные прокси, открытые /docs и /openapi.json, статус stored_file из inbox, срок ответа tabular, append-only на уровне БД, последовательный callback NATS и длинный маппер, проверка ключа results/{file_id}/{job_id}/ до чтения результата. Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>