# lukasmelo2121/cotacao-vida-pu architecture

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

- Interactive diagram: https://gitdiagram.com/lukasmelo2121/cotacao-vida-pu
- Repository: https://github.com/lukasmelo2121/cotacao-vida-pu

## Overview

Cotacao-Vida-PU is a B2B platform for quoting and issuing corporate life insurance. Brokers authenticate, enter employer, coverage and insured-member details in a wizard, preview pricing, then submit a quote for rule evaluation, underwriting and actuarial calculation; the backend persists the quote and can produce PDF reports. The README also highlights resumable PII-free drafts, token security and sensitive-data protection. Some frontend and backend wiring is documented or visible in sampled code; unsampled service internals and integrations are shown only where supported by the tree or README.

Main entry points: [`src/main/java/br/com/cotacaovidapu/service/CotacaoService.java`](https://github.com/lukasmelo2121/cotacao-vida-pu/blob/main/src/main/java/br/com/cotacaovidapu/service/CotacaoService.java) (Quote orchestration), [`frontend/src/features/cotacao/components/Wizard.tsx`](https://github.com/lukasmelo2121/cotacao-vida-pu/blob/main/frontend/src/features/cotacao/components/Wizard.tsx) (Quote wizard), [`src/main/java/br/com/cotacaovidapu/controller/CotacaoController.java`](https://github.com/lukasmelo2121/cotacao-vida-pu/blob/main/src/main/java/br/com/cotacaovidapu/controller/CotacaoController.java) (Quote endpoints), [`frontend/src/App.tsx`](https://github.com/lukasmelo2121/cotacao-vida-pu/blob/main/frontend/src/App.tsx) (Application shell)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_frontend["Broker interface"]
  node_app["Application shell<br/>[App.tsx]"]
  node_login["Login page<br/>[LoginPage.tsx]"]
  node_wizard["Quote wizard<br/>[Wizard.tsx]"]
  node_quoteforms["Quote forms"]
  node_quoteapi["Quote API client<br/>[cotacaoService.ts]"]
  node_authapi["Auth API client<br/>[authService.ts]"]
  node_cep["ViaCEP service<br/>[useViaCep.ts]"]
end

subgraph group_identity["Identity and access"]
  node_authcontroller["Auth endpoints"]
  node_authservice["Auth service<br/>[AuthService.java]"]
  node_jwt["JWT services<br/>[JwtService.java]"]
  node_accounts["Account repository"]
end

subgraph group_quoting["Quote processing"]
  node_quotecontroller["Quote endpoints"]
  node_quoteservice["Quote orchestration"]
  node_underwriting["Underwriting validation"]
  node_rules["Rule engine"]
  node_calculator["Premium calculator"]
  node_draftcontroller["Draft endpoints"]
  node_draftservice["Draft service<br/>[DraftService.java]"]
end

subgraph group_records["Persistence and reports"]
  node_cotationrepo["Quote repository"]
  node_draftrepo["Draft repository"]
  node_ruledata["Rule repository"]
  node_database[("Relational database")]
  node_report["PDF reports"]
end

node_broker(("Broker"))
node_viacep["ViaCEP"]

node_broker -->|"uses"| node_app
node_app -->|"shows unauthenticated"| node_login
node_app -->|"shows authenticated"| node_wizard
node_login -->|"submits credentials"| node_authapi
node_authapi -->|"calls login"| node_authcontroller
node_authcontroller -->|"delegates auth"| node_authservice
node_authservice -->|"checks account"| node_accounts
node_authservice -->|"issues tokens"| node_jwt
node_wizard -->|"presents stages"| node_quoteforms
node_quoteforms -->|"looks up address"| node_cep
node_cep -.->|"fetches CEP"| node_viacep
node_wizard -->|"submits quote"| node_quoteapi
node_quoteapi -->|"calls quote API"| node_quotecontroller
node_quotecontroller -->|"generates quote"| node_quoteservice
node_quotecontroller -->|"simulates premium"| node_calculator
node_quotecontroller -->|"requests PDF"| node_report
node_quoteservice -->|"validates risk"| node_underwriting
node_quoteservice -->|"applies rules"| node_rules
node_quoteservice -->|"calculates premium"| node_calculator
node_rules -->|"loads rules"| node_ruledata
node_quoteservice -->|"saves quote"| node_cotationrepo
node_cotationrepo -->|"reads and writes"| node_database
node_ruledata -->|"reads rules"| node_database
node_wizard -.->|"autosaves draft"| node_draftcontroller
node_draftcontroller -->|"saves or loads"| node_draftservice
node_draftservice -->|"reads and writes"| node_draftrepo
node_draftrepo -->|"reads and writes"| node_database

click node_app "https://github.com/lukasmelo2121/cotacao-vida-pu/blob/main/frontend/src/App.tsx"
click node_login "https://github.com/lukasmelo2121/cotacao-vida-pu/blob/main/frontend/src/features/auth/components/LoginPage.tsx"
click node_wizard "https://github.com/lukasmelo2121/cotacao-vida-pu/blob/main/frontend/src/features/cotacao/components/Wizard.tsx"
click node_quoteforms "https://github.com/lukasmelo2121/cotacao-vida-pu/tree/main/frontend/src/features/cotacao/components"
click node_quoteapi "https://github.com/lukasmelo2121/cotacao-vida-pu/blob/main/frontend/src/services/cotacaoService.ts"
click node_authapi "https://github.com/lukasmelo2121/cotacao-vida-pu/blob/main/frontend/src/services/authService.ts"
click node_cep "https://github.com/lukasmelo2121/cotacao-vida-pu/blob/main/frontend/src/features/cotacao/hooks/useViaCep.ts"
click node_authcontroller "https://github.com/lukasmelo2121/cotacao-vida-pu/blob/main/src/main/java/br/com/cotacaovidapu/controller/AuthController.java"
click node_authservice "https://github.com/lukasmelo2121/cotacao-vida-pu/blob/main/src/main/java/br/com/cotacaovidapu/service/AuthService.java"
click node_jwt "https://github.com/lukasmelo2121/cotacao-vida-pu/blob/main/src/main/java/br/com/cotacaovidapu/service/JwtService.java"
click node_accounts "https://github.com/lukasmelo2121/cotacao-vida-pu/blob/main/src/main/java/br/com/cotacaovidapu/repository/UserAccountRepository.java"
click node_quotecontroller "https://github.com/lukasmelo2121/cotacao-vida-pu/blob/main/src/main/java/br/com/cotacaovidapu/controller/CotacaoController.java"
click node_quoteservice "https://github.com/lukasmelo2121/cotacao-vida-pu/blob/main/src/main/java/br/com/cotacaovidapu/service/CotacaoService.java"
click node_underwriting "https://github.com/lukasmelo2121/cotacao-vida-pu/blob/main/src/main/java/br/com/cotacaovidapu/service/validation/UnderwritingValidator.java"
click node_rules "https://github.com/lukasmelo2121/cotacao-vida-pu/blob/main/src/main/java/br/com/cotacaovidapu/service/RegraEngineService.java"
click node_calculator "https://github.com/lukasmelo2121/cotacao-vida-pu/blob/main/src/main/java/br/com/cotacaovidapu/service/CalculadoraPremioService.java"
click node_draftcontroller "https://github.com/lukasmelo2121/cotacao-vida-pu/blob/main/src/main/java/br/com/cotacaovidapu/controller/DraftController.java"
click node_draftservice "https://github.com/lukasmelo2121/cotacao-vida-pu/blob/main/src/main/java/br/com/cotacaovidapu/service/DraftService.java"
click node_cotationrepo "https://github.com/lukasmelo2121/cotacao-vida-pu/blob/main/src/main/java/br/com/cotacaovidapu/repository/CotacaoRepository.java"
click node_draftrepo "https://github.com/lukasmelo2121/cotacao-vida-pu/blob/main/src/main/java/br/com/cotacaovidapu/repository/CotacaoDraftRepository.java"
click node_ruledata "https://github.com/lukasmelo2121/cotacao-vida-pu/blob/main/src/main/java/br/com/cotacaovidapu/repository/RegraRepository.java"
click node_report "https://github.com/lukasmelo2121/cotacao-vida-pu/blob/main/src/main/java/br/com/cotacaovidapu/service/RelatorioService.java"

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_app,node_login,node_wizard,node_quoteforms,node_quoteapi,node_authapi,node_cep toneBlue
class node_authcontroller,node_authservice,node_jwt,node_accounts toneAmber
class node_quotecontroller,node_quoteservice,node_underwriting,node_rules,node_calculator,node_draftcontroller,node_draftservice toneMint
class node_cotationrepo,node_draftrepo,node_ruledata,node_database,node_report toneRose
class node_broker,node_viacep toneIndigo
```

## Components

### Broker interface

- [Application shell](https://github.com/lukasmelo2121/cotacao-vida-pu/blob/main/frontend/src/App.tsx): `frontend/src/App.tsx`
- [Login page](https://github.com/lukasmelo2121/cotacao-vida-pu/blob/main/frontend/src/features/auth/components/LoginPage.tsx): `frontend/src/features/auth/components/LoginPage.tsx`
- [Quote wizard](https://github.com/lukasmelo2121/cotacao-vida-pu/blob/main/frontend/src/features/cotacao/components/Wizard.tsx): `frontend/src/features/cotacao/components/Wizard.tsx`
- [Quote forms](https://github.com/lukasmelo2121/cotacao-vida-pu/tree/main/frontend/src/features/cotacao/components): `frontend/src/features/cotacao/components`
- [Quote API client](https://github.com/lukasmelo2121/cotacao-vida-pu/blob/main/frontend/src/services/cotacaoService.ts): `frontend/src/services/cotacaoService.ts`
- [Auth API client](https://github.com/lukasmelo2121/cotacao-vida-pu/blob/main/frontend/src/services/authService.ts): `frontend/src/services/authService.ts`
- [ViaCEP service](https://github.com/lukasmelo2121/cotacao-vida-pu/blob/main/frontend/src/features/cotacao/hooks/useViaCep.ts): `frontend/src/features/cotacao/hooks/useViaCep.ts`

### Identity and access

- [Auth endpoints](https://github.com/lukasmelo2121/cotacao-vida-pu/blob/main/src/main/java/br/com/cotacaovidapu/controller/AuthController.java): `src/main/java/br/com/cotacaovidapu/controller/AuthController.java`
- [Auth service](https://github.com/lukasmelo2121/cotacao-vida-pu/blob/main/src/main/java/br/com/cotacaovidapu/service/AuthService.java): `src/main/java/br/com/cotacaovidapu/service/AuthService.java`
- [JWT services](https://github.com/lukasmelo2121/cotacao-vida-pu/blob/main/src/main/java/br/com/cotacaovidapu/service/JwtService.java): `src/main/java/br/com/cotacaovidapu/service/JwtService.java`
- [Account repository](https://github.com/lukasmelo2121/cotacao-vida-pu/blob/main/src/main/java/br/com/cotacaovidapu/repository/UserAccountRepository.java): `src/main/java/br/com/cotacaovidapu/repository/UserAccountRepository.java`

### Quote processing

- [Quote endpoints](https://github.com/lukasmelo2121/cotacao-vida-pu/blob/main/src/main/java/br/com/cotacaovidapu/controller/CotacaoController.java): `src/main/java/br/com/cotacaovidapu/controller/CotacaoController.java`
- [Quote orchestration](https://github.com/lukasmelo2121/cotacao-vida-pu/blob/main/src/main/java/br/com/cotacaovidapu/service/CotacaoService.java): `src/main/java/br/com/cotacaovidapu/service/CotacaoService.java`
- [Underwriting validation](https://github.com/lukasmelo2121/cotacao-vida-pu/blob/main/src/main/java/br/com/cotacaovidapu/service/validation/UnderwritingValidator.java): `src/main/java/br/com/cotacaovidapu/service/validation/UnderwritingValidator.java`
- [Rule engine](https://github.com/lukasmelo2121/cotacao-vida-pu/blob/main/src/main/java/br/com/cotacaovidapu/service/RegraEngineService.java): `src/main/java/br/com/cotacaovidapu/service/RegraEngineService.java`
- [Premium calculator](https://github.com/lukasmelo2121/cotacao-vida-pu/blob/main/src/main/java/br/com/cotacaovidapu/service/CalculadoraPremioService.java): `src/main/java/br/com/cotacaovidapu/service/CalculadoraPremioService.java`
- [Draft endpoints](https://github.com/lukasmelo2121/cotacao-vida-pu/blob/main/src/main/java/br/com/cotacaovidapu/controller/DraftController.java): `src/main/java/br/com/cotacaovidapu/controller/DraftController.java`
- [Draft service](https://github.com/lukasmelo2121/cotacao-vida-pu/blob/main/src/main/java/br/com/cotacaovidapu/service/DraftService.java): `src/main/java/br/com/cotacaovidapu/service/DraftService.java`

### Persistence and reports

- [Quote repository](https://github.com/lukasmelo2121/cotacao-vida-pu/blob/main/src/main/java/br/com/cotacaovidapu/repository/CotacaoRepository.java): `src/main/java/br/com/cotacaovidapu/repository/CotacaoRepository.java`
- [Draft repository](https://github.com/lukasmelo2121/cotacao-vida-pu/blob/main/src/main/java/br/com/cotacaovidapu/repository/CotacaoDraftRepository.java): `src/main/java/br/com/cotacaovidapu/repository/CotacaoDraftRepository.java`
- [Rule repository](https://github.com/lukasmelo2121/cotacao-vida-pu/blob/main/src/main/java/br/com/cotacaovidapu/repository/RegraRepository.java): `src/main/java/br/com/cotacaovidapu/repository/RegraRepository.java`
- **Relational database**
- [PDF reports](https://github.com/lukasmelo2121/cotacao-vida-pu/blob/main/src/main/java/br/com/cotacaovidapu/service/RelatorioService.java): `src/main/java/br/com/cotacaovidapu/service/RelatorioService.java`

### Other components

- **Broker**
- **ViaCEP**

## Connections

- Broker → Application shell: uses
- Application shell → Login page: shows unauthenticated
- Application shell → Quote wizard: shows authenticated
- Login page → Auth API client: submits credentials
- Auth API client → Auth endpoints: calls login
- Auth endpoints → Auth service: delegates auth
- Auth service → Account repository: checks account
- Auth service → JWT services: issues tokens
- Quote wizard → Quote forms: presents stages
- Quote forms → ViaCEP service: looks up address
- ViaCEP service → ViaCEP: fetches CEP
- Quote wizard → Quote API client: submits quote
- Quote API client → Quote endpoints: calls quote API
- Quote endpoints → Quote orchestration: generates quote
- Quote endpoints → Premium calculator: simulates premium
- Quote endpoints → PDF reports: requests PDF
- Quote orchestration → Underwriting validation: validates risk
- Quote orchestration → Rule engine: applies rules
- Quote orchestration → Premium calculator: calculates premium
- Rule engine → Rule repository: loads rules
- Quote orchestration → Quote repository: saves quote
- Quote repository → Relational database: reads and writes
- Rule repository → Relational database: reads rules
- Quote wizard → Draft endpoints: autosaves draft
- Draft endpoints → Draft service: saves or loads
- Draft service → Draft repository: reads and writes
- Draft repository → Relational database: reads and writes
