# 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** запросы списка файлов прекращаются