Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01EAKRDNzXtRrwmWz9z6PZu3
44 lines
3.6 KiB
Markdown
44 lines
3.6 KiB
Markdown
# primary-files-ui Specification
|
||
|
||
## Purpose
|
||
TBD - created by archiving change demo-prototype. Update Purpose after archive.
|
||
|
||
## Requirements
|
||
|
||
### Requirement: Загрузка файлов ЮЛ в контексте версии
|
||
Панель «Файлы ЮЛ» [39]/[40], открытая из строки ЮЛ карточки версии, SHALL загружать выбранные файлы одним запросом
|
||
`POST /legal-entities/{id}/files?consolidation_version_id={version_id}` (multipart, поле `files` повторяется), без
|
||
других полей формы. Тип и период документа не спрашиваются. После ответа панель SHALL показать итог: принятые файлы
|
||
(`accepted[].name`) и отклонённые с причиной (`rejected[].name` + `message`). Ответ 422 с телом `UploadResult` SHALL
|
||
трактоваться как «ни один файл не принят» с тем же показом `rejected[]`; ответ 422 с `detail` (`ENTITY_NOT_IN_PERIMETER`)
|
||
и прочие ошибки — показом `message`.
|
||
|
||
#### Scenario: Часть файлов отклонена
|
||
- **WHEN** аналитик загружает ОСВ-файл и файл, уже загруженный ранее у этого ЮЛ
|
||
- **THEN** первый показан принятым, второй — отклонённым с текстом причины `DUPLICATE_FILE` от сервера
|
||
|
||
#### Scenario: Все файлы отклонены
|
||
- **WHEN** сервер отвечает 422 с телом `UploadResult`
|
||
- **THEN** панель показывает каждый отклонённый файл с причиной, а не общую ошибку
|
||
|
||
### Requirement: Список файлов и документов ЮЛ
|
||
Панель SHALL показывать файлы ЮЛ из `GET /legal-entities/{id}/files` (новые первыми): имя, статус файла по-русски
|
||
(«Обработка» для `UPLOADED`/`PROCESSING`, «Ошибка» с причиной из `job` для `ERROR`) и вложенные `documents[]` — тип
|
||
(«ОСВ <счёт>», «Бух. баланс», «ОФР», «Расшифровка», «Прочее»), период («2024 К1», «2024 · 9 мес.», «период не
|
||
определён»), статус документа («Требуется проверка», «Загружен» для `CONFIRMED`, «Ошибка»). Документы `OSV`, `BALANCE`,
|
||
`INCOME` SHALL быть ссылками на `/documents/:document_id`.
|
||
|
||
#### Scenario: PDF с двумя формами
|
||
- **WHEN** файл `aep_6.pdf` распознан
|
||
- **THEN** под файлом видны два документа — «Бух. баланс» и «ОФР» со статусом «Требуется проверка», каждый открывает
|
||
экран проверки
|
||
|
||
### Requirement: Опрос до окончания распознавания
|
||
Пока панель открыта и среди файлов есть `UPLOADED` или `PROCESSING`, панель SHALL перечитывать список раз в 5 секунд и
|
||
SHALL прекратить опрос, когда таких файлов нет или панель закрыта. При закрытии панели карточка версии SHALL
|
||
перечитываться (обновить ячейки чек-листа).
|
||
|
||
#### Scenario: Опрос останавливается
|
||
- **WHEN** все файлы ЮЛ перешли в `PROCESSED` или `ERROR`
|
||
- **THEN** запросы списка файлов прекращаются
|