Файлы в контексте консолидации: stored_file.consolidation_id, маршруты /consolidations/{id}/legal-entities/{le}/files (DBML v5.18) #96

Closed
opened 2026-10-09 22:23:48 +03:00 by aep · 1 comment
Owner

Дочерняя задача RSHB/arm-ka-docs#90 (спека — docs/openspec/changes/console-files/, DBML v5.18).

Что сделать

  • Модель StoredFile.consolidation_id (nullable FK → consolidation) + индекс (legal_entity_id, consolidation_id); миграция 0006_dbml_v5_18 с backfill по consolidation_document (при нескольких периодах — самый ранний) и откатом; make dbml-check по v5.18.
  • POST /consolidations/{consolidation_id}/legal-entities/{legal_entity_id}/files — загрузка в консоль: 404 (консолидация/ЮЛ вне видимости), 409 CONSOLIDATION_NOT_EDITABLE (нет версии «в работе»), 422 ENTITY_NOT_IN_PERIMETER; файл получает consolidation_id; после приёма ≥ 1 файла каждая версия консоли «в работе» с ЮЛ в периметре: INITIATED → DOCUMENTS_PROCESSING.
  • GET /consolidations/{consolidation_id}/legal-entities/{legal_entity_id}/files — рабочий стол: файлы ЮЛ с этим consolidation_id ∪ файлы с документами, привязанными к любой версии консоли; SUPERSEDED по include_superseded.
  • POST /legal-entities/{id}/files: query consolidation_version_id удалить (загрузка без контекста).
  • FileOut.consolidation_id; FILE_UPLOAD.after_value.consolidation_id.
  • Автозамена: новый файл без контекста наследует consolidation_id заменённого.
  • Спеки primary-files, documents-api; README «Ошибки API»; тесты; make check-full.
Дочерняя задача RSHB/arm-ka-docs#90 (спека — `docs/openspec/changes/console-files/`, DBML v5.18). ## Что сделать - [ ] Модель `StoredFile.consolidation_id` (nullable FK → consolidation) + индекс `(legal_entity_id, consolidation_id)`; миграция `0006_dbml_v5_18` с backfill по `consolidation_document` (при нескольких периодах — самый ранний) и откатом; `make dbml-check` по v5.18. - [ ] `POST /consolidations/{consolidation_id}/legal-entities/{legal_entity_id}/files` — загрузка в консоль: 404 (консолидация/ЮЛ вне видимости), 409 `CONSOLIDATION_NOT_EDITABLE` (нет версии «в работе»), 422 `ENTITY_NOT_IN_PERIMETER`; файл получает `consolidation_id`; после приёма ≥ 1 файла каждая версия консоли «в работе» с ЮЛ в периметре: `INITIATED → DOCUMENTS_PROCESSING`. - [ ] `GET /consolidations/{consolidation_id}/legal-entities/{legal_entity_id}/files` — рабочий стол: файлы ЮЛ с этим `consolidation_id` ∪ файлы с документами, привязанными к любой версии консоли; `SUPERSEDED` по `include_superseded`. - [ ] `POST /legal-entities/{id}/files`: query `consolidation_version_id` удалить (загрузка без контекста). - [ ] `FileOut.consolidation_id`; `FILE_UPLOAD.after_value.consolidation_id`. - [ ] Автозамена: новый файл без контекста наследует `consolidation_id` заменённого. - [ ] Спеки `primary-files`, `documents-api`; README «Ошибки API»; тесты; `make check-full`.
aep closed this issue 2026-10-10 09:00:00 +03:00
Author
Owner

Закрыто PR #97 (слит в main 10.10.2026, 9be7d75): миграция 0006 с backfill, маршруты POST/GET /consolidations/{cid}/legal-entities/{le}/files, query у загрузки ЮЛ удалён, FileOut.consolidation_id, наследование при автозамене, спеки, README. Отложенные находки — #98.

Закрыто PR #97 (слит в main 10.10.2026, 9be7d75): миграция 0006 с backfill, маршруты `POST/GET /consolidations/{cid}/legal-entities/{le}/files`, query у загрузки ЮЛ удалён, `FileOut.consolidation_id`, наследование при автозамене, спеки, README. Отложенные находки — #98.
Sign in to join this conversation.
No Label
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: RSHB/arm-core#96
No description provided.