121 Commits

Author SHA1 Message Date
aep
869f5d72b7 Merge pull request '[AURORA-1678]: Чек-лист документов:' (#227) from feat/aurora-1678-check-list-filter into main 2026-11-10 15:46:56 +03:00
Andrey Epifancev
c3a8deb9f5 feat(consolidations): отбор документов чек-листа параметром documents (AURORA-1678)
GET /consolidations/versions/{id}/checklist принимает documents
(BALANCE, INCOME, OSV:<счёт> через запятую) и отдаёт только эти правила
и их ячейки — в JSON и CSV; неверный список — 422 INVALID_DOCUMENTS.
Фронт PR #227 уже передаёт параметр при скачивании CSV из окна чек-листа.

OpenSpec change checklist-documents-filter: дельта consolidations-api
(«Чек-лист комплекта») и consolidations-ui (окно чек-листа, фильтр
«Документы»); README — параметр и код ошибки.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-11-10 16:42:00 +04:00
dbc43a1203 Merge branch 'main' into statements-lib 2026-11-10 13:46:00 +03:00
Andrey Epifancev
5a5e5a25ad merge: влить origin/main в feat/190-ocr-metrics (I-10)
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>

# Conflicts:
#	web/src/auth/permissions.ts
2026-11-07 04:14:40 +04:00
Andrey Epifancev
4593cdc62c docs(#190): M-10 format=csv в README, M-14 ссылка R-4 в docstring, M-16 CLAUDE.md про аудит выгрузки метрик
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-11-07 04:14:24 +04:00
Andrey Epifancev
3f6bd96388 docs(#190): дельты OpenSpec quality-metrics, README, CLAUDE.md, правки design/proposal (I-7, M-4, M-5, M-7)
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-11-07 04:01:45 +04:00
aep
d1e3000dc0 Merge pull request 'feat/goodwillback: бэкенд гудвилл' (#222) from feat/goodwill-back into main 2026-11-06 18:07:13 +03:00
Andrey Epifancev
3bfcc2e2aa Гудвилл: контракт в docs, README, OpenSpec под ревью
Тест контракта читает ../docs/dev/api-contract-goodwill.openapi.yaml (без docs — skip);
README: раздел гудвилла и коды INVALID_SHARE/DUPLICATE_ROW/MONEY_OUT_OF_RANGE;
OpenSpec goodwill-table: пакетное сохранение, доля два знака, итоги по ГО и УК,
единицы, Decisions made without discussion R-1…R-6.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-11-06 18:41:20 +04:00
Andrey Epifancev
df4e171cc5 AURORA-1756: подписи итогов в xlsx — «Итого Дт» / «Итого Кт», как на экране и в DOC-221277
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-11-06 17:00:46 +04:00
Andrey Epifancev
6faa4fb325 AURORA-1756: ревью #218 — без общего итога, total_debit, change OpenSpec
- grand_total результирующей таблицы убран из API и xlsx: аналитик 03.11 попросил
  убрать итог снизу, сумма ДЗ + КЗ + ФВ + займов смысла не имеет
- total_debet переименовано в total_debit, как во всём API
- итоги матрицы квантуются до двух знаков ("0.00" и при одном ЮЛ)
- правки openspec/specs перенесены в change intercompany-matrix-totals
- README: фильтр ЮЛ и итоги

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-11-06 16:42:52 +04:00
94895b6de7 feat/goodwillback: бэкенд гудвилл 2026-11-05 15:36:14 +03:00
Andrey Epifancev
251c30d5ca feat(#190): DBML v5.25 — ORM и миграция фактов качества первички
Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
2026-11-05 15:49:15 +04:00
PotapovaA
994d6be94c объеденение эндпоинтов для all, manual и добавления для них суммы по дебету, кредиты в по юл 2026-11-03 17:45:54 +03:00
Andrey Epifancev
096df6aa36 Merge remote-tracking branch 'origin/main' into statements-lib 2026-11-02 14:18:33 +04:00
Andrey Epifancev
7384471db3 Ревью #208: привести README/OpenSpec в соответствие с фактическим диффом
- README: вернуть потерянный абзац-предупреждение про e2e и queue group
  (был затёрт вставкой нового раздела); описание раздела про корректировки
  поправлено под архитектуру CorrectionAggregateSource (1540 не читает
  vgo_assignment напрямую, см. design.md Decision 1).
- design.md: Non-Goals ложно утверждал "DBML/ORM/миграция не меняются",
  хотя в ветке есть миграция 0011 (vgo_assignment, AURORA-1751); уточнена
  граница ответственности и добавлено пояснение в Migration Plan.
- tasks.md: зафиксировано, что make dbml-check не выполнялся — DBML v5.24
  ещё не существует в arm-ka-docs, вопрос поднимается отдельно.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
2026-11-02 12:19:05 +04:00
086050cc87 feat/corrections-back: Корректировки по ручным праавкам в vgo_assignments 2026-10-29 19:13:58 +03:00
Andrey Epifancev
397a1a7aef fix(counter-pairs): правки финального ревью (I-1, I-2, I-3, M-1, M-2, M-3, M-5)
Подпись пары без служебных слов, тест пары на фикстурах РБ, модалка при уходе с «ОСВ» на любую вкладку,
без «Экспорт» в режиме пар, README и ARCHITECTURE, таблица решений design.md.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-27 19:22:25 +04:00
Andrey Epifancev
97896a4ec3 statements-version: сверка checkout библиотеки с requirements.txt в make venv/install; тег — из requirements (AURORA-1677)
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-27 17:07:13 +04:00
Andrey Epifancev
f159b945c5 Влил main в ветку ревью AURORA-1677
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-27 16:33:16 +04:00
ed1ad8437f AURORA-1677: Dockerfile fix 2026-10-27 10:11:24 +03:00
fb981cf3b2 AURORA-1677: arm_statements теперь библиотека 2026-10-24 11:28:57 +03:00
Andrey Epifancev
8940f32ae3 fix: пары ВГО — суммы со знаком, процент в упаковке, deviation_amount (ревью #175, AURORA-1536)
- суммы сторон со знаком, как в шахматке; строки с суммой < 0 в упаковку не идут, причина NEGATIVE_AMOUNT;
  при min(ΣA, ΣB) ≤ 0 процент null и элиминация 0, статус списка AUTO — только при элиминации > 0
- группы одного размера выбираются по проценту расхождения к меньшей сумме (точной дробью), ничья — по равному проценту
- elimination_amount группы и тройки переименован в deviation_amount; version_no тройки обязателен
- суммы и проценты пар в JSON — с двумя знаками
- elimination-pairs по правилу с measure ≠ closing — 422 INVALID_RULE
- дельта спеки, design.md (R-7, R-8), tasks, README

make check-full: exit 0 (1896 passed; integration 990 passed).

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-23 21:47:47 +04:00
Andrey Epifancev
fdb1f179cc docs(openspec): elimination-pairs-rule-totals — дельта вместо правки основной спеки, решения, README (ревью #175)
Основная спека consolidations-api возвращена к main: фиксация версии правил,
пары тройки и список версии — в дельте change (MODIFIED «Создание
консолидации», ADDED «Пары ВГО тройки», «Пары ВГО версии», «Правила
элиминации зафиксированной версии», REMOVED старое требование правил);
data-model — DBML 5.23 и миграция 0010. design.md — решения владельца 23.10
и «Decisions made without discussion» R-1…R-6.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-23 18:44:31 +04:00
Andrey Epifancev
b4522addc0 feat: DBML v5.23 — версия правил обязательна; список пар ВГО версии (ревью #175, AURORA-1536)
- consolidation_version.elimination_rules_version NOT NULL: миграция 0010
  проставляет существующим версиям номер правил, действовавших на дату
  создания (по Москве), иначе последних открытых; без правил — отказ;
  создание версии без действующих правил — 409 ELIMINATION_RULES_MISSING;
  ветки «правила не зафиксированы» убраны (rules, preset, is_version_fixed
  всегда true);
- GET …/elimination-totals: все тройки «правило ББ × упорядоченная пара
  периметра» с ΣA, ΣB, расхождением, суммой элиминации, статусом
  AUTO/DISCREPANCY/ONE_SIDED/MANUAL и osv_entry_ids; сводная ОСВ строится
  один раз; сбор строк сторон вынесен в _collect_rule_sides — общий
  с упаковкой тройки.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-23 18:42:10 +04:00
Andrey Epifancev
b5520696ef chore: DBML v5.22 — версия ORM и ссылки (ревью #161, AURORA-1446)
v5.22 структуру БД не меняет (comment.object_type: убраны chess_cell и
kfo_result_line из описания), миграция не нужна.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-23 17:59:35 +04:00
Andrey Epifancev
e13cd88fea Merge origin/main в feat/renew-processing-timeout (ревью #161, раунд 2)
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-23 17:59:00 +04:00
Andrey Epifancev
f3abc8c01c fix(api): CORS открывает фронту Content-Disposition (#173, AURORA-1532)
При фронте на другом источнике (web :3000, api :8000) браузер не отдавал JS
заголовок Content-Disposition, и экспорт сводной ОСВ, шахматки, таблицы ВГО
и CSV чек-листа сохранялся под запасным именем (qa-guide W35).
expose_headers=["Content-Disposition"] в обоих режимах cors_options.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-23 16:54:23 +04:00
622a60e4e0 AURORA-1442: Правки по раунду 1 2026-10-23 13:39:30 +03:00
Andrey Epifancev
0db60b7315 docs: change intercompany-matrix-one-sided и README — one_sided по суммам, ALL без забалансовых (AURORA-1651)
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-22 23:45:57 +04:00
Andrey Epifancev
5275d80fa1 README: ссылка на раздел шахматки гайда фронта §5.7.1 (ревью #141)
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-22 18:48:06 +04:00
Andrey Epifancev
d096459c75 docs: change intercompany-matrix-presets и README — ревью #141, раунд 2 (AURORA-1747)
README: возвращена фраза про XLSX результирующей таблицы, потерянная при merge.
Change: отменённое решение 4, ветка-закладка wip/shahmatka-corrections-unpaired,
ссылки на снятый раздел Known issues, шапка xlsx пресета — счета правила и «кроме»,
статьи сторон при side_1 = K, tasks раунда 2.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-22 18:47:04 +04:00
Andrey Epifancev
98f00c0faa docs: change retry-recognition-and-edit-osv-header, README и CLAUDE.md — DBML v5.21 (ревью #161)
Дельта data-model переименована на v5.21, пакет — только файлы в ERROR,
tasks — ссылки на docs PR #157 и задачи ревью; config.yaml — DBML v5.21.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-22 17:13:41 +04:00
4f44d34d59 AURORA-1442: ручки возобновления обработки файла или версии консолидации, ручка обновления данных по осв 2026-10-22 14:25:19 +03:00
PotapovaA
3de0c90198 refactor(matrix): удалить unpaired-osv из ветки пресетов 2026-10-21 19:32:23 +03:00
PotapovaA
9e39c4d426 feat(matrix): понятное имя и реквизиты правила в XLSX пресета 2026-10-21 18:59:25 +03:00
PotapovaA
b078933428 fix(audit): сохранять номер и версию правила в экспорте пресета 2026-10-21 18:54:58 +03:00
PotapovaA
3eb5362e58 fix(matrix): выбирать последнюю открытую версию правил 2026-10-21 18:51:06 +03:00
PotapovaA
e9dc67b2e9 refactor(matrix): вынести применение корректировок из ветки пресетов 2026-10-21 18:40:05 +03:00
Andrey Epifancev
0e95f95c71 docs(openspec): change intercompany-matrix-presets + README (ревью #141)
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-10-21 14:08:08 +04:00
Andrey Epifancev
7e05cdedf6 docs(web): README, CLAUDE.md и ARCHITECTURE.md фронта — из arm-web в arm-core/web (#148)
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-21 09:52:56 +04:00
Andrey Epifancev
e6292a24df fix(statements): fix-волна части Б — is_recognized NULL, единый источник ошибки файла, тесты правки форм 2.0
I-2: NULL у is_recognized не сомнение (P3-54); I-3: metrics.file_warnings при приёме 2.0 — единый
источник для пересчёта (P3-53, R-11); I-4/T4.4/T6.1: тесты правки, акцепта и веток приёма 2.0;
T4.2: now в checks_on_intake_1x; M-4: row_by_ref по принятым строкам; документация (M-5, M-6, M-7).

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-18 22:38:24 +04:00
Andrey Epifancev
570e82b5d3 refactor(statements): удалена копия словаря §7 ядра — проверки копией arm_statements
Удалены api/rules/statement_checks.yaml, load_check_rules, run_checks и правила соотношений; в
domain/statement_checks.py остались межформенная проверка 1370/2400 и subline_parents. Тест
test_name_dictionary_codes_in_code_orders сверяет справочник имён с перечнями редакций пакета.
CLAUDE.md и README.md: §7 — копия arm_statements, нарушения хранятся в document_issue. Решения P3-50…P3-52.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-18 22:08:27 +04:00
Andrey Epifancev
70abf87809 docs(readme): JobBrief.warnings — структуры (A5)
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>

Claude-Session: https://claude.ai/code/session_01BJKMLHdxMwSUeYcdkwqX4W
2026-10-18 19:29:24 +04:00
Andrey Epifancev
8296c77fe5 fix(api): OpenAPI-коды ошибок PATCH формы, confirm и crm_id; organization_name:null — 422 (I-2, M-11)
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01BJKMLHdxMwSUeYcdkwqX4W
2026-10-18 19:04:40 +04:00
Andrey Epifancev
3753e32219 feat(statements): PATCH lines — назначение кода, расшифровка, подтверждение кода, LINE_CODE_TAKEN
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01BJKMLHdxMwSUeYcdkwqX4W
2026-10-18 19:04:40 +04:00
Andrey Epifancev
f1fcb861a6 feat(statements): PATCH — подтверждение ячейки, дата колонки, наименование организации, подтверждение даты
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01BJKMLHdxMwSUeYcdkwqX4W
2026-10-18 19:04:40 +04:00
Andrey Epifancev
361e7094e3 feat(documents): порядок 409 подтверждения формы — LINES_UNRESOLVED, DUPLICATE_FORM
form_confirmable заменён на form_blocker: PERIOD_REQUIRED -> LINES_UNRESOLVED -> DUPLICATE_FORM -> CHECKS_NOT_PASSED.
Ручное и автоподтверждение используют одну функцию.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01BJKMLHdxMwSUeYcdkwqX4W
2026-10-18 19:04:40 +04:00
Andrey Epifancev
65a833fd98 feat(api): StatementOut и DocumentOut по v5.19 — статусы строк, needs_review, issues, порядок строк
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01BJKMLHdxMwSUeYcdkwqX4W
2026-10-18 19:04:40 +04:00
Andrey Epifancev
782580beb4 feat(scripts): purge_statements — очистка форм ББ/ОФР перед выкладкой v5.19 (Р-24, Р-27)
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01BJKMLHdxMwSUeYcdkwqX4W
2026-10-18 19:04:40 +04:00
Andrey Epifancev
b7f45c6a47 feat(directories): crm_id ГСК/ГСЗ сохраняется, 409 CRM_ID_EXISTS (arm-core#112)
crm_id пишется в колонку related_group.crm_id (v5.19), попадает в ответы и в
payload аудита; занятый значением другой ГСК/ГСЗ даёт 409 CRM_ID_EXISTS
(pre-check и uq_related_group_crm_id на гонку). Смена crm_id пишется как
GROUP_CHANGE с before/after всех изменённых полей (Р-41, P3-18).

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01BJKMLHdxMwSUeYcdkwqX4W
2026-10-18 19:04:40 +04:00