248 Commits

Author SHA1 Message Date
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
b60ed850a0 docs(dev): уточнить OQ-83 и SecretStr для NATS_JWT/NATS_SEED
- Шапка черновика интеграционных тестов: OQ-83 закрыт частично
  (тесты tabular-parser и scan-gateway идут на своих subject'ах),
  make e2e ядра остаётся открытым (design R-7).
- Утверждение про SecretStr вынесено в отдельное предложение.

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
1462553cb6 contracts: subject'ы запроса и ответа — настройки окружения (nats-env-config)
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-13 13:38:50 +04:00
Andrey Epifancev
e197bd53e3 План nats-env-config: путь к venv сервиса
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-13 13:38:50 +04:00
Andrey Epifancev
2f7b65e0a1 План реализации nats-env-config (#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
aep
0d3b2c85b6 Merge pull request 'Правила ОСВ: реквизит «Контрагенты.ИНН» под контрагентом, OQ-162 (tabular-parser #32)' (#98) from feat/32-osv-inn-subconto into main
Reviewed-on: #98
2026-10-13 11:19:41 +03:00
Andrey Epifancev
7ca0082664 Правила ОСВ: реквизит «Контрагенты.ИНН» и в шапке варианта 1 (tabular-parser #32)
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-13 12:03:10 +04:00
Andrey Epifancev
820492443a Правила ОСВ: реквизит «Контрагенты.ИНН» строкой под контрагентом, OQ-162 (tabular-parser #32)
§1.1 — элемент «<группировка>.ИНН» в списке субконто варианта 2 — реквизит,
не группировка; §1.3 — строка реквизита отдаёт ИНН родительскому контрагенту
и уходит из rows (условия склейки, needs_check, пустая ячейка — R-1), целое
число из ячейки xls — без «.0». OQ-162 — решение владельца 13.10.2026.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-13 11:11:11 +04:00
aep
4fe8161d0a Merge pull request 'OQ-161 и временный режим «период ОСВ из версии консолидации» (#96)' (#97) from feat/96-osv-period-from-version into main
Reviewed-on: #97
2026-10-12 19:05:55 +03:00
Andrey Epifancev
28bb9112c7 docs(qa-guide): перепривязка при периметре из двух ЮЛ, результат проверки на стенде (#96)
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-12 19:44:37 +04:00
Andrey Epifancev
410e96d643 docs: режим «период из версии» — только ОСВ «не того» периода (#96)
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-12 19:42:31 +04:00
Andrey Epifancev
24c7e48600 docs: OQ-161 и временный режим «период ОСВ из версии консолидации» (#96)
- 07-open-questions.md: OQ-161 — документ с периодом не той версии молча не привязывается;
  временное допущение CONSOLIDATION_PERIOD_FROM_VERSION (arm-core#103), постоянное решение открыто
- qa-guide.md: §7.4 — как включить режим локально и в контуре, ограничения; строка в §9
- contour-transfer-guide.md: OPENBAO__APP__CONSOLIDATION_PERIOD_FROM_VERSION=true на период тестов

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-12 19:18:01 +04:00
aep
c2f9e7af98 Merge pull request 'Скрипт синхронизации arm-core/web с arm-web и проверка отставания в пайплайне переноса в контур (#94)' (#95) from feat/94-sync-web-script into main
Reviewed-on: #95
2026-10-10 09:47:42 +03:00
Andrey Epifancev
e8dbcff83f feat(scripts): sync-web.sh — синхронизация arm-core/web с arm-web и проверка отставания в пайплайне переноса (#94)
Скрипт делает одной командой то, что делалось вручную в arm-core #94 и #100:
точка синхронизации по хэшу дерева src (без хранения состояния), worktree по
абсолютному пути, issue и PR в arm-core через tea, перенос набора (всё кроме
служебного arm-web), контроль diff -rq, проверки vitest/tsc/biome/build до
коммита. Режимы --check (0/10/20), --dry-run, --ref, --core-ref.

prepare-contour-snapshot.sh для arm-core перед снимком вызывает sync-web.sh
--check: при отставании спрашивает «перенести как есть?», «n» запускает
синхронизацию и останавливает перенос (код 3) до merge PR и закрытия issue;
без терминала — флаг --web-as-is; расхождение (прямые правки web/) — стоп.
Тест test_sync_web.sh на синтетических репозиториях, цели make test-sync-web
и sync-web, гайд §3 шаг 0, §3.1, §8.

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
2026-10-10 10:45:35 +04:00
aep
a434f614f4 Merge pull request 'openspec: архив console-files (#90)' (#93) from chore/90-archive-console-files into main
Reviewed-on: #93
2026-10-10 09:08:31 +03: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
aep
07549a4eba Merge pull request 'DBML v5.18: файлы в контексте консолидации — stored_file.consolidation_id, маршруты консоли (#90)' (#91) from feat/90-console-files into main
Reviewed-on: #91
2026-10-09 23:44:54 +03: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
f126c27ac9 dev: гайд фронта — коды ошибок загрузки в консолидацию (#90)
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
2026-10-09 23:36:06 +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
49ccd4e157 dev: маршруты файлов консолидации в гайде фронта, контрактах и пути пользователя (#90)
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
2026-10-09 23:31:50 +04:00
Andrey Epifancev
e4abd1717a rules: §9.1/§9.5 — загрузка в консолидацию и рабочий стол консоли (#90)
Ссылки на текущую модель в 05 и 08 переведены на v5.18 (R-12).

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
2026-10-09 23:30:12 +04:00
Andrey Epifancev
0684481255 model: v5.18 — consolidation_id последней колонкой stored_file (#90)
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
2026-10-09 23:28:52 +04:00
Andrey Epifancev
64ccfe3b89 docs: entities v5.18 и ссылки на модель v5.18 (#90)
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
2026-10-09 23:27:14 +04:00
Andrey Epifancev
c2c95012ea model: DBML v5.18 — stored_file.consolidation_id, рабочий стол консоли (#90)
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
2026-10-09 23:24:57 +04:00
Andrey Epifancev
1cf067cd8b plan: console-files — план для репозитория docs (#90)
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
2026-10-09 23:10:32 +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
aep
ff5a9c8450 Merge pull request 'Срок ответа OCR 20 мин, запись в горячую папку прямо в Input; OQ-159 (#84)' (#87) from feat/84-ocr-timeout-direct-write into main
Reviewed-on: #87
2026-10-09 16:22:13 +03:00
aep
2f482c7b01 Merge pull request 'Инструкция пользователя АРМ КА (прототип arm-web) со скриншотами (#85)' (#86) from feat/85-user-guide into main
Reviewed-on: #86
2026-10-09 16:04:27 +03:00
Andrey Epifancev
fda568c1f4 docs(user): инструкция пользователя АРМ КА по прототипу arm-web со скриншотами (#85)
- docs/user/user-guide.md: вход, меню, группы компаний, новая консолидация, страница ГК, первичные документы, просмотр ОСВ,
  проверка ББ/ОФР, сводная ОСВ (фильтры, пробелы, тип контрагента, сопоставление без ИНН, экспорт), администрирование,
  статусы и термины, ограничения версии
- docs/user/img/: 42 снимка реального стенда (Playwright 1600×1000, arm-web test + arm-core main, 09.10.2026)
- ссылки на инструкцию в dev/README.md и dev/qa-guide.md

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
2026-10-09 16:53:45 +04:00
Andrey Epifancev
f70522e1e0 docs: срок ответа OCR 20 мин, запись в горячую папку прямо в Input (#84)
- 05-domain-rules §9.4, 01-project-overview: OCR 20 мин (парсер 5 мин)
- 03-architecture: scan-gateway пишет прямо в Input с перезаписью, как в старом АРМ
- 07-open-questions: дополнены OQ-58, OQ-79, OQ-137; новый OQ-159 (note DBML «OCR — 5 мин»)

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-09 16:24:08 +04:00
aep
530267e98f Merge pull request 'Гайды: форма ЮЛ одним запросом (arm-core #84)' (#83) from feat/84-le-form-fields into main
Reviewed-on: #83
2026-10-09 13:03:12 +03:00
Andrey Epifancev
d6c616a118 docs(dev): форма ЮЛ одним запросом в гайдах фронта и QA (arm-core #84)
POST/PATCH /directories/legal-entities принимают aliases, gsk_id, gsz_id
(arm-core PR #85): строка в «Что изменилось», §5.3, экраны [51-02]/[79],
«Что перечитать», каталог ошибок (WRONG_GROUP_KIND, ALIAS_EXISTS в форме);
в гайде тестировщика — проверки D25–D30.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-09 13:57:43 +04:00
aep
e3c6419392 Merge pull request 'Полный состав строк ББ/ОФР: §7, OQ-150, гайды (#81)' (#82) from feat/81-statement-template-lines into main
Reviewed-on: #82
2026-10-09 11:53:34 +03:00
Andrey Epifancev
2b3ead461a docs: исправить вставку в §11 и сигнатуры контракта 3b (#81)
M-7: вставка про достройку строк разорвала перечисление в 05-domain-rules.md §11, вынесена отдельным предложением.
M-8: в api-contract-slice-3b.md у LineOut/ValueOut добавлены id | null и origin, у StatementPatch.values - line_id | line_code.

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-10-09 12:31:35 +04:00
Andrey Epifancev
b55db422f8 docs: исправить примеры F8a/F8b в qa-guide (#81)
F8a: line_code 1600 (LINE_EXISTS) и 9999 (вне справочника) с реальным column_id;
F8b: уточнены формулировки; в гайде фронта — текст ошибки при отсутствии редакции.

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-10-09 12:23:48 +04:00
Andrey Epifancev
1851c248fa docs: полный состав строк ББ/ОФР — §7, OQ-150, гайды (#81)
- 05-domain-rules: §7 абзац «Полный состав формы», §11 пометка про достройку строк
- 07-open-questions: OQ-150 — решение владельца 09.10.2026
- frontend-api-guide, api-contract-slice-3b: values[] с line_code, origin, id = null, новые случаи UNKNOWN_CELL
- qa-guide: F8a, F8b, W28a, W28b

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-10-09 12:21:41 +04:00
aep
045604062e Merge pull request 'openspec: архив nats-files-subjects (#74)' (#78) from chore/74-archive-nats-files-subjects into main 2026-10-08 22:50:42 +03: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
aep
d44e4fcb0b Merge pull request 'NATS: subject'ы как в старом АРМ — files.*_uploaded, files.tabular_parsed (#74)' (#77) from feat/74-nats-files-subjects into main
Reviewed-on: #77
2026-10-08 22:47:50 +03: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
aep
24089e50cc Merge pull request 'Снимок для контура: артефакты агента вырезаются на любой глубине (#75)' (#76) from feat/75-snapshot-nested-cleanup into main
Reviewed-on: #76
2026-10-08 22:42:58 +03:00
Andrey Epifancev
7b37e696ca fix(dev): снимок для контура вырезает артефакты агента на любой глубине (#75)
Фронт перенесён в arm-core/web/ из arm-web вместе со своими .claude/, CLAUDE.md,
openspec/config.yaml, docs/superpowers/ и .codegraph/. Скрипт удалял их только в
корне, поэтому в arm-core их пришлось вычищать вручную (arm-core #73).

- prepare-contour-snapshot.sh: удаление и проверка через find по всему дереву;
  опустевшие docs/ убираются; Dockerfile/.dockerignore — по-прежнему только корень
- scripts/test_prepare_contour_snapshot.sh + make test-snapshot (входит в make check):
  синтетический arm-core с артефактами в корне и в web/
- dev/contour-transfer-guide.md §1–§3 и текст SNAPSHOT.md

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_019qoydUVv8g1qHxc123u2RR
2026-10-08 23:42:04 +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
aep
a1eaf60120 Merge pull request 'Сводная ОСВ: отмена П-1 («Осталось N» только без ИНН), ИНН сопоставленного ЮЛ (#72)' (#73) from feat/72-osv-unmapped-no-inn into main
Reviewed-on: #73
2026-10-08 22:02:10 +03:00
Andrey Epifancev
e1482357b0 docs(qa): чек-лист сводной ОСВ — ячейка ИНН по макету, «Показать ЮЛ без ИНН» (#72)
W34 уточнён, новый W34a: ИНН из файла без «Указать», «таблетка» с ИНН ЮЛ у строк, связанных без ИНН в файле,
пересопоставление с «Связано» у текущего ЮЛ (arm-web #17).

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_019qoydUVv8g1qHxc123u2RR
2026-10-08 20:00:08 +04:00
Andrey Epifancev
b619611912 docs(osv): отмена П-1 — «Осталось N» только без ИНН; ИНН сопоставленного ЮЛ в строке свода (#72)
Решения владельца 08.10.2026 (arm-core #74): несопоставленная строка свода — без ЮЛ и без ИНН из файла;
`ConsolidatedRowOut.counterparty_entity_inn` (П-8). Обновлены frontend-api-guide (таблица изменений, п. 10,
схема, пробелы API), api-contract-slice-4, 10-user-journey 3.1, qa-guide (контрольные цифры 1381 → 1260).
Новый открытый вопрос OQ-158: строки аналитики, не являющиеся организациями, в «Осталось N».

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_019qoydUVv8g1qHxc123u2RR
2026-10-08 19:51:01 +04:00