From 29bd8453ecbcfc6bac2bc10c6482658d75683fae Mon Sep 17 00:00:00 2001
From: m3tm3re
Date: Wed, 4 Feb 2026 19:26:01 +0100
Subject: [PATCH] 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
---
.../notepads/zugferd-service/learnings.md | 74 +++
.sisyphus/plans/zugferd-service.md | 4 +-
src/models.py | 166 +++++-
tests/fixtures/EN16931_1_Teilrechnung.pdf | Bin 0 -> 42572 bytes
tests/fixtures/EN16931_Einfach.pdf | Bin 0 -> 37897 bytes
tests/fixtures/EmptyPDFA1.pdf | Bin 0 -> 87968 bytes
tests/fixtures/MANIFEST.md | 52 ++
tests/fixtures/MustangBeispiel20221026.pdf | Bin 0 -> 77162 bytes
.../ORDER-X_EX01_ORDER_FULL_DATA-COMFORT.pdf | Bin 0 -> 239358 bytes
...TESTZUGFERD_1_INVDSS_012015738820PDF-1.pdf | Bin 0 -> 88656 bytes
...teBasedXMP_zugferd_2p0_EN16931_Einfach.pdf | Bin 0 -> 147759 bytes
.../validAvoir_FR_type380_BASICWL.pdf | Bin 0 -> 83898 bytes
tests/fixtures/validXRechnung.pdf | Bin 0 -> 99785 bytes
.../fixtures/zugferd_2p1_EXTENDED_PDFA-3A.pdf | Bin 0 -> 699553 bytes
tests/fixtures/zugferd_invoice.pdf | Bin 0 -> 76030 bytes
tests/test_models.py | 512 ++++++++++++++++++
16 files changed, 805 insertions(+), 3 deletions(-)
create mode 100644 tests/fixtures/EN16931_1_Teilrechnung.pdf
create mode 100755 tests/fixtures/EN16931_Einfach.pdf
create mode 100644 tests/fixtures/EmptyPDFA1.pdf
create mode 100644 tests/fixtures/MANIFEST.md
create mode 100644 tests/fixtures/MustangBeispiel20221026.pdf
create mode 100644 tests/fixtures/ORDER-X_EX01_ORDER_FULL_DATA-COMFORT.pdf
create mode 100644 tests/fixtures/ZTESTZUGFERD_1_INVDSS_012015738820PDF-1.pdf
create mode 100644 tests/fixtures/attributeBasedXMP_zugferd_2p0_EN16931_Einfach.pdf
create mode 100644 tests/fixtures/validAvoir_FR_type380_BASICWL.pdf
create mode 100644 tests/fixtures/validXRechnung.pdf
create mode 100644 tests/fixtures/zugferd_2p1_EXTENDED_PDFA-3A.pdf
create mode 100644 tests/fixtures/zugferd_invoice.pdf
create mode 100644 tests/test_models.py
diff --git a/.sisyphus/notepads/zugferd-service/learnings.md b/.sisyphus/notepads/zugferd-service/learnings.md
index 24331e0..d4d1ef2 100644
--- a/.sisyphus/notepads/zugferd-service/learnings.md
+++ b/.sisyphus/notepads/zugferd-service/learnings.md
@@ -42,3 +42,77 @@ Initial session for ZUGFeRD-Service implementation.
- Module-level docstrings: minimal, one line, describe purpose
- Entry point function docstrings: Args/Returns style for CLI documentation
- Both necessary for scaffolding clarity
+
+## [2026-02-04T19:23:00.000Z] Task 2: Download ZUGFeRD Sample PDFs
+
+### Sample PDF Sources
+- **Best source**: Mustang project (https://github.com/ZUGFeRD/mustangproject)
+ - Contains 20+ authentic ZUGFeRD samples across multiple directories
+ - Library test resources: `library/src/test/resources/` (15 PDFs)
+ - Validator test resources: `validator/src/test/resources/` (14 PDFs)
+ - CLI test resources: `Mustang-CLI/src/test/resources/` (2 PDFs)
+- **FeRD official site**: https://www.ferd-net.de/download/testrechnungen
+ - Returns 404 - URL may have moved
+ - Mustang project likely mirrors these samples
+- **factur-x library tests**: https://github.com/akretion/factur-x/tree/master/tests
+ - No PDF files found in repository (only code tests)
+
+### ZUGFeRD Profile Coverage
+- **Available samples**: BASIC, BASIC WL, EN16931, EXTENDED, XRechnung
+- **Missing**: MINIMUM profile (future addition needed)
+- **Versions covered**: ZUGFeRD 1.0, 2.0, 2.1, XRechnung
+- **Related formats**: ORDER-X (for orders, not invoices)
+
+### Negative Testing
+- `EmptyPDFA1.pdf`: Valid PDF/A-1 with no ZUGFeRD XML data
+- Useful for testing error handling and graceful degradation
+
+### PDF Verification Pattern
+- When `file` command unavailable, verify PDF magic bytes
+- Magic bytes: `25 50 44 46` (hex) = "%PDF" (ASCII)
+- Command: `head -c 4 "$f" | od -A n -t x1`
+- All valid PDFs start with these 4 bytes
+
+### Sample Selection Strategy
+- Prioritize coverage: multiple profiles, versions, edge cases
+- Keep focused: 8-10 samples max (11 selected with good variety)
+- Include historical samples for backward compatibility testing
+- Document thoroughly: MANIFEST.md with profile, description, source
+
+### File Naming Conventions
+- Mustang uses descriptive names: `EN16931_1_Teilrechnung.pdf`
+- Include profile and feature description in filename
+- Date-based names for temporal versions: `MustangBeispiel20221026.pdf`
+- Test prefixes: `ZTESTZUGFERD_1_...` for ZUGFeRD v1 test samples
+
+
+## [2026-02-04T19:45:00.000Z] Task 3: Pydantic Models
+
+### Pydantic v2+ Syntax Patterns
+- Use `type | None = None` for optional fields (not `Optional[type]`)
+- Use `Field(description=...)` for field documentation (appears in OpenAPI docs)
+- Use `Field(default_factory=list)` for list defaults to avoid mutable default issues
+- Use `Field(default=None)` for None defaults on optional fields
+- Model docstrings serve as public API documentation for FastAPI's OpenAPI schema
+
+### JSON Serialization
+- Use `model.model_dump_json()` to serialize to JSON string
+- Use `model.model_validate_json(json_str)` to deserialize from JSON
+- Pydantic handles datetime, nested models, and type conversion automatically
+
+### Test-First Development Pattern
+- Write tests before implementing models (RED-GREEN-REFACTOR)
+- Tests should cover: minimal data, full data, edge cases
+- Test JSON roundtrip: `model.model_dump_json()` → `Model.model_validate_json()`
+- Verify imports: `python -c "from src.models import ModelName"`
+
+### Nested Models with Dict Input
+- Pydantic v2 accepts dict for nested models: `supplier={"name": "ACME"}`
+- Use for test convenience and API requests
+- Internally converts to proper model instances
+
+### Field Required vs Optional
+- Required fields: No default value in Field
+- Optional fields: `type | None = Field(default=None, ...)`
+- Empty list defaults: `list[Type] = Field(default_factory=list)`
+
diff --git a/.sisyphus/plans/zugferd-service.md b/.sisyphus/plans/zugferd-service.md
index 43533f8..47455b9 100644
--- a/.sisyphus/plans/zugferd-service.md
+++ b/.sisyphus/plans/zugferd-service.md
@@ -329,7 +329,7 @@ Critical Path: Task 1 → Task 4 → Task 7 → Task 10 → Task 13 → Task 16
---
-- [ ] 2. Download ZUGFeRD Sample PDFs
+- [x] 2. Download ZUGFeRD Sample PDFs
**What to do**:
- Download official ZUGFeRD sample PDFs from FeRD/ZUGFeRD repositories
@@ -390,7 +390,7 @@ Critical Path: Task 1 → Task 4 → Task 7 → Task 10 → Task 13 → Task 16
---
-- [ ] 3. Create Pydantic Models
+- [x] 3. Create Pydantic Models
**What to do**:
- Define all Pydantic models as per API specification
diff --git a/src/models.py b/src/models.py
index 1d2ac3b..79fe814 100644
--- a/src/models.py
+++ b/src/models.py
@@ -1,3 +1,167 @@
"""Pydantic models for ZUGFeRD service."""
-pass
+from typing import Any
+from pydantic import BaseModel, Field
+
+
+class ExtractionMeta(BaseModel):
+ """Metadata about the extraction process."""
+
+ pages: int = Field(description="Number of pages in the PDF")
+ xml_attachment_name: str | None = Field(
+ default=None, description="Name of the XML attachment"
+ )
+ extraction_time_ms: int = Field(description="Extraction time in milliseconds")
+
+
+class Supplier(BaseModel):
+ """Supplier/seller information."""
+
+ name: str = Field(description="Supplier name")
+ street: str | None = Field(default=None, description="Street address")
+ postal_code: str | None = Field(default=None, description="Postal code")
+ city: str | None = Field(default=None, description="City")
+ country: str | None = Field(default=None, description="Country code")
+ vat_id: str | None = Field(default=None, description="VAT ID")
+ email: str | None = Field(default=None, description="Email address")
+
+
+class Buyer(BaseModel):
+ """Buyer/customer information."""
+
+ name: str = Field(description="Buyer name")
+ street: str | None = Field(default=None, description="Street address")
+ postal_code: str | None = Field(default=None, description="Postal code")
+ city: str | None = Field(default=None, description="City")
+ country: str | None = Field(default=None, description="Country code")
+ vat_id: str | None = Field(default=None, description="VAT ID")
+
+
+class VatBreakdown(BaseModel):
+ """VAT breakdown entry."""
+
+ rate: float = Field(description="VAT rate percentage")
+ base: float = Field(description="Tax base amount")
+ amount: float = Field(description="VAT amount")
+
+
+class PaymentTerms(BaseModel):
+ """Payment terms information."""
+
+ iban: str | None = Field(default=None, description="IBAN")
+ bic: str | None = Field(default=None, description="BIC/SWIFT")
+ account_holder: str | None = Field(default=None, description="Account holder name")
+
+
+class Totals(BaseModel):
+ """Invoice totals."""
+
+ line_total_sum: float = Field(description="Sum of all line totals")
+ net: float = Field(description="Net amount")
+ vat_total: float = Field(description="Total VAT amount")
+ gross: float = Field(description="Gross amount")
+ vat_breakdown: list[VatBreakdown] = Field(
+ default_factory=list, description="VAT breakdown"
+ )
+
+
+class LineItem(BaseModel):
+ """Invoice line item."""
+
+ position: int = Field(description="Line position number")
+ article_number: str | None = Field(default=None, description="Article number")
+ article_number_buyer: str | None = Field(
+ default=None, description="Buyer's article number"
+ )
+ description: str = Field(description="Item description")
+ quantity: float = Field(description="Quantity")
+ unit: str = Field(description="Unit (human-readable)")
+ unit_price: float = Field(description="Unit price")
+ line_total: float = Field(description="Line total amount")
+ vat_rate: float | None = Field(default=None, description="VAT rate percentage")
+ vat_amount: float | None = Field(
+ default=None, description="VAT amount for this line"
+ )
+
+
+class XmlData(BaseModel):
+ """Structured XML data extracted from ZUGFeRD invoice."""
+
+ invoice_number: str = Field(description="Invoice number")
+ invoice_date: str = Field(description="Invoice date (YYYY-MM-DD)")
+ due_date: str | None = Field(default=None, description="Due date (YYYY-MM-DD)")
+ supplier: Supplier = Field(description="Supplier information")
+ buyer: Buyer = Field(description="Buyer information")
+ line_items: list[LineItem] = Field(description="Line items")
+ totals: Totals = Field(description="Invoice totals")
+ currency: str = Field(default="EUR", description="Currency code")
+ payment_terms: PaymentTerms | None = Field(
+ default=None, description="Payment terms"
+ )
+ notes: str | None = Field(default=None, description="Invoice notes")
+
+
+class ExtractRequest(BaseModel):
+ """Request body for /extract endpoint."""
+
+ pdf_base64: str = Field(description="Base64-encoded PDF file")
+
+
+class ExtractResponse(BaseModel):
+ """Response from /extract endpoint."""
+
+ is_zugferd: bool = Field(description="Whether PDF contains ZUGFeRD data")
+ zugferd_profil: str | None = Field(
+ default=None, description="ZUGFeRD profile (e.g., EN16931)"
+ )
+ xml_raw: str | None = Field(default=None, description="Raw XML string")
+ xml_data: XmlData | None = Field(default=None, description="Parsed XML data")
+ pdf_text: str | None = Field(default=None, description="Extracted PDF text")
+ extraction_meta: ExtractionMeta = Field(description="Extraction metadata")
+
+
+class ErrorDetail(BaseModel):
+ """Error or warning detail from validation."""
+
+ check: str = Field(description="Validation check that produced this error")
+ field: str | None = Field(default=None, description="Field with the issue")
+ error_code: str = Field(description="Error code")
+ message: str = Field(description="Human-readable error message")
+ severity: str = Field(description="Severity level: 'critical' or 'warning'")
+
+
+class ValidationResult(BaseModel):
+ """Result of invoice validation."""
+
+ is_valid: bool = Field(description="Whether invoice passed all validation checks")
+ errors: list[ErrorDetail] = Field(
+ default_factory=list, description="Critical errors"
+ )
+ warnings: list[ErrorDetail] = Field(default_factory=list, description="Warnings")
+ summary: dict[str, Any] | None = Field(
+ default=None, description="Validation summary"
+ )
+ validation_time_ms: int = Field(description="Validation time in milliseconds")
+
+
+class ValidateRequest(BaseModel):
+ """Request body for /validate endpoint."""
+
+ xml_data: dict[str, Any] = Field(description="XML data to validate")
+ pdf_text: str | None = Field(
+ default=None, description="Extracted PDF text for comparison"
+ )
+ checks: list[str] = Field(description="List of validation checks to run")
+
+
+class ValidateResponse(BaseModel):
+ """Response from /validate endpoint."""
+
+ result: ValidationResult = Field(description="Validation result")
+
+
+class ErrorResponse(BaseModel):
+ """Error response."""
+
+ error: str = Field(description="Error code")
+ message: str = Field(description="Error message")
diff --git a/tests/fixtures/EN16931_1_Teilrechnung.pdf b/tests/fixtures/EN16931_1_Teilrechnung.pdf
new file mode 100644
index 0000000000000000000000000000000000000000..0bc3ea7766d13a75fb6e6dbd67f4891ee541aadb
GIT binary patch
literal 42572
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
literal 0
HcmV?d00001
diff --git a/tests/fixtures/EN16931_Einfach.pdf b/tests/fixtures/EN16931_Einfach.pdf
new file mode 100755
index 0000000000000000000000000000000000000000..802b7282a6e7f51d6f6a81405b00c5be5fbad90b
GIT binary patch
literal 37897
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 |