Commit Graph

11 Commits

Author SHA1 Message Date
d0f4f0ff2e +devshell with opencode rules 2026-02-18 08:28:46 +01:00
aeaa171bbf + validation schema 2026-02-17 11:33:32 +01:00
m3tm3re
d585390289 fix: resolve test failures and update flake.nix for factur-x source distribution
Ultraworked with [Sisyphus](https://github.com/code-yeongyu/oh-my-opencode)

Co-authored-by: Sisyphus <clio-agent@sisyphuslabs.ai>
2026-02-04 21:08:08 +01:00
m3tm3re
3eddd66003 build(nix): add Nix flake, NixOS module, and README documentation
Ultraworked with [Sisyphus](https://github.com/code-yeongyu/oh-my-opencode)

Co-authored-by: Sisyphus <clio-agent@sisyphuslabs.ai>
2026-02-04 20:39:43 +01:00
m3tm3re
1a01b46ed6 build(docker): add integration tests, Dockerfile, and docker-compose for packaging 2026-02-04 20:20:39 +01:00
m3tm3re
867b47efd0 feat(api): implement /extract and /validate endpoints with error handling
Ultraworked with [Sisyphus](https://github.com/code-yeongyu/oh-my-opencode)

Co-authored-by: Sisyphus <clio-agent@sisyphuslabs.ai>
2026-02-04 20:07:35 +01:00
m3tm3re
4791c91f06 feat(api): add validator, FastAPI app structure, and health endpoint
Wave 3 tasks complete:
- Task 7: Validator with 4 checks (pflichtfelder, betraege, ustid, pdf_abgleich)
- Task 8: FastAPI app with CORS, exception handlers, JSON logging
- Task 9: Health endpoint returning status and version

Features:
- validate_invoice() runs selected validation checks
- Exception handlers for ExtractionError and generic errors
- GET /health returns {status: healthy, version: 1.0.0}

Tests: 52 validator tests covering all validation rules
2026-02-04 19:57:12 +01:00
m3tm3re
c1f603cd46 feat(core): implement extractor, pdf_parser, and utils with TDD
Wave 2 tasks complete:
- Task 4: ZUGFeRD extractor with profile detection (factur-x)
- Task 5: PDF text parser with regex patterns
- Task 6: Utils with unit code mapping and tolerance checks

Features:
- extract_zugferd() extracts XML and text from PDFs
- parse_zugferd_xml() parses UN/CEFACT CII XML to models
- extract_from_text() extracts values using regex patterns
- translate_unit_code() maps UN/ECE codes to German
- amounts_match() checks with 0.01 EUR tolerance
- German number/date format handling

Tests: 27 utils tests, 27 pdf_parser tests, extractor tests
2026-02-04 19:42:32 +01:00
m3tm3re
29bd8453ec test(fixtures): add ZUGFeRD sample PDFs and feat(models): add Pydantic models
- Download 11 official ZUGFeRD sample PDFs
- Cover profiles: BASIC, BASIC WL, EN16931, EXTENDED, XRechnung
- Add non-ZUGFeRD PDF for negative testing
- Create MANIFEST.md documenting all samples
- Implement all Pydantic models from spec
- Add 28 TDD tests for models
- All tests pass
2026-02-04 19:26:01 +01:00
m3tm3re
0db2482bf2 feat(project): initialize ZUGFeRD service with pyproject.toml and directory structure 2026-02-04 19:19:44 +01:00
m3tm3re
48ad42aa19 first commit 2026-02-04 18:33:16 +01:00