infoxtractor/src/ix
Dirk Riemann 1c60c30084
All checks were successful
tests / test (push) Successful in 1m15s
tests / test (pull_request) Successful in 1m2s
feat(store): Alembic scaffolding + initial ix_jobs migration (spec §4)
Lands the async-friendly Alembic env (NullPool, reads IX_POSTGRES_URL), the
hand-written 001 migration matching the spec's table layout exactly
(CHECK on status, partial index on pending rows, UNIQUE on
(client_id, request_id)), the SQLAlchemy 2.0 ORM mapping, and a lazy
engine/session factory. The factory reads the URL through ix.config when
available; Task 3.2 makes that the only path.

Smoke-tested: alembic upgrade head + downgrade base against a live
postgres:16 produce the expected table shape and tear down cleanly.
Unit tests assert the migration source contains every required column/index
so the migration can't drift from spec at import time.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-04-18 11:37:21 +02:00
..
contracts feat(contracts): ResponseIX + Provenance + Job envelope (spec §3, §9.3) 2026-04-18 10:50:22 +02:00
genai feat(clients): OCRClient + GenAIClient protocols + fakes (spec §6.2, §6.3) 2026-04-18 11:08:24 +02:00
ingestion feat(ingestion): fetch_file + MIME sniff + DocumentIngestor (spec §6.1) 2026-04-18 11:12:00 +02:00
ocr feat(clients): OCRClient + GenAIClient protocols + fakes (spec §6.2, §6.3) 2026-04-18 11:08:24 +02:00
pipeline feat(pipeline): ResponseHandlerStep — shape-up final payload (spec §8) 2026-04-18 11:21:36 +02:00
provenance feat(provenance): mapper + verifier for ReliabilityStep (spec §9.4, §6) 2026-04-18 11:01:19 +02:00
segmentation feat(segmentation): SegmentIndex + prompt-text formatter (spec §9.1) 2026-04-18 10:53:46 +02:00
store feat(store): Alembic scaffolding + initial ix_jobs migration (spec §4) 2026-04-18 11:37:21 +02:00
use_cases feat(use_cases): registry + bank_statement_header (spec §7) 2026-04-18 10:51:43 +02:00
__init__.py feat(scaffold): project skeleton with uv + pytest + forgejo CI 2026-04-18 10:36:43 +02:00
errors.py feat(errors): add IXException + IXErrorCode per spec §8 2026-04-18 10:46:01 +02:00