# consolidated-osv-ui Specification ## Purpose Аналитик видит сводную ОСВ версии [30]: сводку с несопоставленными строками, пробелы по кварталам, таблицу с фильтрами в заголовках колонок и экспорт в xlsx. ## Requirements ### Requirement: Сводка версии Экран «Сводная ОСВ» [30] SHALL показывать шапку версии (ГК, период, номер, статус) и сводку `GET /consolidations/versions/{id}/osv/summary`: строк всего, документов, несопоставленных (`unmapped_total` — счётчик «Осталось N» без перехода к сопоставлению), автоматически сопоставленных. #### Scenario: Контрольные цифры РБ 2024 Q3 - **WHEN** открыт свод версии РБ 2024 Q3 после подтверждения 22 ОСВ из `fixtures/osv/{rb,schastl}/2024-Q{1,2,3}` - **THEN** «строк» = 1385, «документов» = 22, «несопоставленных» = 1381 ### Requirement: Таблица свода и фильтры Экран SHALL показывать строки `GET /consolidations/versions/{id}/osv` постранично (размер страницы ≤ 2000): ЮЛ, счёт, контрагент, ИНН контрагента, сальдо на начало Дт/Кт, обороты Дт/Кт, сальдо на конец Дт/Кт (суммы — строками с разделителями разрядов) и последней колонкой «Тип контрагента» — бейдж ГСК (синий) / ГК (зелёный) / Внешний (серый), как в макете [30]. Фильтры — в заголовках колонок: ЮЛ (`legal_entity_id`), корень счёта (`account_root`), поиск по контрагенту (`q`, ≤ 500 символов), тип контрагента (`counterparty_type`, одно значение — на колонке «Тип контрагента»); только несопоставленные (`unmapped`) — кнопкой над таблицей. «Применить» и «Сбросить» SHALL закрывать окно фильтра. Смена фильтра SHALL перечитывать первую страницу. #### Scenario: Строка из контрольных цифр - **WHEN** фильтр ЮЛ «Пекарня Счастливочная» и поиск «бисквит» - **THEN** строка `60.01` показывает сальдо нач. Кт 4 454 151.93, обороты Дт 128 058 143.65, Кт 125 950 450.77, сальдо кон. Кт 2 346 459.05, признак «ГСК» ### Requirement: Пробелы Экран SHALL показывать `gaps[]` сводки списком «ЮЛ — счёт — недостающие кварталы» с пояснением, что строки этих пар в своде отсутствуют. #### Scenario: Пробелы РБ 2024 Q3 - **WHEN** открыт свод версии РБ 2024 Q3 - **THEN** показано 7 пробелов, у каждого недостающие кварталы «Q1, Q2» ### Requirement: Экспорт Кнопка «Скачать xlsx» SHALL получать `GET /consolidations/versions/{id}/osv/export` с текущими фильтрами через клиент API с токеном и сохранять файл; имя — из `Content-Disposition`, а если заголовок недоступен — `Сводная_ОСВ_<ГК>_<год>_<квартал>.xlsx`. #### Scenario: Экспорт с фильтром - **WHEN** аналитик скачивает свод с фильтром по ЮЛ - **THEN** сохраняется xlsx, а ошибка сервера показывается текстом, а не скачивается