docs: оговорка про queue group в интеграционных тестах, правка CLAUDE.md (T10.3, T3.3)

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
This commit is contained in:
Andrey Epifancev 2026-10-04 03:29:28 +04:00
parent 67a4311150
commit e0b2aaca9a
2 changed files with 17 additions and 11 deletions

View File

@ -21,12 +21,12 @@ Stateless-сервис разбора XLS/XLSX/XLSB: ОСВ по счетам (
## Соглашения шаблона
Тот же шаблон команды, что у `arm-core` («Шаблон FastAPI», `RSHB/DKB_ARMKA@ba172f8`); общие соглашения —
`../docs/context/03-architecture.md`, «Соглашения шаблона команды». Репозиторий приведён к сервису **без фронта и без БД**
(change `slice-0-skeleton`, задачи 1.1–1.2 выполнены). Все команды — из `api/`.
(change `slice-0-skeleton`). Команды backend — из `api/`, `make` — из корня репозитория.
**Оставлено от шаблона:** `api/run_server.py` (точка входа платформы, `SERVER__HOST/PORT`), `api/src/app.py` (lifespan:
подключение к MinIO и NATS, ошибка подключения логируется и не мешает старту; `GET /healthcheck`, gzip/proxy middleware),
`core/config.py` (pydantic-settings, `OPENBAO__MINIO__*` включая `MINIO_SECURE`, `OPENBAO__NATS__*`, `DEBUG`, `ENV_FILE`,
`NATS_ENABLED`, `WORKER_CONCURRENCY`, `PUBLISH_RETRIES`, `DONE_CACHE_SIZE`), `core/clients.py` (S3), `core/logger.py`,
`core/config.py` (pydantic-settings, `SERVICE_NAME` — `service.name` конвертов и имя queue group, `OPENBAO__MINIO__*`
включая `MINIO_SECURE`, `OPENBAO__NATS__*`, `DEBUG`, `ENV_FILE`, `NATS_ENABLED`, `WORKER_CONCURRENCY`, `PUBLISH_RETRIES`, `DONE_CACHE_SIZE`), `core/clients.py` (S3), `core/logger.py`,
`core/exception_handlers.py` (без SQLAlchemy), `common/exceptions.py`, `pytest.ini`, `requirements*.txt`, `raisa_config.yml`,
`setup/setup.sh` + `pip.conf` (без npm-шага). Шаблонный `core/nats_callback.py` (consumer `recognition.result` — зона
ядра) удалён задачей 4.3: его место занял воркер `core/worker.py`.
@ -37,11 +37,15 @@ CORS, регистрация SMB-сессии, импорт `raisa_fastapi_prote
`requirements.txt` — `asyncpg`, `SQLAlchemy`, `alembic`, `smbprotocol`, `argon2-cffi`, `greenlet`, `Mako`,
`raisa_fastapi_protected_api`; шаблонный `README.md` заменён описанием сервиса.
**Добавлено** (в скобках — задача `openspec/changes/slice-0-skeleton/tasks.md`): `api/src/parser/` (интерфейс `Parser` и заглушка `NullParser`; разбор ОСВ §1 и форм §12 — чистые
функции над книгой Excel, Срезы 2+), `api/src/contract/` (pydantic-модели `recognition-result` v1.0) и `api/contracts/`
(копии схем; идентичность с `../docs/contracts` проверяется в `make check`) — задача 3.1, `api/rules/` (README о назначении;
сами словари `*.yaml` — в документах это `rules/*.yaml` относительно `api/` — появятся в Срезе 2) — 4.1, `api/src/core/nats.py` и `api/src/core/worker.py`
(подписка queue group `tabular-parser` на `recognition.tabular.request` → ack → S3 `uploads/` → парсер → S3 `results/` →
`recognition.result`) — 4.2–4.3, `api/pyproject.toml` (ruff, mypy) и `Makefile` — 2.1, `Dockerfile`, `.env.example`,
`.env.test` — 2.2. Проверки: `make check` (`pytest`, `ruff check . && ruff format --check .`, `mypy src`),
`make check-full` перед PR.
**Добавлено** (в скобках — задача `openspec/changes/slice-0-skeleton/tasks.md`):
- `api/src/parser/` — интерфейс `Parser` и заглушка `NullParser`; разбор ОСВ §1 и форм §12 — чистые функции над
книгой Excel, Срезы 2+;
- `api/src/contract/` — pydantic-модели контракта v1.0 (запрос, результат, конверт); `api/contracts/` — копии схем (идентичность с
`../docs/contracts` проверяется в `make check`) — 3.1;
- `api/rules/` — README о назначении; сами словари `*.yaml` (в документах `rules/*.yaml` относительно `api/`)
появятся в Срезе 2 — 4.1;
- `api/src/core/nats.py` и `api/src/core/worker.py` — подписка queue group `tabular-parser` на
`recognition.tabular.request` → ack → S3 `uploads/` → парсер → S3 `results/` → `recognition.result` — 4.2–4.3;
- `api/pyproject.toml` (ruff, mypy) и `Makefile` — 2.1; `Dockerfile`, `api/.env.example`, `api/.env.test` — 2.2.
Проверки: `make check` (`pytest`, `ruff check . && ruff format --check .`, `mypy src`), `make check-full` перед PR.

View File

@ -87,6 +87,8 @@ openspec/ требования и дельта текущего ср
| `make check-full` | `make check` + `make test-integration` + `docker build`; запускать перед PR |
| `make up` | `docker compose -f ../docs/dev/docker-compose.yml up -d --wait postgres nats minio` |
Интеграционные тесты (`make test-integration`, `make check-full`) поднимают сервис в процессе теста и вступают в queue group `tabular-parser` на реальной шине: на шине compose не должно работать другого экземпляра tabular-parser (и наоборот: на время теста in-process воркер ответит `NOT_IMPLEMENTED` на реальные запросы других производителей).
## Запуск локально против compose
```bash