feat(#190): метрики качества первички (AURORA-1759) #229

Merged
aep merged 45 commits from feat/190-ocr-metrics into main 2026-11-07 07:50:00 +03:00
4 changed files with 4 additions and 4 deletions
Showing only changes of commit 4593cdc62c - Show all commits

View File

@ -121,7 +121,7 @@
`ObjectStorage.stream` (поток из S3, первая порция до заголовков → `FILE_CONTENT_NOT_FOUND`; сессию тело потока не держит;
имя — RFC 5987, `X-Content-Type-Options: nosniff`; освобождение потока — `common/streaming.py`: `ClosingStreamingResponse` +
`ChainedStream` закрывают источник и при обрыве клиента). Скачивание первички, CSV и комментарии аудит не пишут (в отличие от
экспорта сводной ОСВ в xlsx — тот пишет `EXPORT`; OQ-153). `HeaderPatch.units` — непустая строка после обрезки (пробельная — 422). `GET /users/brief` — `current_user` без права; `documents_count` у ЮЛ — `repositories/directories`; CSV чек-листа —
экспорта сводной ОСВ в xlsx и выгрузки метрик качества `GET /quality-metrics/export` — те пишут `EXPORT`; OQ-153). `HeaderPatch.units` — непустая строка после обрезки (пробельная — 422). `GET /users/brief` — `current_user` без права; `documents_count` у ЮЛ — `repositories/directories`; CSV чек-листа —
`?format=csv` у `GET …/checklist`. Контракт для фронта — `../docs/dev/api-contract-slice-3b.md`; решения —
`openspec/changes/archive/2026-10-07-slice-3b-statements-api/design.md`.
- **Факты качества первички (AURORA-1759)** — отдельная схема `dkb_metrics` (`QUALITY_METRICS_SCHEMA`), таблицы `quality_intake_fact` /

View File

@ -978,7 +978,7 @@ API (`/api/v1/quality-metrics`, право `QUALITY_METRICS_VIEW`, выдаёт
| `GET /matrix` | матрица «источник × причина» за период (период по дате приёма, фильтры ГК, ЮЛ, тип, источник `pipeline`, скан/цифровой), технические отказы по файлам, «в работе», уникальные отчёты |
| `GET /series` | ряд по месяцам даты приёма для причины (`cause`) |
| `GET /cells/{cell}/documents` | постраничный список документов ячейки (`limit`, `offset`) |
| `GET /export` | выгрузка фактов за период, `fmt=csv` (UTF-8 с BOM) или `json`; пишет `audit_event(EXPORT)` |
| `GET /export` | выгрузка фактов за период, `format=csv` (UTF-8 с BOM) или `json`; пишет `audit_event(EXPORT)` |
Экран веб-интерфейса — «Качество первички» (`web/src/widgets/QualityMetrics`).

View File

@ -41,7 +41,7 @@ def attribute_value_fix(confirmed: str, raw_text: str) -> Attribution:
`parse_amount` требует `Source`; здесь он не определяет исход («О»→«0» и выделение числового ядра в тексте
работают одинаково для PDF и Excel), поэтому берём `Source.OCR` — распознавание различий между источниками
в `parse_amount` касается только неоднозначных разделителей тысяч, а их чтение в эту цифровую проверку не
входит (решение задачи 3, см. отчёт).
входит (источник на цифровую проверку не влияет).
"""
rules = default_rules()
parsed = parse_amount(raw_text, Source.OCR, rules)

View File

@ -482,7 +482,7 @@ class DocumentService:
"""Факт исхода `CONFIRMED` с атрибуцией правок (§14.2-§14.4; design quality-metrics §4.2, §5, §6;
AURORA-1759). Гейт — `OUTCOME_FACT_DOCUMENT_TYPES`: DISCLOSURE/OTHER без факта (как у факта приёма/
`AUTO_CONFIRMED`, Task 5/6). Правки ищутся по ЖИВЫМ колонкам `*_modified`/`original_*`/`source_text`
(первичка не мутируется) — не по JSON `quality_intake_fact.payload` (решение задачи 7, см. отчёт: тот
(первичка не мутируется) — не по JSON `quality_intake_fact.payload` (R-4, design.md: тот
payload собран для другой цели и его форма — не для этого сравнения). Пишется в транзакции вызывающего
(`confirm`), без `flush`/`commit`.
"""