# cybxs82/g19x-ith-jldp-966-academic architecture

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

- Interactive diagram: https://gitdiagram.com/cybxs82/g19x-ith-jldp-966-academic
- Repository: https://github.com/cybxs82/g19x-ith-jldp-966-academic

## Overview

Plataforma CFO: usuarios cargan documentos ERP, bancarios y presupuestos; el sistema conserva y normaliza datos para derivar indicadores, forecast, alertas y recomendaciones que se consultan en el dashboard. Los usuarios también gestionan alertas y exportan reportes guardados con PDF. El README documenta las capacidades del producto; las relaciones entre componentes se limitan a las visibles en los extractos o documentadas allí, pues varias rutas y módulos de negocio no fueron muestreados.

Main entry points: [`backend/controllers/financial_controller.py`](https://github.com/cybxs82/g19x-ith-jldp-966-academic/blob/main/backend/controllers/financial_controller.py) (FastAPI controller), [`backend/repositories/financial_repository.py`](https://github.com/cybxs82/g19x-ith-jldp-966-academic/blob/main/backend/repositories/financial_repository.py) (Financial repository), [`controllers/dashboard-controller.ts`](https://github.com/cybxs82/g19x-ith-jldp-966-academic/blob/main/controllers/dashboard-controller.ts) (Dashboard client), [`controllers/reports-controller.ts`](https://github.com/cybxs82/g19x-ith-jldp-966-academic/blob/main/controllers/reports-controller.ts) (Reports client)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_frontend["Experiencia web"]
  node_dashboard_ui["Dashboard<br/>[dashboard-view.tsx]"]
  node_dashboard_page["Dashboard page<br/>[page.tsx]"]
  node_dashboard_client["Dashboard client"]
  node_financial_model["Financial model<br/>[financial-model.ts]"]
  node_auth_client["Auth client<br/>[auth-controller.ts]"]
  node_upload_view["ERP upload"]
  node_reports_client["Reports client"]
  node_report_model["Report model<br/>[report-model.ts]"]
end

subgraph group_api["API y contratos"]
  node_api_routes["Next API routes"]
  node_fastapi["FastAPI controller"]
  node_schemas["API schemas<br/>[schemas.py]"]
end

subgraph group_business["Servicios financieros"]
  node_ingestion["File ingestion"]
  node_forecast["Forecasting"]
  node_recommendations["Recommendations"]
  node_auth_service["Authentication<br/>[auth_service.py]"]
  node_pdf_service["Report PDF"]
end

subgraph group_persistence["Persistencia"]
  node_repository["Financial repository"]
  node_database["DB connection<br/>[database.py]"]
  node_config["Settings<br/>[config.py]"]
end

node_user(("CFO / analista"))
node_postgres[("PostgreSQL")]

node_user -->|"consulta"| node_dashboard_ui
node_dashboard_page -->|"solicita datos"| node_dashboard_client
node_dashboard_page -->|"renderiza"| node_dashboard_ui
node_dashboard_client -->|"consulta dashboard"| node_api_routes
node_dashboard_client -->|"mapea datos"| node_financial_model
node_dashboard_ui -->|"guarda reporte"| node_reports_client
node_reports_client -->|"solicita reportes"| node_api_routes
node_reports_client -->|"usa contrato"| node_report_model
node_user -->|"carga archivos"| node_upload_view
node_upload_view -->|"invoca carga"| node_auth_client
node_auth_client -->|"envía carga"| node_fastapi
node_fastapi -->|"autentica"| node_auth_service
node_fastapi -->|"procesa cargas"| node_ingestion
node_fastapi -->|"genera reglas"| node_recommendations
node_fastapi -->|"consulta datos"| node_repository
node_fastapi -->|"valida contratos"| node_schemas
node_repository -->|"abre conexión"| node_database
node_database -->|"lee ajustes"| node_config
node_database -->|"consulta y persiste"| node_postgres
node_user -->|"solicita forecast"| node_fastapi
node_repository -->|"obtiene proyección"| node_forecast
node_repository -->|"recalcula derivados"| node_ingestion
node_repository -->|"genera PDF"| node_pdf_service
node_user -->|"gestiona alertas"| node_fastapi
node_user -->|"consulta recomendaciones"| node_fastapi
node_user -->|"exporta instantánea"| node_fastapi

click node_dashboard_ui "https://github.com/cybxs82/g19x-ith-jldp-966-academic/blob/main/views/dashboard-view.tsx"
click node_dashboard_page "https://github.com/cybxs82/g19x-ith-jldp-966-academic/blob/main/app/page.tsx"
click node_dashboard_client "https://github.com/cybxs82/g19x-ith-jldp-966-academic/blob/main/controllers/dashboard-controller.ts"
click node_financial_model "https://github.com/cybxs82/g19x-ith-jldp-966-academic/blob/main/models/financial-model.ts"
click node_auth_client "https://github.com/cybxs82/g19x-ith-jldp-966-academic/blob/main/controllers/auth-controller.ts"
click node_upload_view "https://github.com/cybxs82/g19x-ith-jldp-966-academic/blob/main/views/erp-upload-view.tsx"
click node_reports_client "https://github.com/cybxs82/g19x-ith-jldp-966-academic/blob/main/controllers/reports-controller.ts"
click node_report_model "https://github.com/cybxs82/g19x-ith-jldp-966-academic/blob/main/models/report-model.ts"
click node_api_routes "https://github.com/cybxs82/g19x-ith-jldp-966-academic/tree/main/app/api"
click node_fastapi "https://github.com/cybxs82/g19x-ith-jldp-966-academic/blob/main/backend/controllers/financial_controller.py"
click node_schemas "https://github.com/cybxs82/g19x-ith-jldp-966-academic/blob/main/backend/models/schemas.py"
click node_ingestion "https://github.com/cybxs82/g19x-ith-jldp-966-academic/blob/main/backend/services/ingestion_service.py"
click node_forecast "https://github.com/cybxs82/g19x-ith-jldp-966-academic/blob/main/backend/services/forecast_service.py"
click node_recommendations "https://github.com/cybxs82/g19x-ith-jldp-966-academic/blob/main/backend/services/recommendation_service.py"
click node_auth_service "https://github.com/cybxs82/g19x-ith-jldp-966-academic/blob/main/backend/services/auth_service.py"
click node_pdf_service "https://github.com/cybxs82/g19x-ith-jldp-966-academic/blob/main/backend/services/report_pdf_service.py"
click node_repository "https://github.com/cybxs82/g19x-ith-jldp-966-academic/blob/main/backend/repositories/financial_repository.py"
click node_database "https://github.com/cybxs82/g19x-ith-jldp-966-academic/blob/main/backend/infrastructure/database.py"
click node_config "https://github.com/cybxs82/g19x-ith-jldp-966-academic/blob/main/backend/infrastructure/config.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_dashboard_ui,node_dashboard_page,node_dashboard_client,node_financial_model,node_auth_client,node_upload_view,node_reports_client,node_report_model toneBlue
class node_api_routes,node_fastapi,node_schemas,node_postgres toneAmber
class node_ingestion,node_forecast,node_recommendations,node_auth_service,node_pdf_service toneMint
class node_repository,node_database,node_config toneRose
class node_user toneIndigo
```

## Components

### Experiencia web

- [Dashboard](https://github.com/cybxs82/g19x-ith-jldp-966-academic/blob/main/views/dashboard-view.tsx): `views/dashboard-view.tsx`
- [Dashboard page](https://github.com/cybxs82/g19x-ith-jldp-966-academic/blob/main/app/page.tsx): `app/page.tsx`
- [Dashboard client](https://github.com/cybxs82/g19x-ith-jldp-966-academic/blob/main/controllers/dashboard-controller.ts): `controllers/dashboard-controller.ts`
- [Financial model](https://github.com/cybxs82/g19x-ith-jldp-966-academic/blob/main/models/financial-model.ts): `models/financial-model.ts`
- [Auth client](https://github.com/cybxs82/g19x-ith-jldp-966-academic/blob/main/controllers/auth-controller.ts): `controllers/auth-controller.ts`
- [ERP upload](https://github.com/cybxs82/g19x-ith-jldp-966-academic/blob/main/views/erp-upload-view.tsx): `views/erp-upload-view.tsx`
- [Reports client](https://github.com/cybxs82/g19x-ith-jldp-966-academic/blob/main/controllers/reports-controller.ts): `controllers/reports-controller.ts`
- [Report model](https://github.com/cybxs82/g19x-ith-jldp-966-academic/blob/main/models/report-model.ts): `models/report-model.ts`

### API y contratos

- [Next API routes](https://github.com/cybxs82/g19x-ith-jldp-966-academic/tree/main/app/api): `app/api`
- [FastAPI controller](https://github.com/cybxs82/g19x-ith-jldp-966-academic/blob/main/backend/controllers/financial_controller.py): `backend/controllers/financial_controller.py`
- [API schemas](https://github.com/cybxs82/g19x-ith-jldp-966-academic/blob/main/backend/models/schemas.py): `backend/models/schemas.py`

### Servicios financieros

- [File ingestion](https://github.com/cybxs82/g19x-ith-jldp-966-academic/blob/main/backend/services/ingestion_service.py): `backend/services/ingestion_service.py`
- [Forecasting](https://github.com/cybxs82/g19x-ith-jldp-966-academic/blob/main/backend/services/forecast_service.py): `backend/services/forecast_service.py`
- [Recommendations](https://github.com/cybxs82/g19x-ith-jldp-966-academic/blob/main/backend/services/recommendation_service.py): `backend/services/recommendation_service.py`
- [Authentication](https://github.com/cybxs82/g19x-ith-jldp-966-academic/blob/main/backend/services/auth_service.py): `backend/services/auth_service.py`
- [Report PDF](https://github.com/cybxs82/g19x-ith-jldp-966-academic/blob/main/backend/services/report_pdf_service.py): `backend/services/report_pdf_service.py`

### Persistencia

- [Financial repository](https://github.com/cybxs82/g19x-ith-jldp-966-academic/blob/main/backend/repositories/financial_repository.py): `backend/repositories/financial_repository.py`
- [DB connection](https://github.com/cybxs82/g19x-ith-jldp-966-academic/blob/main/backend/infrastructure/database.py): `backend/infrastructure/database.py`
- [Settings](https://github.com/cybxs82/g19x-ith-jldp-966-academic/blob/main/backend/infrastructure/config.py): `backend/infrastructure/config.py`

### Other components

- **CFO / analista**
- **PostgreSQL**

## Connections

- CFO / analista → Dashboard: consulta
- Dashboard page → Dashboard client: solicita datos (evidence: `app/page.tsx`)
- Dashboard page → Dashboard: renderiza (evidence: `app/page.tsx`)
- Dashboard client → Next API routes: consulta dashboard (evidence: `controllers/dashboard-controller.ts`)
- Dashboard client → Financial model: mapea datos (evidence: `controllers/dashboard-controller.ts`)
- Dashboard → Reports client: guarda reporte (evidence: `views/dashboard-view.tsx`)
- Reports client → Next API routes: solicita reportes (evidence: `controllers/reports-controller.ts`)
- Reports client → Report model: usa contrato (evidence: `controllers/reports-controller.ts`)
- CFO / analista → ERP upload: carga archivos
- ERP upload → Auth client: invoca carga (evidence: `views/erp-upload-view.tsx`)
- Auth client → FastAPI controller: envía carga (evidence: `controllers/auth-controller.ts`)
- FastAPI controller → Authentication: autentica (evidence: `backend/controllers/financial_controller.py`)
- FastAPI controller → File ingestion: procesa cargas (evidence: `backend/controllers/financial_controller.py`)
- FastAPI controller → Recommendations: genera reglas (evidence: `backend/controllers/financial_controller.py`)
- FastAPI controller → Financial repository: consulta datos (evidence: `backend/controllers/financial_controller.py`)
- FastAPI controller → API schemas: valida contratos (evidence: `backend/controllers/financial_controller.py`)
- Financial repository → DB connection: abre conexión (evidence: `backend/repositories/financial_repository.py`)
- DB connection → Settings: lee ajustes (evidence: `backend/infrastructure/database.py`)
- DB connection → PostgreSQL: consulta y persiste (evidence: `backend/infrastructure/database.py`)
- CFO / analista → FastAPI controller: solicita forecast
- Financial repository → Forecasting: obtiene proyección (evidence: `backend/repositories/financial_repository.py`)
- Financial repository → File ingestion: recalcula derivados (evidence: `backend/repositories/financial_repository.py`)
- Financial repository → Report PDF: genera PDF (evidence: `backend/repositories/financial_repository.py`)
- CFO / analista → FastAPI controller: gestiona alertas
- CFO / analista → FastAPI controller: consulta recomendaciones
- CFO / analista → FastAPI controller: exporta instantánea
