2026-10-09 23:30:02 +04:00

4.5 KiB
Raw Blame History

MODIFIED Requirements

Requirement: Файлы организации и карточка файла

GET /api/v1/legal-entities/{id}/files (DOCUMENT_VIEW, policy; include_superseded=false по умолчанию) SHALL возвращать Page файлов ЮЛ по убыванию uploaded_at: поля stored_file (в том числе consolidation_id: uuid | null, v5.18 — консолидация, в контексте которой файл загружен), текущее задание (status, error_code, error_message, mapping_error (metrics.mapping_error: причина ERROR файла после неудачного маппинга, когда у задания error_code пуст), metrics.warnings, metrics.mapping_warnings, finished_at), документы файла (id, document_type, osv_account_code, period_year, period_quarter, is_cumulative, status, period_check, counterparty_check, comments_count). GET /api/v1/files/{file_id} SHALL отдавать ту же карточку; чужой или несуществующий файл — 404.

Scenario: Список после обработки

  • WHEN у ЮЛ два файла: PROCESSED с документом и ERROR
  • THEN оба в списке; у первого documents непустой, у второго job.error_code заполнен

Scenario: Счётчик комментариев

  • WHEN к документу файла добавлены два комментария
  • THEN в карточке файла у документа comments_count = 2

Scenario: Консолидация в карточке

  • WHEN один файл ЮЛ загружен в консолидацию C, другой — без контекста
  • THEN в списке ЮЛ и в GET /files/{id} у первого consolidation_id = C, у второго consolidation_id = null

ADDED Requirements

Requirement: Рабочий стол консолидации для ЮЛ

GET /api/v1/consolidations/{consolidation_id}/legal-entities/{legal_entity_id}/files (DOCUMENT_VIEW; limit, offset, include_superseded=false по умолчанию; §9.5 п. 11 v5.18) SHALL отвечать 404 NOT_FOUND на консолидацию вне видимости или несуществующую («консолидация не найдена») и на ЮЛ вне видимости, иначе возвращать Page[FileOut] — объединение файлов ЮЛ, у которых stored_file.consolidation_id = consolidation_id, и файлов ЮЛ, у которых есть документ с записью consolidation_document к любой версии этой консолидации; порядок и карточка — как у списка файлов ЮЛ; SUPERSEDED — только при include_superseded=true (в обоих множествах). Принадлежность ЮЛ к ГК консолидации не проверяется: чужому ЮЛ соответствует пустой список.

Scenario: Стол показывает только файлы консоли

  • WHEN у ЮЛ три файла: загружен в консолидацию 2025 Q1, загружен в консолидацию 2025 Q2, без контекста
  • THEN стол 2025 Q1 содержит только первый; стол 2025 Q2 — только второй; GET /legal-entities/{id}/files — все три

Scenario: Подхваченный файл виден через привязку

  • WHEN файл с CONFIRMED ОСВ за 2025 Q1 загружен без контекста и его документ привязан к версии консолидации 2025 Q2 (подхват при создании версии)
  • THEN файл есть в столе 2025 Q2, хотя consolidation_id IS NULL

Scenario: Заменённый файл скрыт по умолчанию

  • WHEN файл консолидации заменён (SUPERSEDED) новым файлом той же консолидации
  • THEN по умолчанию в столе только новый; с include_superseded=true — оба

Scenario: Чужая консолидация

  • WHEN ka_rf запрашивает стол консолидации ГК другого филиала и несуществующий id
  • THEN оба ответа 404 с одинаковым телом