# peregrinoe/consultacfdi architecture

> Architecture diagram of the GitHub repository peregrinoe/consultacfdi, generated by GitDiagram from its file tree, README and a sample of source files (last updated 2026-09-25). It is an AI-made overview: check details against the source.

- Interactive diagram: https://gitdiagram.com/peregrinoe/consultacfdi
- Repository: https://github.com/peregrinoe/consultacfdi

## Overview

This small Python utility reads CFDI identifiers and invoice details from a CSV, queries the SAT SOAP service concurrently, parses each response into status fields, and writes a results CSV. The single source file contains the entry point, query worker, XML construction, retry-enabled HTTP session, and output logic. The README documents the workflow and capabilities; the sampled source confirms their implementation in `request-cancelacion-optimizado.py` (despite the README showing a different run filename).

Main entry points: [`request-cancelacion-optimizado.py`](https://github.com/peregrinoe/consultacfdi/blob/main/request-cancelacion-optimizado.py) (CFDI query worker)

## Diagram (Mermaid)

```mermaid
flowchart TD

node_user(("User"))
node_input_csv["Input CSV"]
node_main["CSV workflow"]
node_worker["CFDI query worker"]
node_xml_builder["SOAP XML builder"]
node_session["Retry HTTP session"]
node_sat{{"SAT SOAP service"}}
node_parser["SOAP response parsing"]
node_output_csv["Results CSV"]

node_user -->|"provides filename"| node_main
node_input_csv -->|"CSV rows"| node_main
node_main -->|"dispatches rows"| node_worker
node_worker -->|"builds request"| node_xml_builder
node_worker -->|"posts request"| node_session
node_session -->|"SOAP request"| node_sat
node_sat -->|"SOAP response"| node_session
node_worker -->|"parses response"| node_parser
node_main -->|"writes results"| node_output_csv

click node_main "https://github.com/peregrinoe/consultacfdi/blob/main/request-cancelacion-optimizado.py"
click node_worker "https://github.com/peregrinoe/consultacfdi/blob/main/request-cancelacion-optimizado.py"
click node_xml_builder "https://github.com/peregrinoe/consultacfdi/blob/main/request-cancelacion-optimizado.py"
click node_session "https://github.com/peregrinoe/consultacfdi/blob/main/request-cancelacion-optimizado.py"
click node_parser "https://github.com/peregrinoe/consultacfdi/blob/main/request-cancelacion-optimizado.py"

classDef toneNeutral fill:#f8fafc,stroke:#334155,stroke-width:1.5px,color:#0f172a
classDef toneBlue fill:#dbeafe,stroke:#2563eb,stroke-width:1.5px,color:#172554
classDef toneAmber fill:#fef3c7,stroke:#d97706,stroke-width:1.5px,color:#78350f
classDef toneMint fill:#dcfce7,stroke:#16a34a,stroke-width:1.5px,color:#14532d
classDef toneRose fill:#ffe4e6,stroke:#e11d48,stroke-width:1.5px,color:#881337
classDef toneIndigo fill:#e0e7ff,stroke:#4f46e5,stroke-width:1.5px,color:#312e81
classDef toneTeal fill:#ccfbf1,stroke:#0f766e,stroke-width:1.5px,color:#134e4a
class node_user toneBlue
class node_input_csv,node_sat,node_output_csv toneIndigo
class node_main,node_xml_builder,node_session,node_parser toneTeal
class node_worker toneRose
```

## Components

### Other components

- **User**
- **Input CSV**
- [CSV workflow](https://github.com/peregrinoe/consultacfdi/blob/main/request-cancelacion-optimizado.py): `request-cancelacion-optimizado.py`
- [CFDI query worker](https://github.com/peregrinoe/consultacfdi/blob/main/request-cancelacion-optimizado.py): `request-cancelacion-optimizado.py`
- [SOAP XML builder](https://github.com/peregrinoe/consultacfdi/blob/main/request-cancelacion-optimizado.py): `request-cancelacion-optimizado.py`
- [Retry HTTP session](https://github.com/peregrinoe/consultacfdi/blob/main/request-cancelacion-optimizado.py): `request-cancelacion-optimizado.py`
- **SAT SOAP service**
- [SOAP response parsing](https://github.com/peregrinoe/consultacfdi/blob/main/request-cancelacion-optimizado.py): `request-cancelacion-optimizado.py`
- **Results CSV**

## Connections

- User → CSV workflow: provides filename
- Input CSV → CSV workflow: CSV rows
- CSV workflow → CFDI query worker: dispatches rows
- CFDI query worker → SOAP XML builder: builds request
- CFDI query worker → Retry HTTP session: posts request
- Retry HTTP session → SAT SOAP service: SOAP request
- SAT SOAP service → Retry HTTP session: SOAP response
- CFDI query worker → SOAP response parsing: parses response
- CSV workflow → Results CSV: writes results
