Commit Graph

  • 6882493d98 feat(normalizer): шапка документа из data_ocr — ИНН, единицы, дата отчёта (§11.1 п. 8) Andrey Epifancev 2026-10-07 00:25:48 +04:00
  • 462ea9ee32 feat(normalizer): строки таблицы OCR — шапки, классы строк, тип по кодам (§11.1 п. 3–5) Andrey Epifancev 2026-10-07 00:21:20 +04:00
  • 81081a90c7 docs(openspec): решения №17–20 без обсуждения (Срез 3a, Task 1–5) Andrey Epifancev 2026-10-07 00:16:38 +04:00
  • 0123dc0067 feat(normalizer): раскладка колонок OCR — шапка «Код» и вывод по данным (§11.1 п. 3) Andrey Epifancev 2026-10-07 00:15:13 +04:00
  • 60092b8293 feat(normalizer): разбор сумм OCR — перенос _parse_amount (§11.1 п. 7) Andrey Epifancev 2026-10-07 00:10:20 +04:00
  • 5f56f62dbb feat(normalizer): разбор дат из OCR — дословный перенос date_utils старого ядра (§11.1 п. 2) Andrey Epifancev 2026-10-07 00:06:14 +04:00
  • 746d993077 fix(normalizer): замена неразрывного пробела в fix_lookalikes, тест Andrey Epifancev 2026-10-07 00:00:31 +04:00
  • cea8dfe485 feat(normalizer): очистка OCR-текста — двойники, разделитель клеток, clean_value (§11.1 п. 1, 6) Andrey Epifancev 2026-10-06 23:56:16 +04:00
  • ecdf9a4e13 fix(normalizer): опечатка кода 1220 в справочнике 66n, тест данных редакции Andrey Epifancev 2026-10-06 23:44:44 +04:00
  • 393d65208f feat(normalizer): справочники yaml с редакциями форм, загрузчик правил, SCAN_CLEANUP/SCAN_RULES_DIR (D-7) Andrey Epifancev 2026-10-06 23:33:48 +04:00
  • 533e5a2a4a Merge remote-tracking branch 'origin/main' into feat/6-slice-3a-ocr-normalizer Andrey Epifancev 2026-10-06 23:27:43 +04:00
  • 86fa779c0c openspec/plan: Срез 3a приведён к DBML и 2b — повтор кода (№15), string_value только для нечисла (№16) Andrey Epifancev 2026-10-06 23:27:42 +04:00
  • 7653860bb2 Merge pull request 'chore(contract): копия docs/contracts после M-12 ($comment, примеры)' (#7) from fix/contract-v1-2-examples into main aep 2026-10-06 22:21:40 +03:00
  • 55c017e819 chore(contract): копия docs/contracts — $comment без «1.1», пример Excel done, OCR-пример без checks, описание мягких нарушений (M-12, OQ-138) Andrey Epifancev 2026-10-06 23:17:33 +04:00
  • b1da9b8774 plan: Срез 3a — Task 0 выполнена (main с v1.2 влит, 749 passed), OQ с 144, CONTRACT_VERSION 1.0 (решение №14) Andrey Epifancev 2026-10-06 22:48:40 +04:00
  • 3bc01e5e23 Merge remote-tracking branch 'origin/main' into feat/6-slice-3a-ocr-normalizer Andrey Epifancev 2026-10-06 22:46:47 +04:00
  • d13c65d172 Merge pull request 'chore(contract): копия схемы v1.2 (без логики)' (#5) from chore/contract-v1-2 into main aep 2026-10-06 21:43:48 +03:00
  • ec916aee3f plan: Срез 3a — план реализации (18 задач), решение №13 в design.md Andrey Epifancev 2026-10-06 19:19:24 +04:00
  • 0894d2b89b openspec: решение №12 (скобка как }) — в открытые вопросы, follow-up в docs OQ (решение владельца) Andrey Epifancev 2026-10-06 18:59:07 +04:00
  • a15fe65d52 openspec: спека Среза 3a — горячие папки как у armka_file_worker, нормализатор OCR → statementDocument v1.2 (#6) Andrey Epifancev 2026-10-06 18:39:52 +04:00
  • e2f1bb5f4a chore(contract): копия схемы v1.2 и модели (DISCLOSURE, checks, границы периода), без изменения логики Andrey Epifancev 2026-10-06 14:30:44 +04:00
  • dffc18a2f1 Merge pull request 'chore(openspec): архив change slice-0-skeleton' (#4) from chore/archive-slice-0-skeleton into main aep 2026-10-04 18:48:43 +03:00
  • 7cec4596d9 chore(openspec): архив change slice-0-skeleton Andrey Epifancev 2026-10-04 19:44:47 +04:00
  • 8bb10949ec Merge pull request 'Срез 0: скелет scan-gateway — без фронта и БД, горячие папки local/smb, воркер NATS без JetStream, эмулятор ИС Сканирование' (#3) from feat/1-slice-0-skeleton into main aep 2026-10-04 18:41:18 +03:00
  • b6d7753a80 Срез 0 [7.5]: M-4 — валидация SCAN_SETTLE_SECONDS < SCAN_TIMEOUT_SECONDS Andrey Epifancev 2026-10-04 16:04:19 +04:00
  • 8c3c06266c Срез 0 [7.5]: M-2 — склейка и сериализация ответа в потоке, сбой сериализации как сбой записи raw (закрывает T3.1) Andrey Epifancev 2026-10-04 16:04:19 +04:00
  • 5b16a53a99 Срез 0 [7.5]: M-1 — TIMEOUT при чередующихся ошибках опроса несёт описание последней ошибки (R-39, design #80) Andrey Epifancev 2026-10-04 16:02:48 +04:00
  • b127c02422 Срез 0 [7.5]: финальная волна, документы — T5.1, T5.3, T6.1, T6.3, T6.6, M-3 Andrey Epifancev 2026-10-04 16:01:13 +04:00
  • ed5622374e Срез 0 [7.5]: сквозная проверка в реальном compose — aep_3/aep_6/aep_5.PDF прошли; R-27, R-37, R-38 (design #77–79) Andrey Epifancev 2026-10-04 15:30:46 +04:00
  • 877541db10 Срез 0 [7.4]: README и CLAUDE.md — набор ответа, Tmp, settle, склеенный raw; уточнение D-5, отметки 7.4 Andrey Epifancev 2026-10-04 15:08:07 +04:00
  • 68389d5cc2 Срез 0 [7.4]: интеграционные тесты — наборы ответа ИС на реальных фикстурах (aep_3/aep_6/aep_5.PDF) Andrey Epifancev 2026-10-04 15:04:30 +04:00
  • 24af6f1b9a Срез 0 [7.3]: эмулятор — набор файлов ответа на задание Andrey Epifancev 2026-10-04 14:48:57 +04:00
  • 2a0d0a8939 Срез 0 [7.2]: спека и design — R-29 (settle от первого опроса), D-5 с warnings, решения №67–74 Andrey Epifancev 2026-10-04 14:28:26 +04:00
  • 973cf2717f Срез 0 [7.2]: склейка ответа ИС, сырой raw/ = склейка, NullNormalizer по файлам, metrics.warnings Andrey Epifancev 2026-10-04 14:27:07 +04:00
  • 83e55af941 Срез 0 [7.2, fix T2.1 T2.2 T2.4]: горячие папки — повторный листинг после чтения, ENOTDIR в SMB Andrey Epifancev 2026-10-04 14:18:29 +04:00
  • a0ab13d3d9 docs: поправка человека — убрана формулировка про части одного документа; в одном json несколько таблиц разных форм Andrey Epifancev 2026-10-04 14:13:32 +04:00
  • ee4359d535 Срез 0 [7.1]: отметка выполнения Task 2 в плане и задачи 7.1 в tasks.md Andrey Epifancev 2026-10-04 14:01:39 +04:00
  • e8453159e8 Срез 0 [7.1]: горячие папки — набор *.json ответа, готовность по settle, служебный каталог Tmp Andrey Epifancev 2026-10-04 14:01:39 +04:00
  • 52c032a308 Срез 0 [fix T1.1-T1.11]: согласованность артефактов change после решений человека Andrey Epifancev 2026-10-04 13:46:09 +04:00
  • 65ae419ee5 docs: поправка человека — соответствие «таблица ↔ документ» не взаимно однозначно (план, предложение по OQ-77) Andrey Epifancev 2026-10-04 13:39:16 +04:00
  • 5dbb4dab20 Срез 0 [7.0]: change обновлён под решения человека 04.10.2026 Andrey Epifancev 2026-10-04 13:38:48 +04:00
  • 0ef69a1fda chore: план доработки scan-gateway по реальным ответам ИС (несколько json на задание, служебный каталог) Andrey Epifancev 2026-10-04 13:32:42 +04:00
  • 842f7a69e4 docs: README про усечение длинных имён, решения финальной волны (R-21, C-1, I-1, T12.1, T7.3) в design.md Andrey Epifancev 2026-10-04 05:14:14 +04:00
  • d91c025f73 Срез 0 [fix proposal]: предложения для docs дополнены итогами финального ревью Andrey Epifancev 2026-10-04 05:06:28 +04:00
  • 17e334f556 Срез 0 [fix docs]: README, CLAUDE.md и design.md #32 сверены с кодом Andrey Epifancev 2026-10-04 05:05:42 +04:00
  • ee272b2b92 Срез 0 [fix T2.2]: удалён мёртвый _normalize_root_path из app.py Andrey Epifancev 2026-10-04 05:04:07 +04:00
  • ef22e3b075 Срез 0 [fix T7.3, T7.5]: inbox_name укорачивает длинные имена; сбой удаления .part не маскирует ошибку Andrey Epifancev 2026-10-04 05:04:00 +04:00
  • d288d19622 Срез 0 [fix T12.4]: тест суррогата в original_name назван по фактическому поведению Andrey Epifancev 2026-10-04 05:02:43 +04:00
  • 0420c85219 Срез 0 [fix T12.1]: SCHEMA_MISMATCH для задания в работе/обработанного не публикуется Andrey Epifancev 2026-10-04 05:02:28 +04:00
  • 38f67bc582 Срез 0 [fix I-1]: make up создаёт бакет (run --rm minio-init) Andrey Epifancev 2026-10-04 05:01:39 +04:00
  • ad3fb34dba Срез 0 [fix C-1]: пакет src не создаёт приложение — эмулятор стартует без настроек шлюза Andrey Epifancev 2026-10-04 05:01:16 +04:00
  • 58bcae2a57 Срез 0 [6.3]: прогон DoD, предложения для docs и правки .env.example Andrey Epifancev 2026-10-04 04:44:26 +04:00
  • 27fe24cb5e Срез 0 [6.2]: make check-full = check + test-integration + docker-build Andrey Epifancev 2026-10-04 04:38:16 +04:00
  • e2286354c9 docs: D-9 design.md приведён к R-7/R-10 (интеграционный тест в процессе, синтетический успех) Andrey Epifancev 2026-10-04 04:33:00 +04:00
  • 22f62a4eda Срез 0 [1.3]: README.md и актуализированный CLAUDE.md, отметка задачи Andrey Epifancev 2026-10-04 04:31:54 +04:00
  • 700aba4dc3 docs: решения исполнителя задачи 6.1 в design.md slice-0-skeleton Andrey Epifancev 2026-10-04 04:28:36 +04:00
  • 6552ebe345 Срез 0 [6.1]: сквозной интеграционный тест test_roundtrip.py, отметка задачи Andrey Epifancev 2026-10-04 04:23:10 +04:00
  • 04fff8bb89 docs: решения исполнителей задач 5.3, 5.4 в design.md slice-0-skeleton Andrey Epifancev 2026-10-04 04:13:14 +04:00
  • d74b56a0d1 Срез 0 [5.4]: тест параллелизма воркера (test_worker_concurrency.py), отметка задачи Andrey Epifancev 2026-10-04 04:07:38 +04:00
  • d199414e9c Срез 0 [5.4]: обвязка тестов воркера — в tests/worker_helpers.py и tests/unit/conftest.py Andrey Epifancev 2026-10-04 04:03:47 +04:00
  • 09f0bb32e2 Срез 0 [5.3]: /healthcheck.nats и .hotfolder, воркер и NATS в lifespan, отметка задачи Andrey Epifancev 2026-10-04 03:50:22 +04:00
  • ea49abd03b Срез 0 [5.3]: воркер шлюза (src/core/worker.py) и unit-тесты сценариев spec Andrey Epifancev 2026-10-04 03:48:37 +04:00
  • 9adec14b2e docs: решения R-13..R-20 и исполнителя задачи 5.2 в design.md slice-0-skeleton Andrey Epifancev 2026-10-04 03:37:50 +04:00
  • c3a62bb27c Срез 0 [5.2] T11.1: PUBLISH_RETRIES — число повторов после первой попытки (до 4 попыток), R-13 Andrey Epifancev 2026-10-04 03:35:24 +04:00
  • 5d82607715 Срез 0 [5.2]: слой NATS без JetStream (src/core/nats.py), интеграционные тесты, отметка задачи Andrey Epifancev 2026-10-04 03:27:35 +04:00
  • c6dfb3e22c Срез 0 [5.2]: S3Storage (src/core/clients.py): get_bytes, put_bytes, put_json, from_settings с secure Andrey Epifancev 2026-10-04 03:27:23 +04:00
  • b9e1be37ee docs: решения R-12 и исполнителя задачи 5.1 в design.md slice-0-skeleton, D-5 синхронизирован Andrey Epifancev 2026-10-04 03:20:41 +04:00
  • f448992e16 Срез 0 [5.1]: нормализатор ответа ИС (src/normalizer): Normalizer, NormalizeOutcome, NullNormalizer Andrey Epifancev 2026-10-04 03:18:17 +04:00
  • 9ad1b88748 docs: решения R-10, R-11 и исполнителя задачи 4.3 в design.md slice-0-skeleton Andrey Epifancev 2026-10-04 03:16:07 +04:00
  • 0ea59da2a3 Срез 0 [4.3] T9.1: test_exact_beats_prefix различает точное имя и префикс Andrey Epifancev 2026-10-04 03:14:31 +04:00
  • b489f6e0b3 Срез 0 [4.3]: эмулятор ИС Сканирование (src/scan_emulator), unit-тесты, отметка задачи Andrey Epifancev 2026-10-04 03:10:36 +04:00
  • 97ce49eed2 docs: решения R-9 и исполнителя задач 4.1, 4.2 в design.md slice-0-skeleton Andrey Epifancev 2026-10-04 03:06:46 +04:00
  • 5fb046fced Срез 0 [4.2] T8.1-T8.3: inbox_name заменяет символы Windows/SMB, poll ждёт занятый файл, put терпит отказ mkdir при существующем Input Andrey Epifancev 2026-10-04 03:05:02 +04:00
  • 1695573b35 Срез 0 [4.2]: SmbHotFolder поверх smbclient (src/gateway/smb.py), фабрика create_hotfolder, unit-тесты, отметка задачи Andrey Epifancev 2026-10-04 02:57:31 +04:00
  • ad5cb7f0f0 Срез 0 [4.2] T7.4: общие проверки имени и job_id в hotfolder.py, запрет символов Windows/SMB Andrey Epifancev 2026-10-04 02:53:48 +04:00
  • 6d1f42fe1b Срез 0 [4.1]: протокол HotFolder и LocalHotFolder (src/gateway/hotfolder.py), unit-тесты на tmp_path, отметка задачи Andrey Epifancev 2026-10-04 02:48:42 +04:00
  • 434ae51434 docs: решения исполнителей задач 2.1, 2.2, 3.1 в design.md slice-0-skeleton Andrey Epifancev 2026-10-04 02:47:21 +04:00
  • 8c8237954e Срез 0 [3.1] T6.1, T6.2: is_supported_major без int() — шаблон схемы ^1\.\d+$, тесты на длинную строку и "01.0" Andrey Epifancev 2026-10-04 02:45:54 +04:00
  • 5821497713 Срез 0 [3.1]: pydantic-модели контракта v1.0 (src/contract), конструкторы конвертов, тесты контракта, отметка задачи Andrey Epifancev 2026-10-04 02:43:08 +04:00
  • 24ebde013a Срез 0 [3.1]: api/contracts — копии схем и examples контракта v1.0 из docs/contracts (cp, байт в байт) Andrey Epifancev 2026-10-04 02:41:44 +04:00
  • b5ac55084d Срез 0 [2.2]: .env.example дополнен, .env.test, тесты на .env.test (T2.6), отметка задачи Andrey Epifancev 2026-10-04 02:38:46 +04:00
  • d1bcff8f5c Срез 0 [2.2]: Dockerfile и .dockerignore (без raisa_*), .dockerignore больше не в .gitignore Andrey Epifancev 2026-10-04 02:38:46 +04:00
  • 7f99f50434 Срез 0 [2.1] T4.1: make venv фильтрует raisa_* и в requirements.txt Andrey Epifancev 2026-10-04 02:35:10 +04:00
  • 55fa7ce25c Срез 0 [2.1]: ruff format и правки линтера в коде шаблона, отметка задачи Andrey Epifancev 2026-10-04 02:33:18 +04:00
  • 5a818b4356 Срез 0 [2.1]: pyproject (ruff, mypy), requirements-dev, Makefile, маркеры pytest Andrey Epifancev 2026-10-04 02:33:01 +04:00
  • 8d52d9bbd2 docs: решения R-8 и решения исполнителя задачи 1.2 в design.md slice-0-skeleton Andrey Epifancev 2026-10-04 02:31:50 +04:00
  • 6036625193 Срез 0 [1.2]: вернуть пины argon2-cffi и argon2-cffi-bindings (нужны miniopy-async) Andrey Epifancev 2026-10-04 02:30:54 +04:00
  • b6eecfcf34 Срез 0 [1.2]: каркас приложения без БД и фронта, настройки scan-gateway Andrey Epifancev 2026-10-04 02:27:42 +04:00
  • 31a50879c2 Срез 0: вырезать фронт и БД-каркас шаблона Andrey Epifancev 2026-10-04 02:23:15 +04:00
  • fe0fc0ea08 docs: решения контроллера R-1..R-7 (pre-flight) в design.md slice-0-skeleton Andrey Epifancev 2026-10-04 02:21:59 +04:00
  • 80cfd20e8b chore: .gitignore — перенос строки после .cursorignore (шаблон без завершающего перевода строки) Andrey Epifancev 2026-10-03 17:54:50 +04:00
  • 5aa75eee00 chore: план исполнения SDD из tasks.md change'а, служебные каталоги в .gitignore Andrey Epifancev 2026-10-03 17:53:56 +04:00
  • dab74844fa Merge pull request 'Срез 0 (proposal): соглашения шаблона в CLAUDE.md, change slice-0-skeleton — скелет scan-gateway и эмулятор' (#2) from feat/1-slice-0-skeleton into main aep 2026-10-03 16:43:00 +03:00
  • 6f2e227978 docs: change slice-0-skeleton под факты платформы — NATS без JetStream, Python 3.11, без CI и Nexus Andrey Epifancev 2026-10-03 16:21:47 +04:00
  • 561eaa5c71 docs: соглашения шаблона в CLAUDE.md и OpenSpec change slice-0-skeleton Andrey Epifancev 2026-10-03 02:43:41 +04:00
  • a9159aa872 chore: openspec init + контекст и правила change'ей Andrey Epifancev 2026-10-03 00:26:48 +04:00
  • 95a3d29cba chore: вычищены остатки доменного кода, каркас проходит tsc/biome/rsbuild Andrey Epifancev 2026-10-02 23:35:01 +04:00
  • ad4f4559a9 chore: каркас из шаблона команды (DKB_ARMKA@ba172f8, доменный код удалён) Andrey Epifancev 2026-10-02 23:15:38 +04:00