170 Commits

Author SHA1 Message Date
Andrey Epifancev
12ea8acd42 feat(#190): факт приёма документа при маппинге (§14.1)
Хук в _map_candidate (result_mapping.py): после map_file, до auto_confirm — для
каждого документа BALANCE/INCOME/OSV строит снимок build_intake_payload и пишет
quality_intake_fact через insert_intake_fact. Чисто добавочный шаг: не меняет
документы, статусы и прочий результат маппинга; DISCLOSURE/OTHER факта не получают.

Счётчики строк/значений — из financial_statement_* (BALANCE/INCOME) и document_issue;
warning_count/osv_warnings — предупреждения источника service (document_issue.source =
service): для BALANCE/ОФР 1.x таких записей нет, для ОСВ это коды OSV_*. Для ОСВ
построчные счётчики не считаются (их в ядре нет), только row_count в payload.

Тесты в test_result_mapping.py (маркер integration, не запускались — нет PostgreSQL
в песочнице, подтверждена только коллекция) + один DB-free тест на множество типов
документов хука.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
2026-11-05 19:07:02 +04:00
Andrey Epifancev
d542a228e0 Ревью #208 (I-7): осиротевшая APPLIED-корректировка требует проверки
attach_corrections молча пропускала (continue) корректировку, чей
агрегат (rule_id, пара ЮЛ) больше не существует после пересчёта
разнесения ВГО — вместо этого, как и в остальных ветках функции,
поднимаем ConflictError("CORRECTION_REVIEW_REQUIRED").
2026-11-02 20:17:48 +04:00
c62f9b2e39 AURORA-1540: API таблицы корректировок и интеграция с ВГО, правки 2026-11-02 18:12:32 +03:00
e9818e5182 Merge remote-tracking branch 'origin/AURORA-1751' into feat/corrections-back
# Conflicts:
#	api/src/api/dependencies/consolidations.py
#	api/src/services/vgo.py
2026-11-02 16:09:17 +03:00
PotapovaA
2b7116d8aa правки 2026-11-02 15:50:24 +03:00
PotapovaA
c8c7847766 ручной перенос строки в правило/из правилв 2026-11-02 14:05:56 +03:00
0e678acf35 AURORA-1540: корректировки + vgo_assignment 2026-10-30 19:44:22 +03:00
df892d1f20 Merge remote-tracking branch 'origin/AURORA-1751' into feat/corrections-back
# Conflicts:
#	api/src/api/dependencies/consolidations.py
2026-10-30 14:41:16 +03:00
PotapovaA
9bae931454 получение разнесение осв по правилам автоматическое + наложение ручных корректировок сверху 2026-10-30 12:56:39 +03:00
086050cc87 feat/corrections-back: Корректировки по ручным праавкам в vgo_assignments 2026-10-29 19:13:58 +03:00
aep
31904e334a Merge pull request 'AURORA-1652' (#203) from AURORA-1652 into main 2026-10-28 16:08:17 +03:00
PotapovaA
29cead170c удалены не используемые функции 2026-10-27 19:14:26 +03:00
PotapovaA
b3260ab288 обновление докстринг 2026-10-27 18:13:36 +03:00
Andrey Epifancev
c24bc3d4c1 feat(#195): counter_pairs в сводке сводной ОСВ и фильтр counterparty_id
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-27 18:48:59 +04:00
PotapovaA
6f52360c49 добавление недостающийх полей в EliminationRuleOut 2026-10-27 17:44:39 +03:00
Andrey Epifancev
74ba43d1b7 AURORA-1646 чек-лист версии — только файлы стола консолидации (#188)
Кандидаты «Требуется проверка» / «Распознан» и состояние файлов («Обработка» / «Ошибка загрузки») чек-лист берёт
только со стола консолидации (§9.5 п. 11) — тем же фильтром, что панель «Первичные документы» (`files.on_desk`).
Документы организации из других консолидаций и из карточки ЮЛ ячейку больше не меняют: без документов — «Отсутствует».

В `on_desk` документ подзапроса — псевдоним: в запросе по `Document` он иначе коррелирует с внешним.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-27 10:54:50 +04:00
Andrey Epifancev
353b562dfc AURORA-1644 автозамена не вытесняет документ другой организации (#181)
Пара «новый документ — прежний» с counterparty_check = MISMATCH у любого из двух
в автозамене не участвует: сканы разных организаций в одной карточке больше не
вытесняют друг друга. UNKNOWN заменяется как прежде. Если файл оставлен только
из-за MISMATCH, в mapping_warnings нового файла — «автозамена не выполнена»
с именем и версией оставленного файла. Спека primary-files дополнена.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-27 00:54:27 +04: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
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
888ad4b401 Merge origin/main в AURORA-1536 (ревью #175)
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-23 18:34:35 +04:00
Andrey Epifancev
3bc71a912d refactor(retry): версии уже отобраны по статусу в запросе (ревью #161, раунд 2)
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-23 18:19:08 +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
PotapovaA
827b490137 тесты + немного поправлен формат выходных данных 2026-10-23 16:20:51 +03:00
PotapovaA
010c15386b добавлен группировка строк осв для правила пресета 2026-10-23 15:55:54 +03:00
622a60e4e0 AURORA-1442: Правки по раунду 1 2026-10-23 13:39:30 +03:00
PotapovaA
232fecec39 автоматическое проставление версии правил при создании консолидация, если таких создается версия консолидации создается с NULL 2026-10-23 12:10:35 +03:00
Andrey Epifancev
9a30b45c17 Merge origin/main в AURORA-1651 (#141) и доводка шахматки (AURORA-1651)
Конфликты с #141: в ALL оставлены и фильтр забалансовых, и MatrixSelection; тесты
#141 на старый one_sided переписаны под расчёт по суммам.
- one_sided = ровно одна сумма нулевая (знак не важен), тесты с отрицательными суммами;
- шапка xlsx режима ALL — «Все балансовые счета»;
- фильтр GET /directories/accounts убран из PR (решение владельца 22.10.2026).

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-22 23:44:44 +04:00
PotapovaA
254002f723 тех долг 2026-10-22 16:58:19 +03:00
PotapovaA
02d67ff733 убран лишний метод build_with_members 2026-10-22 15:35:56 +03:00
PotapovaA
b7d97943b2 Merge main into add-preset-shahmatka: preserve preset and result table exports 2026-10-22 14:39:25 +03:00
4f44d34d59 AURORA-1442: ручки возобновления обработки файла или версии консолидации, ручка обновления данных по осв 2026-10-22 14:25:19 +03:00
Andrey Epifancev
63d6c1a017 Замечания ревью #159: проверки, общие реквизиты книги, change OpenSpec
- маршрут result-table/export в EXPECTED_ROUTES, ruff format
- общие VersionExportInfo, _write_details, _group_name, _xlsx_response вместо копий шапки и ответа
- сумма компании в книге без молчаливого 0 (KeyError при пропуске в расчёте)
- своё описание 422 у маршрутов результирующей таблицы в OpenAPI
- тесты: 422 RESULT_ACCOUNTS_MISSING для экспорта без события EXPORT, схема OpenAPI экспорта
- требование перенесено из openspec/specs в change intercompany-result-table-export (+ audit-trail), README

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-22 11:42:13 +04:00
PotapovaA
3de0c90198 refactor(matrix): удалить unpaired-osv из ветки пресетов 2026-10-21 19:32:23 +03:00
PotapovaA
ea51cb35c2 добавлено выгрузка в xlsx для таблицы ВГО 2026-10-21 19:26:37 +03:00
PotapovaA
fabc9b48b2 docs(matrix): указать разделы ТЗ в новых функциях 2026-10-21 19:10:45 +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
38c8eefa18 fix(matrix): ограничить PRESET правилами ББ 2026-10-21 18:43:19 +03:00
PotapovaA
e9dc67b2e9 refactor(matrix): вынести применение корректировок из ветки пресетов 2026-10-21 18:40:05 +03:00
Andrey Epifancev
367a11ed38 chore(api): format, mypy и тест версии правил; убрать мёртвое as_of (ревью #141)
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-10-21 14:04:38 +04:00
PotapovaA
2c0a2ad939 правки по ревью 2 2026-10-21 12:15:20 +03:00
PotapovaA
abe1d890d0 правки по ревью 2026-10-21 11:59:23 +03:00
PotapovaA
c6a10e4604 правки в экспорт 2026-10-20 15:35:46 +03:00
PotapovaA
487a8521da Merge branch 'main' into add-preset-shahmatka 2026-10-20 14:58:34 +03:00
PotapovaA
53c2d5c73d пресеты для шахматки 2026-10-20 14:45:27 +03: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
2b8fafc3b3 feat(mapping): ОСВ по контракту 2.0 (Р-28) и выбор маппера по MAJOR
Приём файла результата выбирает модель по MAJOR (parse_result); нечитаемый JSON и неизвестный
MAJOR — неповторяемая ошибка схемы (T5.2). Статус ОСВ 2.0 — osv_status_v2, предупреждения листа
(OSV_*) — в document_issue. Решения P3-46…P3-49.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-18 21:57:38 +04:00
Andrey Epifancev
21e0720fb0 feat(mapping): маппер результата 2.0 для форм — хранение как пришло, document_issue, условие RECOGNIZED
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-18 21:42:04 +04:00
Andrey Epifancev
028512603a fix(statements): правки ревью B1+B2 — T2.1, T1.1, T1.2, T2.4, T2.6, T2.8
T2.1: аудит lines[] включает итоговую смену parent_row_index после пересчёта.
T1.1: тест паритета редакции приёма и пересчёта для строки с confidence < 100 и code_fixed.
T1.2: edition_codes пропускает строку ok без кода.
T2.4: общий issue_column_index для ответа формы и detail отказа подтверждения.
T2.6: удалено дублирование needs_review в statement_line_edits.
T2.8: неизвестный relative:* не даёт 500 (адаптер stored_form и _resolve_relative_columns).

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-18 21:15:21 +04:00