Commit Graph

  • f6e8da9cf6 test(fixtures): обобщение тестов и golden на osv-dkb/** (многолистовые книги, ожидаемые needs_check, период каталога) Andrey Epifancev 2026-10-06 13:23:34 +04:00
  • 76b2b36f21 openspec: спека Среза 2b — парсер ББ и ОФР из Excel (statement-parsing), контракт v1.2 Andrey Epifancev 2026-10-06 13:21:27 +04:00
  • a592c68509 feat(osv): ИНН из текста названия контрагента, ИНН строкой выше, «ИНН/КПП» в ячейке Andrey Epifancev 2026-10-06 13:13:44 +04:00
  • af8ec918c5 feat(osv): шапка ОСВ без меток и «Счет: Код / Наименование» (ОСВ 63 Новоросметалл), «Итого» ↔ Σ уровня 0 по нетто Andrey Epifancev 2026-10-06 13:04:31 +04:00
  • 1c26e7810e style(osv): длина строк докстрингов Andrey Epifancev 2026-10-06 12:50:46 +04:00
  • 6fd7adde22 feat(osv): «Итого» сверяется с суммой строк уровня 0; «Итого развернутое» — вторая итоговая строка Andrey Epifancev 2026-10-06 12:50:35 +04:00
  • 30f78c42e7 feat(osv): период-диапазон месяцев «Октябрь 2024 г. – Сентябрь 2025 г.» (скользящий, не с начала года) Andrey Epifancev 2026-10-06 12:49:11 +04:00
  • e3eeda8d84 Merge pull request 'test(fixtures): 72 реальных ОСВ и 88 golden-снимков (Счастливочная 1 кв 2025)' (#12) from feat/10-fixtures-72 into main aep 2026-10-06 11:29:30 +03:00
  • fafe11349b test(fixtures): 72 реальных ОСВ — Счастливочная 1 кв 2025 (02, 58, 62, 66, 67, 76), 88 golden-снимков Andrey Epifancev 2026-10-06 12:24:18 +04:00
  • 1f7ddff6af Merge pull request 'openspec: архив change slice-2a-osv-parser' (#8) from chore/archive-slice-2a-osv-parser into main aep 2026-10-05 19:46:02 +03:00
  • 187106c0de openspec: архив change slice-2a-osv-parser (2026-10-05), спека osv-parsing, Purpose tabular-recognition-service → v1.1 и реальный парсер Andrey Epifancev 2026-10-05 20:22:56 +04:00
  • 0db3d9488f Merge pull request 'Срез 2a: парсер ОСВ из XLS/XLSX/XLSB — динамическое обнаружение структуры (§1), контракт v1.1, golden на 66 реальных файлах' (#6) from feat/5-slice-2a-osv-parser into main aep 2026-10-05 19:18:05 +03:00
  • 1eb57da5cb fix(readers): предсканирование xlsx без sniff — expat по всем частям архива, потолок крупных merged в xls (I-1б) Andrey Epifancev 2026-10-05 18:11:19 +04:00
  • 9820a0e7c0 docs: ledger SDD Среза 2a (решения, находки, статусы) Andrey Epifancev 2026-10-05 17:18:54 +04:00
  • 471ae70873 docs: README — остаточные риски предсканирования merge-диапазонов (R-26) Andrey Epifancev 2026-10-05 17:18:32 +04:00
  • 0592a9128b openspec: решение R-26 (design №38) — остаточный обход предсканирования, follow-up Andrey Epifancev 2026-10-05 17:18:18 +04:00
  • 6f579b6403 fix: merge-bomb — потоковый expat-скан всех XML-частей (I-1б), after-read считает только индексируемые диапазоны Andrey Epifancev 2026-10-05 17:06:53 +04:00
  • b0a86c9b10 openspec: решение R-25 (design №37) — вторая волна по I-1(б) Andrey Epifancev 2026-10-05 16:50:05 +04:00
  • 4651513820 docs: финальное ревью — пример needs_check, спека (лимиты чтения, ИНН, ACCOUNT_RE, риски R-21), OQ-81 Andrey Epifancev 2026-10-05 16:32:52 +04:00
  • 9b8b8ea727 fix: финальное ревью — лимиты чтения xlsx (I-1), лог traceback (I-2), ACCOUNT_RE (M-1), ИНН/КПП (M-3) Andrey Epifancev 2026-10-05 16:29:53 +04:00
  • 9526a1266b openspec: решения R-23, R-24 (design №35–36) по финальному ревью Andrey Epifancev 2026-10-05 16:14:12 +04:00
  • 7738221b5a docs: README/CLAUDE.md Среза 2a, tasks.md, спека-дельты Andrey Epifancev 2026-10-05 15:53:11 +04:00
  • bc143ef140 test: golden-снимки, линтер координат, покрытие словарей; make golden-update Andrey Epifancev 2026-10-05 15:28:41 +04:00
  • afcd7d5ad0 openspec: решение R-22 (design №32) — покрытие словарей: коды валют ISO исключены Andrey Epifancev 2026-10-05 15:11:59 +04:00
  • e1559c9770 test: генератор синтетики и сценарии спеки на синтетических файлах Andrey Epifancev 2026-10-05 15:04:50 +04:00
  • 621c0b2dc4 feat: реальный парсер в воркере, CLI разбора файла, интеграционный сценарий Andrey Epifancev 2026-10-05 14:51:01 +04:00
  • cf532a325b openspec: решение R-21 (design №31) — сверка сальдо родителя по нетто, если у родителя оно свёрнуто Andrey Epifancev 2026-10-05 14:39:10 +04:00
  • e705d75520 feat(parser): контрольные суммы §1.4, статусы, OsvParser как парсер по умолчанию, лимиты Andrey Epifancev 2026-10-05 14:37:21 +04:00
  • da7215b314 fix(parser): буквенные субсчета 76.АВ/ВА/ОТ — счета (T8.1, R-16); тесты T8.2, T8.3, T8.5 Andrey Epifancev 2026-10-05 14:19:22 +04:00
  • e1dc3ba075 openspec: решения R-18…R-20 (design №28–30), уточнение R-16 Andrey Epifancev 2026-10-05 14:16:33 +04:00
  • 0b7a988c31 openspec: решения R-16, R-17 (design №26–27) — буквенные субсчета, ИНН только из колонки Andrey Epifancev 2026-10-05 14:09:17 +04:00
  • 4a16f193af feat(parser): классификация строк по group_schema (§1.3) Andrey Epifancev 2026-10-05 14:07:33 +04:00
  • 663ba17716 fix(parser): inn_digits склеивает только группы цифр через пробел (T7.4) Andrey Epifancev 2026-10-05 14:07:33 +04:00
  • 46c427e3c1 fix(parser): inn_digits извлекает ИНН из текста с обрамлением (T7.1, R-15) Andrey Epifancev 2026-10-05 13:50:09 +04:00
  • b8f3e32984 openspec: решение R-15 (design №25) — ИНН из текста по цифрам Andrey Epifancev 2026-10-05 13:46:43 +04:00
  • 60671bc99d docs(plan): отметка Task 7 выполненной Andrey Epifancev 2026-10-05 13:46:04 +04:00
  • 1f2f050838 feat(parser): нормализация сумм и ИНН (Decimal, текстовые форматы) Andrey Epifancev 2026-10-05 13:45:59 +04:00
  • 5a3d6f9c9e openspec: решение R-14 (design №24), уточнение R-13 Andrey Epifancev 2026-10-05 13:41:04 +04:00
  • 68c5e2cce0 fix(parser): дедлайн внутри стратегий иерархии, тесты дедлайна (T6.1, T6.5) Andrey Epifancev 2026-10-05 13:40:20 +04:00
  • c8cdfa4de7 openspec: решение R-13 (design №23) — пустая ОСВ: hierarchy=trivial, TOTAL без сумм Andrey Epifancev 2026-10-05 13:33:25 +04:00
  • 1eef422b6e feat(parser): каскад стратегий иерархии строк (outline → indent → account_pattern → sums) Andrey Epifancev 2026-10-05 13:31:59 +04:00
  • 8e627e80c5 fix(parser): шапка ОСВ — «за»/«валюта» в названии организации, диапазоны дат с «г.» (T5.1–T5.5, T5.7) Andrey Epifancev 2026-10-05 13:19:18 +04:00
  • 83dd241a00 feat(parser): шапка ОСВ и схема группировок (§1.1, §1.5) Andrey Epifancev 2026-10-05 13:12:20 +04:00
  • 5868b348a2 openspec: решение R-12 (design №22) — группы заголовка ОСВ: обороты и конец обязательны Andrey Epifancev 2026-10-05 13:03:55 +04:00
  • 0015532019 fix(parser): детектор заголовка — обязательны обороты и конец, ИНН без ведущего нуля (T4.1–T4.4, T4.6) Andrey Epifancev 2026-10-05 13:03:15 +04:00
  • a833945669 feat(parser): детекторы листов ОСВ, заголовка таблицы и колонок по содержимому Andrey Epifancev 2026-10-05 12:54:11 +04:00
  • fcd609c633 feat(rules): словари ОСВ (заголовки, группировки, периоды, типы данных) и загрузчик Andrey Epifancev 2026-10-05 12:28:46 +04:00
  • c6a768dc70 fix(parser): ячейки из одних пробелов не хранятся в Sheet.cells (T2.1) Andrey Epifancev 2026-10-05 12:16:28 +04:00
  • ed401a00a3 openspec: решение R-11 (design №21) — расхождения D-1/tasks 1.3 правятся в Task 13 Andrey Epifancev 2026-10-05 12:15:33 +04:00
  • b5a3b480b2 feat(parser): модель листа Sheet и читатели xlsx/xls/xlsb Andrey Epifancev 2026-10-05 12:11:16 +04:00
  • 38386b53a2 test: доступ к ../fixtures (ARM_KA_FIXTURES), параметризация по 66 ОСВ; зависимости openpyxl/xlrd/pyxlsb Andrey Epifancev 2026-10-05 12:02:40 +04:00
  • 777d4aa850 contract: needs_check-пример по docs (строка 3 CURRENCY, уровень 2), README v1.1 Andrey Epifancev 2026-10-05 11:59:55 +04:00
  • 947d2a6a51 contract: v1.1 — OsvRow.extra, CONTRACT_VERSION 1.1, копия схемы Andrey Epifancev 2026-10-05 11:57:22 +04:00
  • f03bfca92d openspec: решения контроллера R-1…R-10 (design №11–20) по pre-flight плана Среза 2a Andrey Epifancev 2026-10-05 11:54:00 +04:00
  • b34e113824 chore: план исполнения Среза 2a (парсер ОСВ, 14 задач) Andrey Epifancev 2026-10-05 11:50:38 +04:00
  • 6b37a88f26 openspec: уточнения D-4 и сценария пустой ОСВ Andrey Epifancev 2026-10-05 11:42:51 +04:00
  • a6fd2d0535 OpenSpec: change slice-2a-osv-parser (парсер ОСВ §1 — спека) Andrey Epifancev 2026-10-05 11:41:52 +04:00
  • 277e01d205 Merge pull request 'chore(openspec): архив change slice-0-skeleton' (#4) from chore/archive-slice-0-skeleton into main aep 2026-10-04 18:48:50 +03:00
  • 6bb111db38 chore(openspec): архив change slice-0-skeleton Andrey Epifancev 2026-10-04 19:44:42 +04:00
  • e966ce46bb Merge pull request 'Срез 0: скелет tabular-parser — без фронта и БД, воркер NATS без JetStream, парсер-заглушка, контракт v1.0' (#3) from feat/1-slice-0-skeleton into main aep 2026-10-04 18:41:00 +03:00
  • 6ae072e502 docs: решения R-36..R-40 (финальный фикс-раунд) в design.md Andrey Epifancev 2026-10-04 03:50:22 +04:00
  • 479a76f81b test: старт с минимальным окружением и страж «без БД и фронта» (M-8) Andrey Epifancev 2026-10-04 03:48:34 +04:00
  • 8685441fcd fix: настройки — SERVICE_NAME только tabular-parser, PUBLISH_RETRIES ≥ 0 (M-1, M-3, M-4, M-5) Andrey Epifancev 2026-10-04 03:48:34 +04:00
  • bf2f60b3b5 fix: NATS — отказ в правах логируется отдельно; drain ограничен 10 с (I-3, M-7) Andrey Epifancev 2026-10-04 03:46:33 +04:00
  • c9cdf7592d docs: спека — когда SCHEMA_MISMATCH не публикуется; nats = off в proposal (I-2, M-2) Andrey Epifancev 2026-10-04 03:45:03 +04:00
  • 30c3e8281a fix: .dockerignore — в образ не попадают api/.env, api/.venv, кэши и тесты (I-1) Andrey Epifancev 2026-10-04 03:44:27 +04:00
  • ba4dc41b9e docs: решения R-34 (отмена R-11), R-35 в design.md Andrey Epifancev 2026-10-04 03:43:00 +04:00
  • 71e79670c0 docs: предложение P-4 (порт tabular-parser в docs/dev/README.md) Andrey Epifancev 2026-10-04 03:35:04 +04:00
  • a6da24ba67 chore: отметка 5.2 — прогон DoD пройден (make check-full, ручная проверка, openspec validate) Andrey Epifancev 2026-10-04 03:33:45 +04:00
  • 54197a07db docs: README — адрес по умолчанию 0.0.0.0, а .env.example сужает до 127.0.0.1 Andrey Epifancev 2026-10-04 03:33:45 +04:00
  • 1bbcdc433e chore: отметка 5.1 — make check-full зелёный Andrey Epifancev 2026-10-04 03:31:05 +04:00
  • e0b2aaca9a docs: оговорка про queue group в интеграционных тестах, правка CLAUDE.md (T10.3, T3.3) Andrey Epifancev 2026-10-04 03:29:28 +04:00
  • 67a4311150 docs: докстринги контракта с точки зрения tabular-parser, паритет subjects с arm-core (T6.1-T6.3) Andrey Epifancev 2026-10-04 03:29:28 +04:00
  • 6491fdd538 test: проверка остановки воркера по снятым задачам и устойчивый teardown uploads (T10.1, T10.2) Andrey Epifancev 2026-10-04 03:29:28 +04:00
  • 5c96189146 docs: решения R-29..R-33 (интеграционный тест 4.4) в design.md Andrey Epifancev 2026-10-04 03:27:30 +04:00
  • a62d2e24b1 test: интеграционный round-trip сервиса против compose-NATS и MinIO (задача 4.4) Andrey Epifancev 2026-10-04 03:23:35 +04:00
  • c16a7f6bf6 docs: решения R-27, R-28 (фикс-раунд задачи 4.3) в design.md Andrey Epifancev 2026-10-04 03:19:59 +04:00
  • b7d4f0c17a test, docs: порядок старта и проверка бакета в тестах приложения; README/CLAUDE.md без устаревших «добавляется задачей», spec без номера рулинга Andrey Epifancev 2026-10-04 03:18:09 +04:00
  • 18276e607e fix: воркер — задание не теряется молча при остановке во время ack, невалидный дубль job_id не публикует SCHEMA_MISMATCH Andrey Epifancev 2026-10-04 03:17:11 +04:00
  • 82756b8c97 docs: D-6 — значение nats=off в healthcheck (R-17) Andrey Epifancev 2026-10-04 03:15:53 +04:00
  • e2d31b894c docs: решения R-18..R-26 (воркер, задача 4.3) в design.md Andrey Epifancev 2026-10-04 03:10:59 +04:00
  • cfba21b615 docs: предложения P-1–P-3 по контракту из задачи 4.3; отметки Task 9 / 4.3 Andrey Epifancev 2026-10-04 03:09:06 +04:00
  • f7cbe968e1 chore: удалён шаблонный core/nats_callback.py (R-4), CLAUDE.md актуализирован Andrey Epifancev 2026-10-04 03:09:06 +04:00
  • a7862c1843 feat: запуск воркера в lifespan при NATS_ENABLED и поле nats = ok | down | off в /healthcheck Andrey Epifancev 2026-10-04 03:09:06 +04:00
  • e1231dcdb4 feat: воркер распознавания src/core/worker.py — ack до чтения S3, дедуп job_id, таблица ошибок D-5 Andrey Epifancev 2026-10-04 03:05:47 +04:00
  • ff3ec5684a docs: решение R-17 (значение nats=off в healthcheck) в design.md Andrey Epifancev 2026-10-04 02:59:24 +04:00
  • 6c8d7b6e9b fix: NATS — PUBLISH_RETRIES как повторы после первой попытки (R-16), flush после подписки, снятие подписок при сбое on_connected, проброс отмены в stop(), error-лог самопроизвольного закрытия Andrey Epifancev 2026-10-04 02:57:23 +04:00
  • a8dc5cc314 docs: решения R-15, R-16 в design.md, уточнена формулировка R-14 Andrey Epifancev 2026-10-04 02:53:18 +04:00
  • 6525939888 test: интеграционные тесты NATS (заголовок Nats-Msg-Id, queue group) и S3Storage против compose; отметки Task 8 / 4.2 Andrey Epifancev 2026-10-04 02:48:26 +04:00
  • b545143f9e refactor: lifespan подключается к NATS через core/nats.py (фоново, старт не ждёт NATS) Andrey Epifancev 2026-10-04 02:47:47 +04:00
  • ff08905580 feat: слой NATS src/core/nats.py — фоновое подключение (nkeys/без), подписка на запросы в queue group, публикация с повторами Andrey Epifancev 2026-10-04 02:47:17 +04:00
  • 4c32cd36ac feat: S3Storage.get_bytes/put_json и протокол Storage вместо шаблонных put_object/get_object Andrey Epifancev 2026-10-04 02:45:25 +04:00
  • 5d5b1b7f3b docs: решения R-13, R-14 в design.md Andrey Epifancev 2026-10-04 02:43:07 +04:00
  • 84b5404215 feat: интерфейс парсера (Parser, ParseOutcome), NullParser с NOT_IMPLEMENTED, get_parser Andrey Epifancev 2026-10-04 02:41:02 +04:00
  • b7af0d1824 docs: README каталога api/rules (словари синонимов парсера) Andrey Epifancev 2026-10-04 02:41:02 +04:00
  • 6a8f0d119a chore: make test без обёртки над кодом 5 pytest; отметки Task 6 / 3.1 Andrey Epifancev 2026-10-04 02:38:17 +04:00
  • 5b913803b4 feat: pydantic-модели контракта v1.0 (src/contract) и unit-тесты контракта Andrey Epifancev 2026-10-04 02:38:17 +04:00
  • f8a584af15 chore: копии схем контракта v1.0 и примеров в api/contracts Andrey Epifancev 2026-10-04 02:38:17 +04:00
  • e676e75c38 docs: решения R-11, R-12 в design.md Andrey Epifancev 2026-10-04 02:36:16 +04:00
  • ebf87f39da chore: Dockerfile (python:3.11-slim), api/.env.example и api/.env.test Andrey Epifancev 2026-10-04 02:35:48 +04:00