proposal, design (D-1…D-14, решения без обсуждения №1–10), дельты osv-result-mapping (маппинг форм, статус), statement-checks (новая: §7, межформенная, акцепт), documents-api (форма, правка, акцепт, подтверждение, комментарии, исходный файл), consolidations-api (CSV чек-листа), directories-api (documents_count), users-admin (справочник имён). Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_012vJkmBGKKqMoEMzvsXG3y2
3.5 KiB
Spec Delta: consolidations-api
MODIFIED Requirements
Requirement: Чек-лист комплекта
GET /consolidations/versions/{id}/checklist (CONSOLIDATION_VIEW, policy) SHALL вернуть rules[] (правила
required_document_rule подхода версии: document_type, account, is_mandatory; порядок — BALANCE, INCOME,
затем ОСВ по коду счёта) и rows[] по ЮЛ периметра (по имени) с cells[] в порядке rules. Ячейка {status, missing_quarters, document_ids}: CONFIRMED — пара (ЮЛ, правило) полностью покрыта привязанными документами (ОСВ: по
правилу выбора источников consolidated-osv; ББ/ОФР: документ за квартал версии); NEEDS_CHECK / RECOGNIZED —
есть неподтверждённый документ ЮЛ того же типа, счёта и года, подходящий версии (приоритет NEEDS_CHECK);
PROCESSING — у ЮЛ есть файл UPLOADED или PROCESSING; ERROR — последний по uploaded_at файл ЮЛ в ERROR;
иначе MISSING. missing_quarters SHALL перечислять кварталы без квартальной ОСВ при частичном покрытии. Правило ОСВ
SHALL закрываться только документом с osv_account_code, равным account правила (OQ-04). Те же ячейки SHALL
отдаваться в карточке версии у каждого члена. С ?format=csv SHALL отдаваться тот же чек-лист файлом text/csv; charset=utf-8 с BOM и разделителем ;: заголовок «Организация;ИНН;<правило>…» (правила — «Бух. баланс», «ОФР»,
«ОСВ <счёт>»), ячейки — подписи макета: CONFIRMED «Загружен», PROCESSING «Обработка», NEEDS_CHECK/RECOGNIZED
«Требуется проверка», ERROR «Ошибка загрузки», MISSING «Отсутствует» (с « (нет: Q1, Q2)» при missing_quarters);
Content-Disposition — attachment с именем checklist-<ГК>-<год>-<квартал>.csv в RFC 5987.
Scenario: Пробел Q2
- WHEN у ЮЛ привязаны квартальные ОСВ 60 за Q1 и Q3 2024, версия за 2024 Q3
- THEN ячейка ОСВ 60:
status = MISSING,missing_quarters = ["Q2"],document_ids— два документа
Scenario: Субсчёт не закрывает правило
- WHEN у ЮЛ подтверждена только ОСВ 58.03 за квартал версии
- THEN ячейка ОСВ 58 —
MISSING
Scenario: Файл в обработке
- WHEN у ЮЛ загружен файл, задание ещё не завершено, других документов нет
- THEN все ячейки ЮЛ —
PROCESSING
Scenario: Чек-лист в CSV
- WHEN запрошен чек-лист версии с
format=csv, у ЮЛ подтверждён ББ, ОСВ 60 отсутствует за Q2 - THEN файл начинается с BOM, первая строка — «Организация;ИНН;Бух. баланс;ОФР;ОСВ 60…», в строке ЮЛ — «Загружен» и «Отсутствует (нет: Q2)»