33 Commits

Author SHA1 Message Date
Andrey Epifancev
f756aff6ee feat: [34] панель «Организации» — Ответственный / Утверждён в РФ / Верифицирован в ГО, «Скачать чек-лист» (CSV), подсветка выбранной версии (#3)
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01EAKRDNzXtRrwmWz9z6PZu3
2026-10-08 03:44:03 +04:00
Andrey Epifancev
35e52aaa29 fix: ОСВ за 1 квартал нарастающим итогом показывается «2024 К1», как в макете [39] (#3)
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01EAKRDNzXtRrwmWz9z6PZu3
2026-10-08 03:31:27 +04:00
Andrey Epifancev
c0dfe7c6c0 fix: панель документов — крестик справа, плашка без обрезки; даты по Москве; заголовки колонок формы и высота списка нарушений; решения R-7…R-12 в design.md (H-2, #3)
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01EAKRDNzXtRrwmWz9z6PZu3
2026-10-08 03:16:20 +04:00
Andrey Epifancev
6f8f04a707 feat: экраны по макету — панель документов [39]/[40], сводная ОСВ [30], проверка распознавания [41]/[41-02], консолидации [34], группы [03], логотип, модалка [42] (H-2, #3)
- [39] таблица документов: формат, период, проверка Период/Контрагент, статус плашкой; шапка с ЮЛ и ИНН
- [30] шапка «ГК — год Кn» со статусом, вкладки (только ОСВ), баннер «Осталось N» с фильтром
  несопоставленных, колонки и двухуровневые заголовки макета, фильтры в заголовках, «—» для нуля
- [41] карточки «Исходный документ» / «Результат распознавания», режим просмотра и «Редактировать»,
  форма как бумажный документ, суммы без копеек
- [34] Дата создания, Дата верификации (—, в API нет), ГСК (—, П-3), квартал «К3»
- [03] Основной РФ — название филиала, а не UUID
- логотип АРМ КА, заголовок вкладки, «Отчётность»; [42] члены ГСК наверху списка

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01EAKRDNzXtRrwmWz9z6PZu3
2026-10-08 03:10:34 +04:00
Andrey Epifancev
6d8998988e feat: формат сумм как в макете (запятая, «—» для нуля, без копеек в формах), подписи К3 и «9 мес.», крошки « › » и слот справа в PageTitle (#3)
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01EAKRDNzXtRrwmWz9z6PZu3
2026-10-08 03:06:42 +04:00
Andrey Epifancev
977a0efeaf fix: «К отчётности» не переходил на свод — клик всплывал до onRow строки (H-1, #3)
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01EAKRDNzXtRrwmWz9z6PZu3
2026-10-08 03:02:40 +04:00
Andrey Epifancev
11e78c67a8 docs(openspec): решения контроллера без обсуждения (demo-prototype, #3)
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01EAKRDNzXtRrwmWz9z6PZu3
2026-10-08 01:57:27 +04:00
Andrey Epifancev
67bc2c801b docs: демо-сценарий под данные стенда, CLAUDE.md; удалены неиспользуемые css-классы Sidebar (I-2, M-1, M-2, M-6)
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01EAKRDNzXtRrwmWz9z6PZu3
2026-10-08 01:54:43 +04:00
Andrey Epifancev
0f734e3bf8 fix: версия в URL, ошибки списка, подпись квартала, Назад по прямой ссылке, код ошибки не в заголовке (I-1, M-3, M-4, M-6, T7.M7, T7.M4)
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01EAKRDNzXtRrwmWz9z6PZu3
2026-10-08 01:54:37 +04:00
Andrey Epifancev
384301ecbd fix: make start запускает dev с REACT_APP_ROOT_PATH=/ — нет белого экрана (C-1)
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01EAKRDNzXtRrwmWz9z6PZu3
2026-10-08 01:54:37 +04:00
Andrey Epifancev
ebae9edd74 docs: README с демо-сценарием, скрипт подготовки данных, CLAUDE.md и ARCHITECTURE.md (#3)
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01EAKRDNzXtRrwmWz9z6PZu3
2026-10-08 01:36:54 +04:00
Andrey Epifancev
2c7bdf19b0 feat: экран сводной ОСВ — сводка, пробелы, фильтры, экспорт xlsx (#3)
Заодно: отложенный revokeObjectURL в saveBlob (ревью Task 3).

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01EAKRDNzXtRrwmWz9z6PZu3
2026-10-08 01:30:32 +04:00
Andrey Epifancev
65c3dc2de7 fix: форма ББ/ОФР — onChanged после сохранения и акцепта, черновик без no-op правок, акцепт блокируется при несохранённом (I-1, M-1, M-2)
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01EAKRDNzXtRrwmWz9z6PZu3
2026-10-08 01:27:36 +04:00
Andrey Epifancev
615201c925 feat: проверка формы ББ/ОФР — скан PDF, правка ячеек и шапки, проверки, подтверждение (#3)
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01EAKRDNzXtRrwmWz9z6PZu3
2026-10-08 01:23:57 +04:00
Andrey Epifancev
edaa2b6d58 fix: дерево ОСВ устойчиво к самоссылке, циклам и дублям id; key документа (I-1, M-1)
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01EAKRDNzXtRrwmWz9z6PZu3
2026-10-08 01:19:17 +04:00
Andrey Epifancev
5d1c28d0de feat: экран документа и просмотр ОСВ-документа с подтверждением (#3)
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01EAKRDNzXtRrwmWz9z6PZu3
2026-10-08 01:16:37 +04:00
Andrey Epifancev
64d64d3b0a fix: опрос файлов ЮЛ — без спама ошибок, сброс при смене ЮЛ, уникальные key (I-1, I-2, M-1)
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01EAKRDNzXtRrwmWz9z6PZu3
2026-10-08 01:11:15 +04:00
Andrey Epifancev
c7867277d8 feat: панель файлов ЮЛ — загрузка с итогом, документы, опрос до окончания распознавания (#3)
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01EAKRDNzXtRrwmWz9z6PZu3
2026-10-08 01:09:34 +04:00
Andrey Epifancev
c11ef663e9 fix: смена ГК отменяет запрос состава ГСК (I-1)
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01EAKRDNzXtRrwmWz9z6PZu3
2026-10-08 01:07:46 +04:00
Andrey Epifancev
fec179b747 feat: модалка консолидации — предотметка ГСК, все ЮЛ, ошибки, переход к версии (#3)
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01EAKRDNzXtRrwmWz9z6PZu3
2026-10-08 01:05:57 +04:00
Andrey Epifancev
27828219c9 fix: fetchCompanyGroups читает все страницы (C1 критерий)
GET /directories/company-groups возвращает Page[CompanyGroupOut], но раньше типизировался как ICompanyGroup[].
Реализована пагинация: fetchCompanyGroups теперь читает все страницы по 200 и возвращает полный массив ICompanyGroup[].
Это позволяет thunk/slice получать честный массив с правильным total_groups = payload.length.

Исправлено:
- fetchCompanyGroups: async функция с циклом по total (как fetchAllLegalEntities)
- types.ts / companyGroupsSlice.ts / thunks.ts: типы честные (без приведений)
- потребители (NewConsoleModal, CompanyGroupsTable, Sidebar): используют raw_rows как массив

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01EAKRDNzXtRrwmWz9z6PZu3
2026-10-08 01:03:12 +04:00
Andrey Epifancev
4424a2b8e8 feat: типы DTO и сервисы API для файлов, документов, форм и свода (#3)
- Дополнены типы в src/types/api.ts (Page, UploadResult, FileOut, DocumentOut, StatementOut, ConsolidatedRowOut, etc.)
- Реализованы сервисы: uploadFiles, listLegalEntityFiles, fetchFileContent, getDocument, getStatement, getAllEntries, buildOsvQuery, getConsolidatedOsv, getOsvSummary, exportOsv
- Переписаны consolidations.ts (getVersionCard вместо getVersionData) и company_groups.ts (fetchRelatedGroups, fetchAllLegalEntities)
- Обновлены вызовы функций в компонентах и slices
- Добавлены unit-тесты files.test.ts и osv.test.ts (11 тестов, все PASSED)
- Типизация strict, без any, все тесты и сборка зелёные

Co-Authored-By: Claude Haiku 4.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01EAKRDNzXtRrwmWz9z6PZu3
2026-10-08 00:59:20 +04:00
Andrey Epifancev
e593236eed feat: apiFetchBlob, деньги строками, подписи статусов, dev-proxy (#3)
- Клиент API: ApiError.body, apiFetchBlob для бинарных ответов с автоматическим разбором ошибок
- Деньги: formatAmount (строка Decimal → форматированная с пробелами), parseAmountInput (ввод → нормализация)
- Подписи: documentTypeLabel, documentStatusLabel, fileStatusLabel, periodLabel для UI
- Dev-proxy: /api → localhost:8000 (CORS-free, Content-Disposition читается)
- Типы: Quarter, DocumentType, DocumentStatus, FileStatus в src/types/api.ts
- Удалён smoke.test.ts

Co-Authored-By: Claude Haiku 4.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01EAKRDNzXtRrwmWz9z6PZu3
2026-10-08 00:51:47 +04:00
Andrey Epifancev
841299b12b chore: убрано наследие старого АРМ, vitest, зелёный make check (#3)
Удалены экраны и моки старого АРМ (FileViewer, FilesList, FileUploaderModel,
PDFResultViewer, mocks.ts), рендер PDF перенесён в widgets/DocumentReview/PdfPages.tsx.
Подключён vitest (npm test, make test, в make check). Исправлены все ошибки tsc и biome:
типизированы ответы api.get, слайсы и thunks, убраны console.log и пустые catch.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01EAKRDNzXtRrwmWz9z6PZu3
2026-10-08 00:45:53 +04:00
Andrey Epifancev
da86d47f6d docs: план реализации демо-прототипа (#3)
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01EAKRDNzXtRrwmWz9z6PZu3
2026-10-08 00:34:30 +04:00
Andrey Epifancev
1bf85515b4 docs(openspec): точный путь фикстуры aep_6.pdf (#3)
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01EAKRDNzXtRrwmWz9z6PZu3
2026-10-08 00:24:33 +04:00
Andrey Epifancev
9b03b0f51c docs(openspec): change demo-prototype — прототип пути до сводной ОСВ (#3)
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01EAKRDNzXtRrwmWz9z6PZu3
2026-10-08 00:24:23 +04:00
aep
47df65fd6c Merge pull request 'Подключение обвязки Claude Code к arm-web' (#2) from feat/1-harness-init into test
Reviewed-on: #2
2026-10-07 23:20:19 +03:00
Andrey Epifancev
190458c8bc chore: CLAUDE.md, ARCHITECTURE.md, OpenSpec и Makefile для arm-web (#1)
Обвязка из adopt-project.sh дополнена описанием репозитория по коду: источники истины
для фронта, ветка test как интеграционная, правило «запросы только через api/client».
.gitignore: исправлена склейка строк (package-lock.json.superpowers/), добавлен dist/.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01EAKRDNzXtRrwmWz9z6PZu3
2026-10-08 00:13:42 +04:00
Andrey Epifancev
062bf434c0 chore: claude harness bootstrap 2026-10-08 00:08:58 +04:00
maxim
8747f6318c Add consolidation POST + file upload 2026-10-07 22:48:30 +03:00
maxim
81548eb4ae second update 2026-10-07 12:49:10 +03:00
maxim
383e4e3e5d first commit from arm-core 2026-10-06 13:28:45 +03:00