79 lines
4.1 KiB
Markdown
79 lines
4.1 KiB
Markdown
# Tasks: OCR Ingest Integration
|
||
|
||
## Forecast
|
||
|
||
Estimate: 3,400–4,300 lines.
|
||
|
||
Decision needed before apply: No
|
||
Chained PRs recommended: Yes
|
||
Chain strategy: feature-branch-chain
|
||
400-line budget risk: High
|
||
|
||
Tracker feature/ocr-ingest-integration is draft/no-merge and sole main target. PR1 targets tracker; children target predecessors. Coverage: 17 requirements/34 scenarios (O10/P12/V12).
|
||
|
||
### Units: command; harness; rollback
|
||
|
||
1 Migration: tsx --test tests/catalog/migration-002.test.ts; N/A schema-only; drop OCR schema
|
||
2 Repository: tsx --test tests/catalog/repository-ocr.test.ts; fake pool; revert candidate/leases
|
||
3 Extraction: tsx --test tests/parsers/pdf-pages.test.ts; PDF spike; revert parser/fixtures
|
||
4 Detection: tsx --test tests/ocr/detection.test.ts; mixed PDF; revert transforms
|
||
5 Service: pytest ocr-service/tests -k auth; curl 401/409; remove ocr-service
|
||
6 Render: pytest ocr-service/tests -k render; Docker PNG; revert wrapper/image
|
||
7 Client: tsx --test tests/ocr/client.test.ts; retry stub; revert client/artifacts
|
||
8 Dispatcher: tsx --test tests/ocr/dispatcher.test.ts; curl 202/status; revert routing
|
||
9 Review: tsx --test tests/ocr/review.test.ts; curl review/409; revert review/routes
|
||
10 Approval: tsx --test tests/ocr/approval.test.ts; playground approval; revert indexing/UI
|
||
11 Retention: tsx --test tests/ocr/retention.test.ts; fake-fs sweep; revert retention
|
||
12 Config: npm run check; N/A static-only; revert config/docs
|
||
13 E2E: npm test; production OCR flow; disable OCR flag
|
||
|
||
## 1 Persistence (Units 1–2; O2/O3)
|
||
|
||
- [x] 1.1 RED: duplicate pending, lease recovery, review transitions
|
||
- [x] 1.2 GREEN: `migrations/002_ocr_review.sql` schema and unique index
|
||
- [x] 1.3 GREEN: `src/modules/catalog/repository.ts` candidates and leases
|
||
- [x] 1.4 REFACTOR after green
|
||
|
||
## 2 Extraction (Units 3–4; P1–P4)
|
||
|
||
- [x] 2.1 Spike `scripts/spike-pdfjs.ts` for Node 22 parser
|
||
- [x] 2.2 RED: PDF-only routing; text files never execute; unsupported build/script formats; pages, blanks, hashes, risks
|
||
- [x] 2.3 GREEN: `tests/fixtures/ocr/` and `src/modules/parsers/parser-registry.ts`
|
||
- [x] 2.4 GREEN: `src/modules/ocr/detection.ts` thresholds
|
||
- [x] 2.5 GREEN: `src/modules/ocr/composition.ts` text, hashes, risks
|
||
|
||
## 3 OCR Service (Units 5–6; P5/P6)
|
||
|
||
- [x] 3.1 RED HTTP: bearer 401; idempotency/conflict 409; allowlist; limits 413/422; pressure 429; no-retry; integrity mismatch
|
||
- [x] 3.2 GREEN: `ocr-service/` API, queue, allowlist, limits, health
|
||
- [x] 3.3 GREEN: PaddleOCR 3.4.0, 200 DPI, schema, stub
|
||
- [x] 3.4 GREEN: `ocr-service/Dockerfile` pinned wheels/models/resources
|
||
|
||
## 4 Orchestration (Units 7–8; O1–O4)
|
||
|
||
- [ ] 4.1 RED HTTP: flag-off 201; OCR 202/status; OCR-down fail-closed; catalog-down 503; retries/integrity
|
||
- [ ] 4.2 GREEN: `src/modules/ocr/client.ts` retries and integrity
|
||
- [ ] 4.3 GREEN: `src/modules/ocr/artifacts.ts` originals, manifest, sweep
|
||
- [ ] 4.4 GREEN: `src/modules/ocr/dispatcher.ts` leases; `src/modules/catalog/reconciler.ts`
|
||
- [ ] 4.5 GREEN: `src/modules/ingest/service.ts` branch; `src/app.ts` upload/status
|
||
|
||
## 5 Review (Units 9–10; V1–V4)
|
||
|
||
- [ ] 5.1 RED: auth/premature access; atomic corrections/stale 409; new/reusable activation race; reject/no embeddings
|
||
- [ ] 5.2 GREEN: `src/modules/ocr/review.ts` view, corrections, conflicts
|
||
- [ ] 5.3 GREEN: `src/modules/ocr/indexing.ts` CAS; new/reusable activate_requested=true activates, false stays ready
|
||
- [ ] 5.4 GREEN: rejection and `public/playground/` review UI
|
||
|
||
## 6 Retention/Deploy (Units 11–12; O5/V5)
|
||
|
||
- [ ] 6.1 RED: TTL/CAS/resume/active protection; flag-off native-only and candidate invisibility
|
||
- [ ] 6.2 GREEN: `src/modules/ocr/retention.ts`
|
||
- [ ] 6.3 GREEN: `src/api/openapi.ts` OCR/status/review contracts
|
||
- [ ] 6.4 GREEN: `src/config/env.ts`, `Dockerfile`; follow `docs/CONTRATO_CICLO_VIDA_Y_OCR.md` (read-only)
|
||
|
||
## 7 E2E (Unit 13; V6)
|
||
|
||
- [ ] 7.1 E2E: native 201; scanned 202→review→approve→active; mixed
|
||
- [ ] 7.2 E2E: resend, OCR-down fail-closed, catalog-down 503
|
||
- [ ] 7.3 Gate: check, build, test, offline pytest
|
||
- [ ] 7.4 Production: flag-off verify→enable→FacturaTech 34 entries; CBG04a/FAT07/DSAU08/NSAV06
|