DBML v5.20: уточнение периода и счёта ОСВ аналитиком (OQ-161, AURORA-1442) #148

Merged
aep merged 1 commits from feat/147-document-period-edit into main 2026-10-21 18:10:20 +03:00
Owner

Closes #147

Ответ на вопрос разработчика по AURORA-1442 («куда писать новое значение периода/счёта, если исходное сохраняется»).

Что сделано

  • DBML v5.20: в document — is_modified, original_values (jsonb: period_year, period_quarter, is_cumulative, osv_account_code), modified_by, modified_at. Правка на месте, распознанное — в original_values при первой правке (как osv_entry.original_values). Копия document не создаётся: file_ordinal — номер документа в результате распознавания, не номер редакции.
  • 05-domain-rules §9.5 п. 12: PATCH /documents/{id}/osv-header — проверки, сброс подтверждения, снятие привязок к версиям «в работе», аудит RECOGNIZED_DATA_EDIT; §3 п. 1 — новая точка отвязки.
  • OQ-161 закрыт вариантом (2).
  • entities-v5.20.md, диаграммы (make diagrams), ссылки на текущую версию модели (Makefile, openspec/config.yaml, 00/03/04/08, KICKOFF, шаблон CLAUDE.md arm-core).

Решения владельца 21.10.2026

  • Правка подтверждённой ОСВ разрешена, подтверждение при этом сбрасывается.
  • account_id/account_root строк osv_entry при смене счёта не пересчитываются.
  • Флаг CONSOLIDATION_PERIOD_FROM_VERSION снимается после появления правки на экране, отдельной задачей.

Rulings I made

  • R-1: путь эндпоинта — PATCH /documents/{id}/osv-header. Если ошибка: переименовать до реализации в ядре.
  • R-2: после сброса подтверждения статус — NEEDS_CHECK, а не RECOGNIZED: предупреждения маппинга листа на уровне документа не хранятся, честно пересчитать RECOGNIZED нельзя. Если ошибка: меняется одна строка правила.
  • R-3: коды ошибок — DOCUMENT_NOT_OSV, INVALID_PERIOD, INVALID_ACCOUNT_CODE, DUPLICATE_ACCOUNT (счёт уже есть у другой ОСВ файла — уникальный индекс), VERSION_NOT_EDITABLE (привязка к версии не «в работе» и не CANCELLED).
  • R-4: consolidation_lock для правки не нужна — как для подтверждения; статус версий при снятии привязок не меняется — как при удалении файла.
  • R-5: автозамена при правке не запускается (как у правки формы, п. 9).
  • R-6: у Q1 обязательно is_cumulative = true (§1.5); правка одного счёта не требует полного периода.
  • R-7: reporting_date в original_values нет — у ОСВ ядро её не заполняет.
  • R-8: откат миграции при is_modified = true останавливается с ошибкой (иначе теряются исходные значения).

Проверки

  • make check — зелёный.

Дальше

  • arm-core: миграция v5.20 и эндпоинт — в рамках AURORA-1442; гайд фронта по API обновляется вместе с реализацией.

🤖 Generated with Claude Code

Closes #147 Ответ на вопрос разработчика по AURORA-1442 («куда писать новое значение периода/счёта, если исходное сохраняется»). ## Что сделано - **DBML v5.20**: в `document` — `is_modified`, `original_values` (jsonb: `period_year`, `period_quarter`, `is_cumulative`, `osv_account_code`), `modified_by`, `modified_at`. Правка на месте, распознанное — в `original_values` при первой правке (как `osv_entry.original_values`). Копия `document` не создаётся: `file_ordinal` — номер документа в результате распознавания, не номер редакции. - **05-domain-rules §9.5 п. 12**: `PATCH /documents/{id}/osv-header` — проверки, сброс подтверждения, снятие привязок к версиям «в работе», аудит `RECOGNIZED_DATA_EDIT`; §3 п. 1 — новая точка отвязки. - **OQ-161** закрыт вариантом (2). - `entities-v5.20.md`, диаграммы (`make diagrams`), ссылки на текущую версию модели (Makefile, openspec/config.yaml, 00/03/04/08, KICKOFF, шаблон CLAUDE.md arm-core). ## Решения владельца 21.10.2026 - Правка подтверждённой ОСВ разрешена, подтверждение при этом сбрасывается. - `account_id`/`account_root` строк `osv_entry` при смене счёта не пересчитываются. - Флаг `CONSOLIDATION_PERIOD_FROM_VERSION` снимается после появления правки на экране, отдельной задачей. ## Rulings I made - R-1: путь эндпоинта — `PATCH /documents/{id}/osv-header`. Если ошибка: переименовать до реализации в ядре. - R-2: после сброса подтверждения статус — `NEEDS_CHECK`, а не `RECOGNIZED`: предупреждения маппинга листа на уровне документа не хранятся, честно пересчитать `RECOGNIZED` нельзя. Если ошибка: меняется одна строка правила. - R-3: коды ошибок — `DOCUMENT_NOT_OSV`, `INVALID_PERIOD`, `INVALID_ACCOUNT_CODE`, `DUPLICATE_ACCOUNT` (счёт уже есть у другой ОСВ файла — уникальный индекс), `VERSION_NOT_EDITABLE` (привязка к версии не «в работе» и не `CANCELLED`). - R-4: `consolidation_lock` для правки не нужна — как для подтверждения; статус версий при снятии привязок не меняется — как при удалении файла. - R-5: автозамена при правке не запускается (как у правки формы, п. 9). - R-6: у `Q1` обязательно `is_cumulative = true` (§1.5); правка одного счёта не требует полного периода. - R-7: `reporting_date` в `original_values` нет — у ОСВ ядро её не заполняет. - R-8: откат миграции при `is_modified = true` останавливается с ошибкой (иначе теряются исходные значения). ## Проверки - `make check` — зелёный. ## Дальше - arm-core: миграция v5.20 и эндпоинт — в рамках AURORA-1442; гайд фронта по API обновляется вместе с реализацией. 🤖 Generated with [Claude Code](https://claude.com/claude-code)
aep added 1 commit 2026-10-21 17:58:06 +03:00
- document: is_modified, original_values, modified_by, modified_at — правка
  period_year / period_quarter / is_cumulative / osv_account_code на месте,
  распознанное в original_values (первичка не мутируется); копия document не
  создаётся.
- 05-domain-rules §9.5 п. 12: PATCH /documents/{id}/osv-header — проверки,
  сброс подтверждения и снятие привязок к версиям «в работе», аудит
  RECOGNIZED_DATA_EDIT; §3 п. 1 — новая точка отвязки.
- OQ-161 закрыт вариантом (2); флаг CONSOLIDATION_PERIOD_FROM_VERSION
  снимается после правки на экране.
- entities-v5.20, диаграммы, ссылки на текущую версию модели.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
aep merged commit 80386b37ce into main 2026-10-21 18:10:20 +03:00
Sign in to join this conversation.
No Reviewers
No Label
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: RSHB/arm-ka-docs#148
No description provided.