cadrumo.application.ledger.invoice_draft_extraction_ports module

Application-owned dependencies for invoice-draft extraction.

The extraction use case decides when an evidence reader is needed. This module names the capabilities it needs; outer composition chooses the concrete e-invoice, LLM, and secure-storage implementations.

class EvidenceConsentProof(*args, **kwargs)[source]

Bases: Protocol

Minimum consent fact the use case needs to bind evidence bytes.

property evidence_content_address: str

Return the content address covered by the consent proof.

class VisionImage(base64_data, media_type)[source]

Bases: object

In-memory image prepared by the application for a vision reader.

Parameters:
base64_data: str
media_type: ImageMediaType
exception StructuredInvoiceReadError(message=None, *, context=None, translated_message=None)[source]

Bases: CadrumoError

A structured document could not be read by the selected exact reader.

Parameters:
  • message (str | None)

  • context (Mapping[str, object] | None)

  • translated_message (str | None)

Return type:

None

code
exception InvoiceDraftReaderUnavailableError(cause)[source]

Bases: CadrumoError

Selected reader or its runtime was unavailable; preserve its cause.

Parameters:

cause (Exception)

Return type:

None

code
class InvoiceDraftExtractionPorts(resolve_evidence_input, evidence_input_ports, text_layer_ports, parse_structured_invoice, read_text, propose_supply_nature, rasterise_pdf, transcribe_vision, consent_binding_error)[source]

Bases: object

Concrete capabilities supplied by an outer composition root.

Parameters:
resolve_evidence_input: Callable[[str, str | None, str | None, Settings], EvidenceInput]
evidence_input_ports: EvidenceInputPorts
text_layer_ports: EvidenceTextLayerPorts
parse_structured_invoice: StructuredInvoiceReader
read_text: Callable[[DocumentTranscription, Settings, LLMProvider | None, EvidenceConsentProof | None, object], InvoiceDraft]
propose_supply_nature: Callable[[DocumentTranscription, Settings], SupplyNature | None]
rasterise_pdf: Callable[[bytes], tuple[str, ...]]
transcribe_vision: Callable[[tuple[VisionImage, ...], str, Settings, LLMProvider | None, EvidenceConsentProof | None], DocumentTranscription]
consent_binding_error: Callable[[dict[str, object]], Exception]