67 Commits

Author SHA1 Message Date
Andrey Epifancev
31d3742dd5 design nats-env-config: R-14 — ветки перебазированы на main
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-13 13:39:22 +04:00
Andrey Epifancev
62d7fd780e openspec: nats-env-config — решения R-8…R-13 в design.md (#80)
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-13 13:38:50 +04:00
Andrey Epifancev
32fa327621 docs: правки по финальному ревью nats-env-config (M-1, M-2, M-5)
- dev/README.md: примеры /healthcheck дополнены subjects по сервисам
- design.md (решение 7) и dev/README.md: уточнено, что запросы в тестах ядра идут на умолчательные subject'ы
- repo-templates: имена files.* помечены как умолчания

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-13 13:38:50 +04:00
Andrey Epifancev
0103c6fea7 openspec: nats-env-config — отмечены пункты 1.x и 2.x tasks.md (#80)
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-13 13:38:50 +04:00
Andrey Epifancev
4d9e81c04b docs: subject'ы и JWT NATS по окружению — архитектура, окружение, OQ-83 (#80)
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-13 13:38:50 +04:00
Andrey Epifancev
da9b9f66cf openspec: change nats-env-config — subject'ы и JWT NATS по окружению из OpenBao
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-13 13:38:50 +04:00
Andrey Epifancev
2bb0e999c0 openspec: архив сквозного change console-files (#90)
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
2026-10-10 10:06:16 +04:00
Andrey Epifancev
40b3b92714 docs: правки по финальному ревью — рабочий стол, права, формулировки (#90)
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
2026-10-09 23:44:04 +04:00
Andrey Epifancev
9ba8d29033 docs: QA-гайд, OQ-160 (целевая модель версий), план срезов — файлы консолидации (#90)
QA-гайд переведён на маршрут консоли (POST /consolidations/{cid}/legal-entities/{le}/files),
OQ-159 закрыт, OQ-160 добавлен, Срез 2d дополнен, решения R-9…R-14 в design.md,
config.yaml переведён на DBML v5.18, формулировка SUPERSEDED выровнена.

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
2026-10-09 23:35:53 +04:00
Andrey Epifancev
a329e5e9fb openspec: change console-files — файлы в контексте консолидации (#90)
Спека по решениям владельца 09.10.2026: stored_file.consolidation_id (период, не версия),
маршруты /consolidations/{cid}/legal-entities/{le}/files, рабочий стол = DESK ∪ BOUND,
заморозка через consolidation_document и ЕХ. Дочерние change'и — arm-core и arm-web.

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
2026-10-09 22:36:12 +04:00
Andrey Epifancev
afe40c70da openspec: архив nats-files-subjects (#74)
Change слит PR #77; спеки обновлены (subject'ы files.tabular_uploaded,
files.img_uploaded, files.tabular_parsed).

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_012vJkmBGKKqMoEMzvsXG3y2
2026-10-08 23:50:10 +04:00
Andrey Epifancev
0f1686498e openspec: nats-files-subjects — дочерние change'и сервисов готовы (#74)
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_012vJkmBGKKqMoEMzvsXG3y2
2026-10-08 23:46:26 +04:00
Andrey Epifancev
50e588b6bd contracts: subject'ы NATS как в старом АРМ — files.*_uploaded, files.tabular_parsed (#74)
Решение владельца 08.10.2026: запросы — files.tabular_uploaded / files.img_uploaded
(было recognition.{tabular|image}.request), ack и результаты обоих сервисов —
files.tabular_parsed (было recognition.result); files.img_parsed не используется,
старый АРМ гасится. Тела сообщений, Nats-Msg-Id, queue group'ы и schema_version
не меняются.

Change nats-files-subjects: дельта recognition-contract (3 требования), Purpose
спеки; описания subject'ов в contracts/*.schema.json; 03-architecture (схема,
таблица потоков, NATS платформы), 09-delivery-plan, dev/README, dev/qa-guide,
repo-templates. DBML v5.17 не поднимается (R-3, deferred).

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_012vJkmBGKKqMoEMzvsXG3y2
2026-10-08 23:34:01 +04:00
Andrey Epifancev
42af562635 openspec: архив документного change slice-2b-statement-parser (2026-10-06), recognition-contract «Файл результата» v1.2
Refs #26

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01EAKRDNzXtRrwmWz9z6PZu3
2026-10-06 22:41:10 +04:00
Andrey Epifancev
5b34868784 docs(2b): OQ-143 реализовано, st07, текст пропуска листов, tasks.md по факту (O-9, M-2, M-4)
Refs #26

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01EAKRDNzXtRrwmWz9z6PZu3
2026-10-06 21:58:24 +04:00
Andrey Epifancev
94846cbd4c openspec: сквозная спека Среза 2b — контракт результата v1.2, §12, OQ
Proposal, design (состав v1.2: DISCLOSURE, statementDocument.checks, границы периода ОСВ; примеры; порядок
раскатки потребители → производитель), дельта recognition-contract «Файл результата» v1.2, tasks.

Refs #26

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
Claude-Session: cedd7915-2efe-41e5-988c-a9117033598b
2026-10-06 13:21:30 +04:00
Andrey Epifancev
dbc784abc5 openspec: архив документного change slice-4-consolidation (2026-10-06)
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_012vJkmBGKKqMoEMzvsXG3y2
2026-10-06 10:39:54 +04:00
Andrey Epifancev
9246a61439 docs(slice-4): правила §2/§3/§9/§10 по факту, OQ, контракт API для фронта, QA-гайд
- 05-domain-rules: §2 (выбор источников, склейка, пробелы, Q1-эквивалентность), §3 (явная привязка, дорезолв, match_kind,
  кандидаты, ручное сопоставление), §9.1 (переходы Среза 4), §9.3, §9.5 (отвязка при автозамене, OQ-110), §10 (политика
  «в работе + своя блокировка»)
- 03-architecture: консолидации, чистый домен свода, порядок блокировок
- 07-open-questions: закрыты OQ-03, OQ-19, OQ-110 (Срез 4), OQ-40 принят; добавлены OQ-118…OQ-129
- 09-delivery-plan, 10-user-journey: Срез 4 по факту, эндпоинты у шагов 2.1–2.6 и 3.1
- dev/api-contract-slice-4.md: маршруты, схемы, коды ошибок, нюансы для фронта
- dev/qa-guide: раздел 7 «Консолидация через API»

Co-Authored-By: Claude Sonnet <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_012vJkmBGKKqMoEMzvsXG3y2
2026-10-06 08:02:50 +04:00
Andrey Epifancev
ab564c1ab0 docs: DBML v5.16, entities-v5.16, guide
DBML v5.16 (Срез 4): enum counterparty_match_kind и osv_entry.counterparty_match_kind; уточнение семантики
consolidation_document (точки привязки/отвязки) и consolidation_lock (без истечения, OQ-119). entities-v5.16.md,
04-data-model-guide (DECISION-5: способ сопоставления хранится, пробелы и свод — нет), repo-templates -> v5.16,
tasks.md change'а: пункт 1 выполнен.

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_012vJkmBGKKqMoEMzvsXG3y2
2026-10-06 03:23:03 +04:00
Andrey Epifancev
92b46c9dbe spec(slice-4): документный OpenSpec change — DBML v5.16, правила §2/§3/§9/§10 по факту, OQ-03/19/110 и новые OQ
Proposal, design и tasks сквозного change'а Среза 4: enum counterparty_match_kind и колонка osv_entry.counterparty_match_kind,
правила приведения периодов (ключ, пробел), явная привязка документов, статусы Среза 4, контракт API для фронта.

Refs RSHB/arm-ka-docs#19

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_012vJkmBGKKqMoEMzvsXG3y2
2026-10-06 02:52:32 +04:00
Andrey Epifancev
6acc083357 openspec: архив change slice-2c-osv-ingest (2026-10-06)
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_012vJkmBGKKqMoEMzvsXG3y2
2026-10-06 01:58:04 +04:00
Andrey Epifancev
45ee08c0f8 docs: §1.3/§1.5/§3/§9 по факту маппинга, архитектура (цикл маппинга), OQ, план срезов, qa-guide
05-domain-rules: §1.3, §1.5, §3 п. 4, §9.2–9.3, новый §9.5 (загрузка, маппинг, автозамена, подтверждение, удаление, аудит).
03-architecture: цикл маппинга, порядок блокировок, схема ключей S3. 07-open-questions: закрыты OQ-67/69/70/59/109,
новые OQ-110…116. 09-delivery-plan: Срез 2c по факту. dev/qa-guide: раздел 6.6 «Загрузка ОСВ и просмотр строк через API».
tasks.md: 2.1 выполнен.

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_012vJkmBGKKqMoEMzvsXG3y2
2026-10-06 00:11:52 +04:00
Andrey Epifancev
5545ee539f docs: entities-v5.15, guide, ссылки на DBML v5.15
entities-v5.15.md — копия v5.14 + «Что изменилось в v5.15» (osv_data_type NU, email в нижнем регистре, семантика
stored_file.status); 04-data-model-guide и шаблон CLAUDE.md arm-core — на v5.15; tasks.md change'а: 1.2 выполнена.

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_012vJkmBGKKqMoEMzvsXG3y2
2026-10-05 21:27:52 +04:00
Andrey Epifancev
c821e0fbfe OpenSpec: change slice-2c-osv-ingest (DBML v5.15, правила маппинга ОСВ в ядре, OQ) и data-model-v5.15.dbml
Issue: RSHB/arm-ka-docs#16

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_012vJkmBGKKqMoEMzvsXG3y2
2026-10-05 21:08:49 +04:00
Andrey Epifancev
e369f289c7 openspec: архив change slice-2a-osv-parser; OQ-60/61/62/64/65/66/82 по техдолгу arm-core #10; qa-guide — настройки .env, вход по email, HTTPS-клон
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_012vJkmBGKKqMoEMzvsXG3y2
2026-10-05 20:23:36 +04:00
Andrey Epifancev
c2005a4699 docs: финальное ревью Среза 2a — §1 (лимиты чтения, ИНН, ACCOUNT_RE, риски R-21), OQ-106…OQ-109
- 05-domain-rules §1.0 п. 1: признак ОСВ в первых 30 строках листа; п. 4, §1.3: ИНН по значениям без дополнения
  нулём, дополнение при извлечении (R-24); ACCOUNT_RE с re.ASCII | re.DOTALL (M-1); §1.4: остаточные риски R-21
  (RR-1…RR-4, слепые зоны); §1.6: лимиты чтения (R-23), логирование.
- 06-test-data §3 п. 17: ИНН в тексте строки — ОСВ 76 Счастливочной за 1–3 кв. 2024 (6 + 7 + 7 строк).
- 07-open-questions: OQ-106 (Итого = первый корень), OQ-107 (hierarchy=sums), OQ-108 (defusedxml, лимиты чтения),
  OQ-109 (размер объекта S3 до скачивания); OQ-105 ссылается на риски §1.4.
- OQ-81 «частично закрыт» в 09-delivery-plan, tasks.md и proposal.md change.
- contracts/examples/result-osv-needs-check.json — как пишет парсер (копия tabular-parser байт в байт).

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_012vJkmBGKKqMoEMzvsXG3y2
2026-10-05 16:32:52 +04:00
Andrey Epifancev
baeb9189f6 docs: §1 по факту парсера, 06-test-data, план срезов 2a–2d, OQ, пример контракта
- 05-domain-rules §1: обязательные группы (R-12), hierarchy=<имя>, TOTAL в rows, буквенные субсчета и Вал./Кол. (R-16, R-18, R-19), ИНН (R-15, R-17), сверка по нетто (R-21), R-20, пустая ОСВ, ASSUMPTION(OQ-02), новый §1.6 (статусы, коды, лимиты, словари)
- 06-test-data: синтетика s01–s16, golden (82 снимка), рукописный xlsb, пустые ОСВ, буквенные субсчета
- 09-delivery-plan: Срез 2 → 2a–2d, 2a по факту
- 07-open-questions: OQ-98…OQ-105, пометки допущений парсера у OQ-01/02/45, OQ-81 частично закрыт
- contracts/examples/result-osv-needs-check.json: ACCOUNT в group_schema, ИНН из колонки, «Вал.» без контрагента, строка TOTAL
- openspec tasks.md: 1.2, 2.1

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_012vJkmBGKKqMoEMzvsXG3y2
2026-10-05 15:53:11 +04:00
Andrey Epifancev
ec7c42f964 contracts: результат v1.1 — rows[].extra (§1.2), пример needs_check
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_012vJkmBGKKqMoEMzvsXG3y2
2026-10-05 11:56:16 +04:00
Andrey Epifancev
d57b5bc378 OpenSpec: change slice-2a-osv-parser (контракт v1.1 rows[].extra, декомпозиция Среза 2, уточнения §1 — спека)
Issue: RSHB/arm-ka-docs#9

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_012vJkmBGKKqMoEMzvsXG3y2
2026-10-05 11:42:09 +04:00
Andrey Epifancev
01767fd2b9 chore(openspec): архив change slice-1-directories (2026-10-05)
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_012vJkmBGKKqMoEMzvsXG3y2
2026-10-05 11:09:08 +04:00
Andrey Epifancev
70ba5e9db8 docs: Срез 1 — entities-v5.14, guide, план срезов, индексы, сверка §13 с кодом
- model/entities-v5.14.md: таблица «Что изменилось в v5.14», related_group_member (ГСК и ГСЗ одновременно), audit_event
- context/04: файлы и partial unique (legal_entity_id, kind) v5.14, OQ-31/32 закрыты
- ссылки на v5.14: 00, 03, 05, KICKOFF-PROMPT, dev/checks.md, openspec/config.yaml, repo-templates/arm-core.CLAUDE.md
- 09: Срез 1 по факту (вариант Б), перенос UI справочника; 10: статус экранов справочника и /admin
- 08: выгрузка ЕЦП; 06: §6.1 фикстура directories/ecp-export-russkiy-biskvit.xlsx
- 05 §13: сверка с ImportCode (добавлен GSZ_CREATED, перечень 16 кодов), порядок проверок, уточнения реализации,
  лимиты файла, ошибки файла, след в аудите и S3
- tasks.md: 2.1–2.3, 3.1 выполнены

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_012vJkmBGKKqMoEMzvsXG3y2
2026-10-05 11:09:03 +04:00
Andrey Epifancev
0826be0cad Срез 1: DBML v5.14, §13 импорт из ЕЦП CRM, §10.1 видимость, OQ-86…91, change slice-1-directories
- data-model-v5.14.dbml: related_group_member.kind + partial unique (legal_entity_id, kind) WHERE is_current
  (ЮЛ одновременно в одной ГСК и одной ГСЗ — решение владельца 04.10.2026), audit_action + LEGAL_ENTITY_CHANGE,
  USER_CHANGE; КПП не вводится.
- 05-domain-rules.md: §13 правила импорта выгрузки ЕЦП (формат, построчные коды, транзакция, след, ручные операции),
  §10.1 видимость справочников по филиалу без кода роли.
- 07-open-questions.md: OQ-31/32 закрыты, OQ-25 уточнён по выгрузке, добавлены OQ-86…OQ-91.
- source/biq/ecp-export-lagal-entity.xlsx — первоисточник формата (добавлен владельцем).
- openspec/changes/slice-1-directories: proposal, design, tasks (skip_specs).

Issue: RSHB/arm-ka-docs#6

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_012vJkmBGKKqMoEMzvsXG3y2
2026-10-04 20:22:26 +04:00
Andrey Epifancev
49d9eca082 chore(openspec): архив change slice-0-skeleton
Срез 0 реализован и влит (PR #3), change перенесён в openspec/changes/archive, спеки — в openspec/specs.

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_012vJkmBGKKqMoEMzvsXG3y2
2026-10-04 19:44:29 +04:00
Andrey Epifancev
b2f8aaa17e docs: .env.example — scan-gateway тоже отвергает OPENBAO__DATABASE__* (N-1 финального ревью)
В OpenBAOSettings scan-gateway нет поля DATABASE (extra_forbidden), поэтому общий dev/.env.example
годится только arm-core как есть. Исправлены комментарий в .env.example, раздел dev/README.md,
решение №44 в design.md и OQ-84.

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_012vJkmBGKKqMoEMzvsXG3y2
2026-10-04 07:26:37 +04:00
Andrey Epifancev
1568d49cd9 chore: отметить задачу 6.3 выполненной
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_012vJkmBGKKqMoEMzvsXG3y2
2026-10-04 07:24:35 +04:00
Andrey Epifancev
bf893959df docs(openspec): recognition-contract — источник attempt только из тела, расхождение сервисов в THEN (OQ-71)
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-10-04 07:17:53 +04:00
Andrey Epifancev
050f59a384 docs: сценарий venv против compose не проверен — design #43/#44, OQ-84, README и .env.example без устаревшей обязательности SMB
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-10-04 07:17:21 +04:00
Andrey Epifancev
cdfac6c74b docs: 06-test-data — поиск пары эмулятором, design #36 — паузы по сервисам
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-10-04 07:03:47 +04:00
Andrey Epifancev
172d30a8b1 docs(openspec): спека recognition-contract — ack только на корректный запрос, источник attempt
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-10-04 07:03:35 +04:00
Andrey Epifancev
6000cab892 docs(dev): README — венв-черновик без ссылок на 5.4, legal_entity в проверке окружения
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-10-04 07:03:13 +04:00
Andrey Epifancev
04cdbd6cc4 docs(openspec): design.md — замыкающий | у решений 24–25
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-10-04 07:02:56 +04:00
Andrey Epifancev
c32c904197 chore: отметить задачу 6.2 выполненной
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_012vJkmBGKKqMoEMzvsXG3y2
2026-10-04 07:02:15 +04:00
Andrey Epifancev
55118120ad docs(openspec): design.md — решения 39–42 (рулинги задачи 6.2)
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-10-04 06:53:00 +04:00
Andrey Epifancev
f8111cc383 chore: отметить задачу 6.1 выполненной
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_012vJkmBGKKqMoEMzvsXG3y2
2026-10-04 06:49:08 +04:00
Andrey Epifancev
dc64d9a214 docs(openspec): design.md — решения 34–38 (рулинги задачи 6.1)
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-10-04 06:41:55 +04:00
Andrey Epifancev
2423854f27 docs(openspec): recognition-contract — SCHEMA_MISMATCH без ack, нечитаемый запрос, повторы публикации, примеры как иллюстрации
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-10-04 06:41:29 +04:00
Andrey Epifancev
a11eba028f chore: отметить задачу 5.4 выполненной
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_012vJkmBGKKqMoEMzvsXG3y2
2026-10-04 06:38:58 +04:00
Andrey Epifancev
29e74b875f docs(openspec): design.md — решения 30–33 (сквозная проверка окружения)
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_012vJkmBGKKqMoEMzvsXG3y2
2026-10-04 06:17:45 +04:00
Andrey Epifancev
e705080e55 chore: отметить задачу 5.3 выполненной
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_012vJkmBGKKqMoEMzvsXG3y2
2026-10-04 06:01:46 +04:00
Andrey Epifancev
f6e14c2195 docs(openspec): design.md — решения 26–29 (профиль services в compose)
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_012vJkmBGKKqMoEMzvsXG3y2
2026-10-04 05:44:05 +04:00