# ycsbertolino-source/projeto_integrador_cti_nexus architecture

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

- Interactive diagram: https://gitdiagram.com/ycsbertolino-source/projeto_integrador_cti_nexus
- Repository: https://github.com/ycsbertolino-source/projeto_integrador_cti_nexus

## Overview

CTI Nexus lets users upload customer spreadsheets, review validation outcomes, and access processed dashboards and reports. The Java backend handles authentication, authorization, validation, and forwarding; the Python service cleans and analyzes accepted rows and persists batches and dashboard snapshots in PostgreSQL. The frontend also supports registration and administrator approval. The README documents the cross-service flow; some controller and dashboard wiring was not sampled, so those links are shown only where documented or left unverified.

Main entry points: [`frontend/src/services/api.js`](https://github.com/ycsbertolino-source/projeto_integrador_cti_nexus/blob/main/frontend/src/services/api.js) (API client), [`analytics-python/main.py`](https://github.com/ycsbertolino-source/projeto_integrador_cti_nexus/blob/main/analytics-python/main.py) (Batch orchestration), [`frontend/src/App.vue`](https://github.com/ycsbertolino-source/projeto_integrador_cti_nexus/blob/main/frontend/src/App.vue) (Vue application), [`backend/src/main/java/com/cti/provedor/service/UploadService.java`](https://github.com/ycsbertolino-source/projeto_integrador_cti_nexus/blob/main/backend/src/main/java/com/cti/provedor/service/UploadService.java) (Upload orchestration)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_ui["User interface"]
  node_frontend["Vue application<br/>[App.vue]"]
  node_views["Upload and reports"]
  node_authview["Login and users"]
  node_api_client["API client<br/>[api.js]"]
end

subgraph group_java["Java application"]
  node_auth_api["Authentication API"]
  node_auth_service["Account service<br/>[AuthService.java]"]
  node_user_admin["User administration"]
  node_user_service["User management"]
  node_user_repo[("User repository")]
  node_upload_api["Upload API"]
  node_upload_service["Upload orchestration<br/>[UploadService.java]"]
  node_validation["Spreadsheet validation"]
  node_etl_client["Python ETL client"]
  node_dashboard_api["Dashboard and history API"]
  node_dashboard_service["Dashboard queries"]
end

subgraph group_analytics["Python analytics"]
  node_python_api["ETL HTTP API<br/>[api.py]"]
  node_batch["Batch orchestration<br/>[main.py]"]
  node_cleaning["Row cleaning<br/>[limpeza.py]"]
  node_analysis["Statistics and insights<br/>[analise.py]"]
  node_python_store["Batch persistence<br/>[banco.py]"]
end

subgraph group_state["Persistent data"]
  node_postgres[("PostgreSQL")]
end

node_user(("User"))
node_admin(("Administrator"))

node_user -->|"uses"| node_frontend
node_admin -->|"manages users"| node_frontend
node_frontend -.->|"presents"| node_views
node_frontend -.->|"presents"| node_authview
node_views -.->|"requests data"| node_api_client
node_authview -.->|"requests access"| node_api_client
node_api_client -.->|"calls"| node_upload_api
node_api_client -.->|"calls"| node_auth_api
node_api_client -.->|"calls"| node_dashboard_api
node_auth_api -->|"delegates"| node_auth_service
node_auth_service -->|"reads and writes"| node_user_repo
node_user_admin -->|"delegates"| node_user_service
node_user_service -->|"reads and writes"| node_user_repo
node_upload_api -.->|"delegates"| node_upload_service
node_upload_service -->|"validates rows"| node_validation
node_upload_service -->|"forwards valid rows"| node_etl_client
node_etl_client -->|"sends batch"| node_python_api
node_python_api -.->|"dispatches batch"| node_batch
node_batch -->|"cleans rows"| node_cleaning
node_batch -->|"calculates statistics"| node_analysis
node_batch -->|"records results"| node_python_store
node_python_store -->|"persists batches"| node_postgres
node_dashboard_api -.->|"delegates"| node_dashboard_service
node_dashboard_service -->|"reads snapshots"| node_postgres

click node_frontend "https://github.com/ycsbertolino-source/projeto_integrador_cti_nexus/blob/main/frontend/src/App.vue"
click node_views "https://github.com/ycsbertolino-source/projeto_integrador_cti_nexus/tree/main/frontend/src/views"
click node_authview "https://github.com/ycsbertolino-source/projeto_integrador_cti_nexus/tree/main/frontend/src/views"
click node_api_client "https://github.com/ycsbertolino-source/projeto_integrador_cti_nexus/blob/main/frontend/src/services/api.js"
click node_auth_api "https://github.com/ycsbertolino-source/projeto_integrador_cti_nexus/blob/main/backend/src/main/java/com/cti/provedor/controller/AuthController.java"
click node_auth_service "https://github.com/ycsbertolino-source/projeto_integrador_cti_nexus/blob/main/backend/src/main/java/com/cti/provedor/service/AuthService.java"
click node_user_admin "https://github.com/ycsbertolino-source/projeto_integrador_cti_nexus/blob/main/backend/src/main/java/com/cti/provedor/controller/AdminUsuarioController.java"
click node_user_service "https://github.com/ycsbertolino-source/projeto_integrador_cti_nexus/blob/main/backend/src/main/java/com/cti/provedor/service/UsuarioService.java"
click node_user_repo "https://github.com/ycsbertolino-source/projeto_integrador_cti_nexus/blob/main/backend/src/main/java/com/cti/provedor/repository/UsuarioRepository.java"
click node_upload_api "https://github.com/ycsbertolino-source/projeto_integrador_cti_nexus/blob/main/backend/src/main/java/com/cti/provedor/controller/UploadController.java"
click node_upload_service "https://github.com/ycsbertolino-source/projeto_integrador_cti_nexus/blob/main/backend/src/main/java/com/cti/provedor/service/UploadService.java"
click node_validation "https://github.com/ycsbertolino-source/projeto_integrador_cti_nexus/blob/main/backend/src/main/java/com/cti/provedor/service/ClienteValidacaoService.java"
click node_etl_client "https://github.com/ycsbertolino-source/projeto_integrador_cti_nexus/blob/main/backend/src/main/java/com/cti/provedor/service/PythonEtlService.java"
click node_dashboard_api "https://github.com/ycsbertolino-source/projeto_integrador_cti_nexus/blob/main/backend/src/main/java/com/cti/provedor/controller/DashboardController.java"
click node_dashboard_service "https://github.com/ycsbertolino-source/projeto_integrador_cti_nexus/blob/main/backend/src/main/java/com/cti/provedor/service/DashboardService.java"
click node_python_api "https://github.com/ycsbertolino-source/projeto_integrador_cti_nexus/blob/main/analytics-python/api.py"
click node_batch "https://github.com/ycsbertolino-source/projeto_integrador_cti_nexus/blob/main/analytics-python/main.py"
click node_cleaning "https://github.com/ycsbertolino-source/projeto_integrador_cti_nexus/blob/main/analytics-python/limpeza.py"
click node_analysis "https://github.com/ycsbertolino-source/projeto_integrador_cti_nexus/blob/main/analytics-python/analise.py"
click node_python_store "https://github.com/ycsbertolino-source/projeto_integrador_cti_nexus/blob/main/analytics-python/banco.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_frontend,node_views,node_authview,node_api_client,node_user toneBlue
class node_auth_api,node_auth_service,node_user_admin,node_user_service,node_user_repo,node_upload_api,node_upload_service,node_validation,node_etl_client,node_dashboard_api,node_dashboard_service toneAmber
class node_python_api,node_batch,node_cleaning,node_analysis,node_python_store toneMint
class node_postgres toneRose
class node_admin toneIndigo
```

## Components

### User interface

- [Vue application](https://github.com/ycsbertolino-source/projeto_integrador_cti_nexus/blob/main/frontend/src/App.vue): `frontend/src/App.vue`
- [Upload and reports](https://github.com/ycsbertolino-source/projeto_integrador_cti_nexus/tree/main/frontend/src/views): `frontend/src/views`
- [Login and users](https://github.com/ycsbertolino-source/projeto_integrador_cti_nexus/tree/main/frontend/src/views): `frontend/src/views`
- [API client](https://github.com/ycsbertolino-source/projeto_integrador_cti_nexus/blob/main/frontend/src/services/api.js): `frontend/src/services/api.js`

### Java application

- [Authentication API](https://github.com/ycsbertolino-source/projeto_integrador_cti_nexus/blob/main/backend/src/main/java/com/cti/provedor/controller/AuthController.java): `backend/src/main/java/com/cti/provedor/controller/AuthController.java`
- [Account service](https://github.com/ycsbertolino-source/projeto_integrador_cti_nexus/blob/main/backend/src/main/java/com/cti/provedor/service/AuthService.java): `backend/src/main/java/com/cti/provedor/service/AuthService.java`
- [User administration](https://github.com/ycsbertolino-source/projeto_integrador_cti_nexus/blob/main/backend/src/main/java/com/cti/provedor/controller/AdminUsuarioController.java): `backend/src/main/java/com/cti/provedor/controller/AdminUsuarioController.java`
- [User management](https://github.com/ycsbertolino-source/projeto_integrador_cti_nexus/blob/main/backend/src/main/java/com/cti/provedor/service/UsuarioService.java): `backend/src/main/java/com/cti/provedor/service/UsuarioService.java`
- [User repository](https://github.com/ycsbertolino-source/projeto_integrador_cti_nexus/blob/main/backend/src/main/java/com/cti/provedor/repository/UsuarioRepository.java): `backend/src/main/java/com/cti/provedor/repository/UsuarioRepository.java`
- [Upload API](https://github.com/ycsbertolino-source/projeto_integrador_cti_nexus/blob/main/backend/src/main/java/com/cti/provedor/controller/UploadController.java): `backend/src/main/java/com/cti/provedor/controller/UploadController.java`
- [Upload orchestration](https://github.com/ycsbertolino-source/projeto_integrador_cti_nexus/blob/main/backend/src/main/java/com/cti/provedor/service/UploadService.java): `backend/src/main/java/com/cti/provedor/service/UploadService.java`
- [Spreadsheet validation](https://github.com/ycsbertolino-source/projeto_integrador_cti_nexus/blob/main/backend/src/main/java/com/cti/provedor/service/ClienteValidacaoService.java): `backend/src/main/java/com/cti/provedor/service/ClienteValidacaoService.java`
- [Python ETL client](https://github.com/ycsbertolino-source/projeto_integrador_cti_nexus/blob/main/backend/src/main/java/com/cti/provedor/service/PythonEtlService.java): `backend/src/main/java/com/cti/provedor/service/PythonEtlService.java`
- [Dashboard and history API](https://github.com/ycsbertolino-source/projeto_integrador_cti_nexus/blob/main/backend/src/main/java/com/cti/provedor/controller/DashboardController.java): `backend/src/main/java/com/cti/provedor/controller/DashboardController.java`
- [Dashboard queries](https://github.com/ycsbertolino-source/projeto_integrador_cti_nexus/blob/main/backend/src/main/java/com/cti/provedor/service/DashboardService.java): `backend/src/main/java/com/cti/provedor/service/DashboardService.java`

### Python analytics

- [ETL HTTP API](https://github.com/ycsbertolino-source/projeto_integrador_cti_nexus/blob/main/analytics-python/api.py): `analytics-python/api.py`
- [Batch orchestration](https://github.com/ycsbertolino-source/projeto_integrador_cti_nexus/blob/main/analytics-python/main.py): `analytics-python/main.py`
- [Row cleaning](https://github.com/ycsbertolino-source/projeto_integrador_cti_nexus/blob/main/analytics-python/limpeza.py): `analytics-python/limpeza.py`
- [Statistics and insights](https://github.com/ycsbertolino-source/projeto_integrador_cti_nexus/blob/main/analytics-python/analise.py): `analytics-python/analise.py`
- [Batch persistence](https://github.com/ycsbertolino-source/projeto_integrador_cti_nexus/blob/main/analytics-python/banco.py): `analytics-python/banco.py`

### Persistent data

- **PostgreSQL**

### Other components

- **User**
- **Administrator**

## Connections

- User → Vue application: uses (evidence: `README.md`)
- Administrator → Vue application: manages users (evidence: `README.md`)
- Vue application → Upload and reports: presents
- Vue application → Login and users: presents
- Upload and reports → API client: requests data
- Login and users → API client: requests access
- API client → Upload API: calls
- API client → Authentication API: calls
- API client → Dashboard and history API: calls
- Authentication API → Account service: delegates (evidence: `backend/src/main/java/com/cti/provedor/controller/AuthController.java`)
- Account service → User repository: reads and writes (evidence: `backend/src/main/java/com/cti/provedor/service/AuthService.java`)
- User administration → User management: delegates (evidence: `backend/src/main/java/com/cti/provedor/controller/AdminUsuarioController.java`)
- User management → User repository: reads and writes (evidence: `backend/src/main/java/com/cti/provedor/service/UsuarioService.java`)
- Upload API → Upload orchestration: delegates
- Upload orchestration → Spreadsheet validation: validates rows (evidence: `backend/src/main/java/com/cti/provedor/service/UploadService.java`)
- Upload orchestration → Python ETL client: forwards valid rows (evidence: `backend/src/main/java/com/cti/provedor/service/UploadService.java`)
- Python ETL client → ETL HTTP API: sends batch (evidence: `README.md`)
- ETL HTTP API → Batch orchestration: dispatches batch
- Batch orchestration → Row cleaning: cleans rows (evidence: `analytics-python/main.py`)
- Batch orchestration → Statistics and insights: calculates statistics (evidence: `analytics-python/main.py`)
- Batch orchestration → Batch persistence: records results (evidence: `analytics-python/main.py`)
- Batch persistence → PostgreSQL: persists batches (evidence: `README.md`)
- Dashboard and history API → Dashboard queries: delegates
- Dashboard queries → PostgreSQL: reads snapshots (evidence: `README.md`)
