12 Commits

Author SHA1 Message Date
Andrey Epifancev
d965fdc064 fix(statement): округление уверенности в подсказках шапки, пустые тексты в подсказках, комментарий шапки (T5.1, T5.2, M-1, T3.1, #43)
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01BJKMLHdxMwSUeYcdkwqX4W
2026-10-18 14:03:33 +04:00
Andrey Epifancev
ef4d32592e refactor(statement): один черновик правок и сборка единственного PATCH (#43)
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01BJKMLHdxMwSUeYcdkwqX4W
2026-10-18 13:31:51 +04:00
Andrey Epifancev
f83b03543e feat(types): API формы v5.19 — статусы строк, needs_review, issues, предупреждения файла (#43)
- types/api.ts: LineStatus, Severity, IssueKind, PeriodKind, FileWarningOut, IssueOut, EditionLineOut,
  IssueCountsOut, CellTarget, LinePatch, ColumnPatch; новые поля StatementHeaderOut, ColumnOut, ValueOut,
  LineOut, FailedCheckOut, StatementOut (form_variant, issues, edition_lines), DocumentBrief (issue_counts),
  DocumentOut (issues), JobBrief.warnings — FileWarningOut[].
- statementGrid.ts: GridRow получает статус строки, номер строки, код как распознан, флаги needs_review /
  is_confirmed / codeModified; cellFlags: внимание только по needs_review, новый флаг confirmed.
- labels.ts: lineStatusLabel, severityLabel.
- фикстура __fixtures__/statement-v2.json (БАЛАНС 2025 Q3, NEEDS_CHECK): 16 строк × 2 колонки, у каждой пары ValueOut.
- тесты: переносы полей v2 и покрытие пар строка × колонка, cellFlags по needs_review, подписи; хелперы
  row() / v() / gridRow / doc() дополнены значениями по умолчанию.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01BJKMLHdxMwSUeYcdkwqX4W
2026-10-18 13:15:29 +04:00
Andrey Epifancev
a8a6da0de3 Форматирование перед PR: ESLint + Prettier и npm run format (#29)
- Prettier — единственный форматтер (табы, 140, одинарные кавычки, в CSS — двойные);
  форматтер biome выключен, biome остаётся линтером и сортирует импорты.
- ESLint (flat config): js/typescript-eslint/react-hooks recommended + правила biome.json,
  eslint-config-prettier последним.
- npm run format / make format: eslint --fix → biome check --write → prettier --write.
- npm run lint: eslint + prettier --check; входит в make lint и make check.
- Разовое переформатирование 4 файлов, `(A | B)[]` вместо Array<…> в 3 местах,
  две находки ESLint в ConsoleTable (лишний `?? null`, тернарник-инструкция).

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-15 17:15:14 +04:00
Andrey Epifancev
c3fcac2efd feat(osv): «Просмотр ОСВ» — плоская таблица вместо дерева (#12)
- Строка = аналитика нижнего уровня (контрагент, объект ОС); строки счетов и
  субсчетов не показываются, договоры (CONTRACT) — в строке контрагента, как в
  сводной ОСВ (§3); субсчёт/подразделение без нижних строк с суммами — строкой с
  пустой аналитикой.
- Колонки: Субсчёт · Подразделение (если уровень есть в файле) · Контрагент /
  аналитика · ИНН · 6 сумм; закреплённая строка «Итого по документу» = сумма
  корневых строк счёта (= «Итого» файла 1С).
- Поиск по контрагенту/ИНН, фильтр по субсчёту, «Строк: N» — на клиенте.
- flattenEntries (osvRows.ts) и точное sumAmounts (копейками, BigInt) с тестами;
  EntryOut.group_type — как в схеме arm-core; entryTree удалён.
- Пустой документ: «В документе нет строк» вместо «No data».

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-08 16:22:16 +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
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
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
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
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