Дельта data-model переименована на v5.21, пакет — только файлы в ERROR,
tasks — ссылки на docs PR #157 и задачи ревью; config.yaml — DBML v5.21.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
PATCH osv-header без fixtures: порядок ошибок, no-op, original_values, сброс
подтверждения и отвязка, аудит, DUPLICATE_ACCOUNT, неизменность osv_entry.
Пакет: смешанный (OCR и исчерпанный лимит в skipped), NO_ACK на пределе.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Перенесён диапазон arm-web 46639b1..8345f5e (9 коммитов, 41 файлов набора
синхронизации) скриптом docs/scripts/sync-web.sh. После переноса web/ и
arm-web@test идентичны по набору. Коммиты arm-web:
- 5b13b74 Форматирование под ESLint + Prettier, зелёный make check (#31)
- 681697f fixed eslint bugs
- 25d2211 fixed bugs
- 2cddb55 Форматирование под ESLint + Prettier и зелёный make check (#31)
- 71dae21 updated company group and forms
- 83d4c2b added company group table
- d2dc230 fixed merge bug
- 3977dae added forms for catalogue jur
- 8e8e46e addded legalEntities table and move form
Co-Authored-By: sync-web.sh <noreply@aepif.ru>
Перенесён диапазон arm-web 0f2bbc8..4a02512 (23 коммитов, 51 файлов набора
синхронизации) скриптом docs/scripts/sync-web.sh. После переноса web/ и
arm-web@test идентичны по набору. Коммиты arm-web:
- 4fb477d Подпись пустой цели «цель не заполнена», тесты null/null (ревью I-1, M-1, M-2, M-4)
- cb36ec8 Нарушения проверок: expected/actual и индекс колонки могут быть null (#45)
- b4b8c04 openspec(statements-v2): решения по итогам прогона в браузере (T11.D-1…D-5, #43)
- aa3054e docs(arm-web): экран формы v5.19 — README и карта модулей (#43)
- 88a4920 fix(arm-web): нераспознанный текст суммы, пустые подстроки без расшифровок, свёрнутый список предупреждений (#43)
- a3199d6 fix(arm-web): вёрстка экрана проверки формы — ширины колонок, значки в ячейке, шапка, ссылка кнопкой (#43)
- 12fcea7 fix(statement): защитные значения по умолчанию для ядра без v5.19 (M-2, #43)
- 4783593 fix(statement): ссылка на строки без кода всегда видна, сортировка по row_index, Alert для ошибки скрытого поля кода, постоянный aria-label (T9.1, T9.2, T9.4, T7.1, T8.1, T3.3, M-3, #43)
- d965fdc fix(statement): округление уверенности в подсказках шапки, пустые тексты в подсказках, комментарий шапки (T5.1, T5.2, M-1, T3.1, #43)
- 6556e3d fix(statement): не отправлять поля шапки, равные текущим (I-2, #43)
- 8d2deb9 docs(openspec): решения без обсуждения из исполнения и имя кнопки «Подтвердить данные» (#43)
- fc5cc16 fix(files): клики внутри popover не открывают строку, ключи и aria-label (#43)
- fdf9358 feat(files): предупреждения файла структурами и предупреждения документа в панели файлов и у ОСВ (#43)
- 5b11f2d feat(statement): блокировка подтверждения при строках без кода, LINES_UNRESOLVED и DUPLICATE_FORM (#43)
- a779d2a feat(statement): подтверждение ячеек, дата колонки, наименование организации и подтверждение даты (#43)
- d416422 feat(statement): правка строк — код с подсказкой из справочника, меню строки, LINE_CODE_TAKEN (#43)
- ef4d325 refactor(statement): один черновик правок и сборка единственного PATCH (#43)
- 8ab116f feat(statement): шапка — организация, поля на проверку и подсказки распознанного текста (#43)
- 4ae8643 feat(statement): предупреждения и нарушения у строк, ячеек, колонок и в списке документа (#43)
- 34d523a feat(statement): вид строк по статусам, подсветка по needs_review, переключатель расшифровок (#43)
- c2f33e7 feat(statement): раскладка строк без кода и расшифровок на своих местах (#43)
- e4ee7f0 fix(fixtures): коды соотношения, column_index, порядок edition_lines (#43)
- f83b035 feat(types): API формы v5.19 — статусы строк, needs_review, issues, предупреждения файла (#43)
Co-Authored-By: sync-web.sh <noreply@aepif.ru>
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>
Удалены 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>
Приём файла результата выбирает модель по 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>
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>
checks_on_intake_1x: один recompute по вставленной форме, запись form_variant и
relation/soft (core); run_checks из приёма убран. P3-36.
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
recompute_form (services/statement_recompute.py) собирает вход из БД, зовёт engine.recompute и пишет needs_review
строк и значений, form_variant, parent_row_index расшифровок, записи relation/soft и core по P3-8, статус через
form_status_v2. GET/confirm/accept читают нарушения §7 из document_issue. Правка header.report_date пересчитывает
relative:* колонки. Временный код A12/A13 удалён.
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
Копии api/contracts/ побайтно равны docs/contracts/ (тест идентичности плана 0): схемы v2.0 основные, .v1 рядом,
examples/ — v2.0, examples/v1/ — v1.0. Модели result_v2.py и RecognitionResultMessageV2, versions.py выбирает модель
по MAJOR. Приём конвертов принимает оба MAJOR; metrics.warnings в recognition_job пишется структурами (строки 1.x
оборачиваются в LEGACY_WARNING). JobBrief.warnings отдаёт структуры, мусор пропускается, БД не переписывается.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01BJKMLHdxMwSUeYcdkwqX4W
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
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