# roberto50p/proyecto_de_titulo architecture

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

- Interactive diagram: https://gitdiagram.com/roberto50p/proyecto_de_titulo
- Repository: https://github.com/roberto50p/proyecto_de_titulo

## Overview

La plataforma principal es una aplicación Django para cerrar conciliaciones mensuales en pesos. El usuario crea un mes, carga borderos, archivos Transbank y cartolas, revisa la lectura y concilia; el servicio coordina validación, cruce de ventas, cuadratura de abonos y persistencia, y el resultado se revisa y exporta a PDF/Excel. También existe una app separada de conciliación en dólares. Las relaciones reflejan las referencias explícitas del índice, los fragmentos mostrados y las capacidades descritas en el README; no se muestrearon las vistas principales ni toda la lógica del servicio.

Main entry points: [`proyecto/conciliacion/servicio.py`](https://github.com/roberto50p/proyecto_de_titulo/blob/main/proyecto/conciliacion/servicio.py) (Servicio conciliador), [`proyecto/conciliacion/motor/cruce.py`](https://github.com/roberto50p/proyecto_de_titulo/blob/main/proyecto/conciliacion/motor/cruce.py) (Cruce de ventas), [`proyecto/conciliacion/motor/abonos.py`](https://github.com/roberto50p/proyecto_de_titulo/blob/main/proyecto/conciliacion/motor/abonos.py) (Cruce de abonos), [`proyecto/conciliacion/reportes/datos.py`](https://github.com/roberto50p/proyecto_de_titulo/blob/main/proyecto/conciliacion/reportes/datos.py) (Datos de reporte)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_workflow["Conciliación mensual"]
  node_monthly_ui["Flujo mensual<br/>[views.py]"]
  node_file_review["Revisión de archivos<br/>[forms.py]"]
  node_reconcile_service["Servicio conciliador<br/>[servicio.py]"]
  node_monthly_result["Resultado mensual<br/>[views.py]"]
end

subgraph group_readers["Lectura de archivos"]
  node_bordero_reader["Lector Bordero<br/>[bordero.py]"]
  node_transbank_reader["Lector Transbank<br/>[transbank.py]"]
  node_cartola_reader["Lector Cartola<br/>[cartola.py]"]
  node_detection["Detección de archivo<br/>[deteccion.py]"]
  node_excel_common["Lectura Excel común<br/>[comunes.py]"]
end

subgraph group_engine["Motor y parámetros"]
  node_sales_match["Cruce de ventas<br/>[cruce.py]"]
  node_deposit_match["Cruce de abonos<br/>[abonos.py]"]
  node_categories["Categorías<br/>[categorias.py]"]
  node_messages["Mensajes de resultado<br/>[mensajes.py]"]
  node_parameters["Parámetros<br/>[parametros.py]"]
end

subgraph group_results["Persistencia y reportes"]
  node_data_models[("Datos conciliación<br/>[models.py]")]
  node_report_data["Datos de reporte<br/>[datos.py]"]
  node_excel_report["Reporte Excel<br/>[excel.py]"]
  node_pdf_report["Reporte PDF<br/>[pdf.py]"]
end

subgraph group_dollars["Conciliación en dólares"]
  node_dollar_view["Procesamiento dólares<br/>[views.py]"]
  node_legacy_excel["Lectura Excel ETL<br/>[lectura_excel.py]"]
  node_dollar_models[("Modelos dólares<br/>[models.py]")]
end

node_analyst(("Analista"))
node_dollar_user(("Usuario dólares"))
node_exchange_rate["mindicador.cl"]

node_analyst -->|"inicia mes"| node_monthly_ui
node_monthly_ui -.->|"gestiona carga"| node_file_review
node_file_review -.->|"solicita lectura"| node_reconcile_service
node_reconcile_service -->|"detecta tipo"| node_detection
node_detection -->|"selecciona lector"| node_cartola_reader
node_reconcile_service -->|"lee borderos"| node_bordero_reader
node_reconcile_service -->|"lee abonos"| node_transbank_reader
node_reconcile_service -.->|"lee cartolas"| node_cartola_reader
node_bordero_reader -->|"usa utilidades"| node_excel_common
node_transbank_reader -->|"usa utilidades"| node_excel_common
node_cartola_reader -->|"usa utilidades"| node_excel_common
node_reconcile_service -->|"ejecuta cruce"| node_sales_match
node_reconcile_service -->|"cuadra abonos"| node_deposit_match
node_reconcile_service -->|"aplica reglas"| node_parameters
node_sales_match -->|"clasifica ventas"| node_categories
node_sales_match -->|"crea mensajes"| node_messages
node_sales_match -->|"consulta reglas"| node_parameters
node_deposit_match -->|"clasifica abonos"| node_categories
node_deposit_match -->|"crea mensajes"| node_messages
node_deposit_match -->|"consulta reglas"| node_parameters
node_reconcile_service -->|"guarda resultados"| node_data_models
node_monthly_ui -.->|"muestra resultado"| node_monthly_result
node_monthly_result -.->|"prepara descargas"| node_report_data
node_report_data -->|"lee conciliación"| node_data_models
node_report_data -.->|"alimenta reporte"| node_excel_report
node_report_data -->|"alimenta reporte"| node_pdf_report
node_analyst -->|"revisa y descarga"| node_monthly_result
node_dollar_user -->|"sube archivos"| node_dollar_view
node_dollar_view -->|"lee archivos"| node_legacy_excel
node_dollar_view -->|"usa modelos"| node_dollar_models
node_dollar_view -->|"consulta dólar"| node_exchange_rate

click node_monthly_ui "https://github.com/roberto50p/proyecto_de_titulo/blob/main/proyecto/conciliacion/views.py"
click node_file_review "https://github.com/roberto50p/proyecto_de_titulo/blob/main/proyecto/conciliacion/forms.py"
click node_bordero_reader "https://github.com/roberto50p/proyecto_de_titulo/blob/main/proyecto/conciliacion/lectores/bordero.py"
click node_transbank_reader "https://github.com/roberto50p/proyecto_de_titulo/blob/main/proyecto/conciliacion/lectores/transbank.py"
click node_cartola_reader "https://github.com/roberto50p/proyecto_de_titulo/blob/main/proyecto/conciliacion/lectores/cartola.py"
click node_detection "https://github.com/roberto50p/proyecto_de_titulo/blob/main/proyecto/conciliacion/lectores/deteccion.py"
click node_excel_common "https://github.com/roberto50p/proyecto_de_titulo/blob/main/proyecto/conciliacion/lectores/comunes.py"
click node_reconcile_service "https://github.com/roberto50p/proyecto_de_titulo/blob/main/proyecto/conciliacion/servicio.py"
click node_sales_match "https://github.com/roberto50p/proyecto_de_titulo/blob/main/proyecto/conciliacion/motor/cruce.py"
click node_deposit_match "https://github.com/roberto50p/proyecto_de_titulo/blob/main/proyecto/conciliacion/motor/abonos.py"
click node_categories "https://github.com/roberto50p/proyecto_de_titulo/blob/main/proyecto/conciliacion/motor/categorias.py"
click node_messages "https://github.com/roberto50p/proyecto_de_titulo/blob/main/proyecto/conciliacion/motor/mensajes.py"
click node_parameters "https://github.com/roberto50p/proyecto_de_titulo/blob/main/proyecto/conciliacion/motor/parametros.py"
click node_data_models "https://github.com/roberto50p/proyecto_de_titulo/blob/main/proyecto/conciliacion/models.py"
click node_report_data "https://github.com/roberto50p/proyecto_de_titulo/blob/main/proyecto/conciliacion/reportes/datos.py"
click node_excel_report "https://github.com/roberto50p/proyecto_de_titulo/blob/main/proyecto/conciliacion/reportes/excel.py"
click node_pdf_report "https://github.com/roberto50p/proyecto_de_titulo/blob/main/proyecto/conciliacion/reportes/pdf.py"
click node_monthly_result "https://github.com/roberto50p/proyecto_de_titulo/blob/main/proyecto/conciliacion/views.py"
click node_dollar_view "https://github.com/roberto50p/proyecto_de_titulo/blob/main/proyecto/web/views.py"
click node_legacy_excel "https://github.com/roberto50p/proyecto_de_titulo/blob/main/proyecto/hotel/conciliacion/etl/lectura_excel.py"
click node_dollar_models "https://github.com/roberto50p/proyecto_de_titulo/blob/main/proyecto/web/models.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_monthly_ui,node_file_review,node_reconcile_service,node_monthly_result toneBlue
class node_bordero_reader,node_transbank_reader,node_cartola_reader,node_detection,node_excel_common toneAmber
class node_sales_match,node_deposit_match,node_categories,node_messages,node_parameters toneMint
class node_data_models,node_report_data,node_excel_report,node_pdf_report toneRose
class node_dollar_view,node_legacy_excel,node_dollar_models,node_analyst,node_dollar_user,node_exchange_rate toneIndigo
```

## Components

### Conciliación mensual

- [Flujo mensual](https://github.com/roberto50p/proyecto_de_titulo/blob/main/proyecto/conciliacion/views.py): `proyecto/conciliacion/views.py`
- [Revisión de archivos](https://github.com/roberto50p/proyecto_de_titulo/blob/main/proyecto/conciliacion/forms.py): `proyecto/conciliacion/forms.py`
- [Servicio conciliador](https://github.com/roberto50p/proyecto_de_titulo/blob/main/proyecto/conciliacion/servicio.py): `proyecto/conciliacion/servicio.py`
- [Resultado mensual](https://github.com/roberto50p/proyecto_de_titulo/blob/main/proyecto/conciliacion/views.py): `proyecto/conciliacion/views.py`

### Lectura de archivos

- [Lector Bordero](https://github.com/roberto50p/proyecto_de_titulo/blob/main/proyecto/conciliacion/lectores/bordero.py): `proyecto/conciliacion/lectores/bordero.py`
- [Lector Transbank](https://github.com/roberto50p/proyecto_de_titulo/blob/main/proyecto/conciliacion/lectores/transbank.py): `proyecto/conciliacion/lectores/transbank.py`
- [Lector Cartola](https://github.com/roberto50p/proyecto_de_titulo/blob/main/proyecto/conciliacion/lectores/cartola.py): `proyecto/conciliacion/lectores/cartola.py`
- [Detección de archivo](https://github.com/roberto50p/proyecto_de_titulo/blob/main/proyecto/conciliacion/lectores/deteccion.py): `proyecto/conciliacion/lectores/deteccion.py`
- [Lectura Excel común](https://github.com/roberto50p/proyecto_de_titulo/blob/main/proyecto/conciliacion/lectores/comunes.py): `proyecto/conciliacion/lectores/comunes.py`

### Motor y parámetros

- [Cruce de ventas](https://github.com/roberto50p/proyecto_de_titulo/blob/main/proyecto/conciliacion/motor/cruce.py): `proyecto/conciliacion/motor/cruce.py`
- [Cruce de abonos](https://github.com/roberto50p/proyecto_de_titulo/blob/main/proyecto/conciliacion/motor/abonos.py): `proyecto/conciliacion/motor/abonos.py`
- [Categorías](https://github.com/roberto50p/proyecto_de_titulo/blob/main/proyecto/conciliacion/motor/categorias.py): `proyecto/conciliacion/motor/categorias.py`
- [Mensajes de resultado](https://github.com/roberto50p/proyecto_de_titulo/blob/main/proyecto/conciliacion/motor/mensajes.py): `proyecto/conciliacion/motor/mensajes.py`
- [Parámetros](https://github.com/roberto50p/proyecto_de_titulo/blob/main/proyecto/conciliacion/motor/parametros.py): `proyecto/conciliacion/motor/parametros.py`

### Persistencia y reportes

- [Datos conciliación](https://github.com/roberto50p/proyecto_de_titulo/blob/main/proyecto/conciliacion/models.py): `proyecto/conciliacion/models.py`
- [Datos de reporte](https://github.com/roberto50p/proyecto_de_titulo/blob/main/proyecto/conciliacion/reportes/datos.py): `proyecto/conciliacion/reportes/datos.py`
- [Reporte Excel](https://github.com/roberto50p/proyecto_de_titulo/blob/main/proyecto/conciliacion/reportes/excel.py): `proyecto/conciliacion/reportes/excel.py`
- [Reporte PDF](https://github.com/roberto50p/proyecto_de_titulo/blob/main/proyecto/conciliacion/reportes/pdf.py): `proyecto/conciliacion/reportes/pdf.py`

### Conciliación en dólares

- [Procesamiento dólares](https://github.com/roberto50p/proyecto_de_titulo/blob/main/proyecto/web/views.py): `proyecto/web/views.py`
- [Lectura Excel ETL](https://github.com/roberto50p/proyecto_de_titulo/blob/main/proyecto/hotel/conciliacion/etl/lectura_excel.py): `proyecto/hotel/conciliacion/etl/lectura_excel.py`
- [Modelos dólares](https://github.com/roberto50p/proyecto_de_titulo/blob/main/proyecto/web/models.py): `proyecto/web/models.py`

### Other components

- **Analista**
- **Usuario dólares**
- **mindicador.cl**

## Connections

- Analista → Flujo mensual: inicia mes
- Flujo mensual → Revisión de archivos: gestiona carga
- Revisión de archivos → Servicio conciliador: solicita lectura
- Servicio conciliador → Detección de archivo: detecta tipo (evidence: `proyecto/conciliacion/servicio.py`)
- Detección de archivo → Lector Cartola: selecciona lector (evidence: `proyecto/conciliacion/lectores/deteccion.py`)
- Servicio conciliador → Lector Bordero: lee borderos (evidence: `proyecto/conciliacion/servicio.py`)
- Servicio conciliador → Lector Transbank: lee abonos (evidence: `proyecto/conciliacion/servicio.py`)
- Servicio conciliador → Lector Cartola: lee cartolas (evidence: `proyecto/conciliacion/servicio.py`)
- Lector Bordero → Lectura Excel común: usa utilidades (evidence: `proyecto/conciliacion/lectores/bordero.py`)
- Lector Transbank → Lectura Excel común: usa utilidades (evidence: `proyecto/conciliacion/lectores/transbank.py`)
- Lector Cartola → Lectura Excel común: usa utilidades (evidence: `proyecto/conciliacion/lectores/cartola.py`)
- Servicio conciliador → Cruce de ventas: ejecuta cruce (evidence: `proyecto/conciliacion/servicio.py`)
- Servicio conciliador → Cruce de abonos: cuadra abonos (evidence: `proyecto/conciliacion/servicio.py`)
- Servicio conciliador → Parámetros: aplica reglas (evidence: `proyecto/conciliacion/servicio.py`)
- Cruce de ventas → Categorías: clasifica ventas (evidence: `proyecto/conciliacion/motor/cruce.py`)
- Cruce de ventas → Mensajes de resultado: crea mensajes (evidence: `proyecto/conciliacion/motor/cruce.py`)
- Cruce de ventas → Parámetros: consulta reglas (evidence: `proyecto/conciliacion/motor/cruce.py`)
- Cruce de abonos → Categorías: clasifica abonos (evidence: `proyecto/conciliacion/motor/abonos.py`)
- Cruce de abonos → Mensajes de resultado: crea mensajes (evidence: `proyecto/conciliacion/motor/abonos.py`)
- Cruce de abonos → Parámetros: consulta reglas (evidence: `proyecto/conciliacion/motor/abonos.py`)
- Servicio conciliador → Datos conciliación: guarda resultados (evidence: `proyecto/conciliacion/servicio.py`)
- Flujo mensual → Resultado mensual: muestra resultado
- Resultado mensual → Datos de reporte: prepara descargas
- Datos de reporte → Datos conciliación: lee conciliación (evidence: `proyecto/conciliacion/reportes/datos.py`)
- Datos de reporte → Reporte Excel: alimenta reporte (evidence: `proyecto/conciliacion/reportes/excel.py`)
- Datos de reporte → Reporte PDF: alimenta reporte (evidence: `proyecto/conciliacion/reportes/pdf.py`)
- Analista → Resultado mensual: revisa y descarga
- Usuario dólares → Procesamiento dólares: sube archivos
- Procesamiento dólares → Lectura Excel ETL: lee archivos (evidence: `proyecto/web/views.py`)
- Procesamiento dólares → Modelos dólares: usa modelos (evidence: `proyecto/web/views.py`)
- Procesamiento dólares → mindicador.cl: consulta dólar (evidence: `proyecto/web/views.py`)
