# joaovgomees/gerenciador-de-ordens-de-servico architecture

> Architecture diagram of the GitHub repository joaovgomees/gerenciador-de-ordens-de-servico, 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/joaovgomees/gerenciador-de-ordens-de-servico
- Repository: https://github.com/joaovgomees/gerenciador-de-ordens-de-servico

## Overview

GestaoOsAPI is an ASP.NET Core service for managing service orders (OS) and users. Emitters create orders; managers sign for their sectors; administrators validate or cancel them; executants can view orders. Login validates credentials and issues a JWT, while protected API requests serve user and order operations. Order state advances from waiting for signatures to validation and then completion or cancellation. Repository and service excerpts support the storage and business-rule links; order-controller wiring is not shown, so that link is marked unverified.

Main entry points: [`GestaoOscAPI/GestaoOscAPI/Services/OscService.cs`](https://github.com/joaovgomees/gerenciador-de-ordens-de-servico/blob/main/GestaoOscAPI/GestaoOscAPI/Services/OscService.cs) (Order rules), [`GestaoOscAPI/GestaoOscAPI/Services/UsuarioService.cs`](https://github.com/joaovgomees/gerenciador-de-ordens-de-servico/blob/main/GestaoOscAPI/GestaoOscAPI/Services/UsuarioService.cs) (User rules), [`GestaoOscAPI/GestaoOscAPI/Controllers/UsuarioController.cs`](https://github.com/joaovgomees/gerenciador-de-ordens-de-servico/blob/main/GestaoOscAPI/GestaoOscAPI/Controllers/UsuarioController.cs) (User endpoints), [`GestaoOscAPI/GestaoOscAPI/Repositories/OscRepository.cs`](https://github.com/joaovgomees/gerenciador-de-ordens-de-servico/blob/main/GestaoOscAPI/GestaoOscAPI/Repositories/OscRepository.cs) (Order repository)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_api["API and authentication"]
  node_user_api["User endpoints"]
  node_auth_service["Login and JWT<br/>[UsuarioService.cs]"]
  node_token_service["Token issuer<br/>[TokenService.cs]"]
end

subgraph group_orders["Service orders"]
  node_order_api["Order endpoints<br/>[OscController.cs]"]
  node_order_service["Order rules<br/>[OscService.cs]"]
  node_osc["Order record<br/>[Osc.cs]"]
  node_order_state["Order lifecycle<br/>[StatusOsc.cs]"]
  node_order_dto["Order response<br/>[OscResponse.cs]"]
end

subgraph group_users["User management"]
  node_user_service["User rules<br/>[UsuarioService.cs]"]
  node_user["User record<br/>[Usuario.cs]"]
  node_roles["Roles and sectors<br/>[PerfilUsuario.cs]"]
  node_sectors["Sector values<br/>[Setor.cs]"]
  node_user_dto["User response<br/>[UsuarioResponse.cs]"]
end

subgraph group_storage["Persistence and domain"]
  node_order_repo["Order repository<br/>[OscRepository.cs]"]
  node_user_repo["User repository"]
  node_db_context["EF data context<br/>[AppDbContext.cs]"]
  node_database[("PostgreSQL store")]
end

node_caller(("API client"))

node_caller -->|"calls"| node_user_api
node_caller -->|"calls"| node_order_api
node_user_api -->|"calls"| node_user_service
node_user_api -->|"issues token"| node_token_service
node_user_api -->|"maps response"| node_user_dto
node_order_api -.->|"delegates to"| node_order_service
node_order_service -->|"reads and writes"| node_order_repo
node_order_service -->|"checks user"| node_user_service
node_user_service -->|"reads and writes"| node_user_repo
node_order_repo -->|"queries and saves"| node_db_context
node_user_repo -->|"queries and saves"| node_db_context
node_db_context -.->|"persists entities"| node_database
node_order_repo -->|"loads and stores"| node_osc
node_user_repo -->|"loads and stores"| node_user
node_order_service -->|"checks and advances"| node_order_state
node_order_service -->|"checks signatures"| node_sectors
node_user_service -->|"checks role"| node_roles
node_user_service -->|"filters users"| node_sectors
node_order_dto -->|"maps fields"| node_osc
node_user_dto -->|"maps fields"| node_user

click node_user_api "https://github.com/joaovgomees/gerenciador-de-ordens-de-servico/blob/main/GestaoOscAPI/GestaoOscAPI/Controllers/UsuarioController.cs"
click node_order_api "https://github.com/joaovgomees/gerenciador-de-ordens-de-servico/blob/main/GestaoOscAPI/GestaoOscAPI/Controllers/OscController.cs"
click node_auth_service "https://github.com/joaovgomees/gerenciador-de-ordens-de-servico/blob/main/GestaoOscAPI/GestaoOscAPI/Services/UsuarioService.cs"
click node_token_service "https://github.com/joaovgomees/gerenciador-de-ordens-de-servico/blob/main/GestaoOscAPI/GestaoOscAPI/Services/TokenService.cs"
click node_order_service "https://github.com/joaovgomees/gerenciador-de-ordens-de-servico/blob/main/GestaoOscAPI/GestaoOscAPI/Services/OscService.cs"
click node_user_service "https://github.com/joaovgomees/gerenciador-de-ordens-de-servico/blob/main/GestaoOscAPI/GestaoOscAPI/Services/UsuarioService.cs"
click node_order_repo "https://github.com/joaovgomees/gerenciador-de-ordens-de-servico/blob/main/GestaoOscAPI/GestaoOscAPI/Repositories/OscRepository.cs"
click node_user_repo "https://github.com/joaovgomees/gerenciador-de-ordens-de-servico/blob/main/GestaoOscAPI/GestaoOscAPI/Repositories/UsuarioRepository.cs"
click node_db_context "https://github.com/joaovgomees/gerenciador-de-ordens-de-servico/blob/main/GestaoOscAPI/GestaoOscAPI/Data/AppDbContext.cs"
click node_osc "https://github.com/joaovgomees/gerenciador-de-ordens-de-servico/blob/main/GestaoOscAPI/GestaoOscAPI/Models/Entities/Osc.cs"
click node_order_state "https://github.com/joaovgomees/gerenciador-de-ordens-de-servico/blob/main/GestaoOscAPI/GestaoOscAPI/Models/Enums/StatusOsc.cs"
click node_user "https://github.com/joaovgomees/gerenciador-de-ordens-de-servico/blob/main/GestaoOscAPI/GestaoOscAPI/Models/Entities/Usuario.cs"
click node_roles "https://github.com/joaovgomees/gerenciador-de-ordens-de-servico/blob/main/GestaoOscAPI/GestaoOscAPI/Models/Enums/PerfilUsuario.cs"
click node_sectors "https://github.com/joaovgomees/gerenciador-de-ordens-de-servico/blob/main/GestaoOscAPI/GestaoOscAPI/Models/Enums/Setor.cs"
click node_order_dto "https://github.com/joaovgomees/gerenciador-de-ordens-de-servico/blob/main/GestaoOscAPI/GestaoOscAPI/Models/Responses/OscResponse.cs"
click node_user_dto "https://github.com/joaovgomees/gerenciador-de-ordens-de-servico/blob/main/GestaoOscAPI/GestaoOscAPI/Models/Responses/UsuarioResponse.cs"

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_api,node_auth_service,node_token_service,node_caller toneBlue
class node_order_api,node_order_service,node_osc,node_order_state,node_order_dto toneAmber
class node_user_service,node_user,node_roles,node_sectors,node_user_dto toneMint
class node_order_repo,node_user_repo,node_db_context,node_database toneRose
```

## Components

### API and authentication

- [User endpoints](https://github.com/joaovgomees/gerenciador-de-ordens-de-servico/blob/main/GestaoOscAPI/GestaoOscAPI/Controllers/UsuarioController.cs): `GestaoOscAPI/GestaoOscAPI/Controllers/UsuarioController.cs`
- [Login and JWT](https://github.com/joaovgomees/gerenciador-de-ordens-de-servico/blob/main/GestaoOscAPI/GestaoOscAPI/Services/UsuarioService.cs): `GestaoOscAPI/GestaoOscAPI/Services/UsuarioService.cs`
- [Token issuer](https://github.com/joaovgomees/gerenciador-de-ordens-de-servico/blob/main/GestaoOscAPI/GestaoOscAPI/Services/TokenService.cs): `GestaoOscAPI/GestaoOscAPI/Services/TokenService.cs`

### Service orders

- [Order endpoints](https://github.com/joaovgomees/gerenciador-de-ordens-de-servico/blob/main/GestaoOscAPI/GestaoOscAPI/Controllers/OscController.cs): `GestaoOscAPI/GestaoOscAPI/Controllers/OscController.cs`
- [Order rules](https://github.com/joaovgomees/gerenciador-de-ordens-de-servico/blob/main/GestaoOscAPI/GestaoOscAPI/Services/OscService.cs): `GestaoOscAPI/GestaoOscAPI/Services/OscService.cs`
- [Order record](https://github.com/joaovgomees/gerenciador-de-ordens-de-servico/blob/main/GestaoOscAPI/GestaoOscAPI/Models/Entities/Osc.cs): `GestaoOscAPI/GestaoOscAPI/Models/Entities/Osc.cs`
- [Order lifecycle](https://github.com/joaovgomees/gerenciador-de-ordens-de-servico/blob/main/GestaoOscAPI/GestaoOscAPI/Models/Enums/StatusOsc.cs): `GestaoOscAPI/GestaoOscAPI/Models/Enums/StatusOsc.cs`
- [Order response](https://github.com/joaovgomees/gerenciador-de-ordens-de-servico/blob/main/GestaoOscAPI/GestaoOscAPI/Models/Responses/OscResponse.cs): `GestaoOscAPI/GestaoOscAPI/Models/Responses/OscResponse.cs`

### User management

- [User rules](https://github.com/joaovgomees/gerenciador-de-ordens-de-servico/blob/main/GestaoOscAPI/GestaoOscAPI/Services/UsuarioService.cs): `GestaoOscAPI/GestaoOscAPI/Services/UsuarioService.cs`
- [User record](https://github.com/joaovgomees/gerenciador-de-ordens-de-servico/blob/main/GestaoOscAPI/GestaoOscAPI/Models/Entities/Usuario.cs): `GestaoOscAPI/GestaoOscAPI/Models/Entities/Usuario.cs`
- [Roles and sectors](https://github.com/joaovgomees/gerenciador-de-ordens-de-servico/blob/main/GestaoOscAPI/GestaoOscAPI/Models/Enums/PerfilUsuario.cs): `GestaoOscAPI/GestaoOscAPI/Models/Enums/PerfilUsuario.cs`
- [Sector values](https://github.com/joaovgomees/gerenciador-de-ordens-de-servico/blob/main/GestaoOscAPI/GestaoOscAPI/Models/Enums/Setor.cs): `GestaoOscAPI/GestaoOscAPI/Models/Enums/Setor.cs`
- [User response](https://github.com/joaovgomees/gerenciador-de-ordens-de-servico/blob/main/GestaoOscAPI/GestaoOscAPI/Models/Responses/UsuarioResponse.cs): `GestaoOscAPI/GestaoOscAPI/Models/Responses/UsuarioResponse.cs`

### Persistence and domain

- [Order repository](https://github.com/joaovgomees/gerenciador-de-ordens-de-servico/blob/main/GestaoOscAPI/GestaoOscAPI/Repositories/OscRepository.cs): `GestaoOscAPI/GestaoOscAPI/Repositories/OscRepository.cs`
- [User repository](https://github.com/joaovgomees/gerenciador-de-ordens-de-servico/blob/main/GestaoOscAPI/GestaoOscAPI/Repositories/UsuarioRepository.cs): `GestaoOscAPI/GestaoOscAPI/Repositories/UsuarioRepository.cs`
- [EF data context](https://github.com/joaovgomees/gerenciador-de-ordens-de-servico/blob/main/GestaoOscAPI/GestaoOscAPI/Data/AppDbContext.cs): `GestaoOscAPI/GestaoOscAPI/Data/AppDbContext.cs`
- **PostgreSQL store**

### Other components

- **API client**

## Connections

- API client → User endpoints: calls (evidence: `README.md`)
- API client → Order endpoints: calls (evidence: `README.md`)
- User endpoints → User rules: calls (evidence: `GestaoOscAPI/GestaoOscAPI/Controllers/UsuarioController.cs`)
- User endpoints → Token issuer: issues token (evidence: `GestaoOscAPI/GestaoOscAPI/Controllers/UsuarioController.cs`)
- User endpoints → User response: maps response (evidence: `GestaoOscAPI/GestaoOscAPI/Controllers/UsuarioController.cs`)
- Order endpoints → Order rules: delegates to (evidence: `GestaoOscAPI/GestaoOscAPI/Controllers/OscController.cs`)
- Order rules → Order repository: reads and writes (evidence: `GestaoOscAPI/GestaoOscAPI/Services/OscService.cs`)
- Order rules → User rules: checks user (evidence: `GestaoOscAPI/GestaoOscAPI/Services/OscService.cs`)
- User rules → User repository: reads and writes (evidence: `GestaoOscAPI/GestaoOscAPI/Services/UsuarioService.cs`)
- Order repository → EF data context: queries and saves (evidence: `GestaoOscAPI/GestaoOscAPI/Repositories/OscRepository.cs`)
- User repository → EF data context: queries and saves (evidence: `GestaoOscAPI/GestaoOscAPI/Repositories/UsuarioRepository.cs`)
- EF data context → PostgreSQL store: persists entities
- Order repository → Order record: loads and stores (evidence: `GestaoOscAPI/GestaoOscAPI/Repositories/OscRepository.cs`)
- User repository → User record: loads and stores (evidence: `GestaoOscAPI/GestaoOscAPI/Repositories/UsuarioRepository.cs`)
- Order rules → Order lifecycle: checks and advances (evidence: `GestaoOscAPI/GestaoOscAPI/Services/OscService.cs`)
- Order rules → Sector values: checks signatures (evidence: `GestaoOscAPI/GestaoOscAPI/Services/OscService.cs`)
- User rules → Roles and sectors: checks role (evidence: `GestaoOscAPI/GestaoOscAPI/Services/UsuarioService.cs`)
- User rules → Sector values: filters users (evidence: `GestaoOscAPI/GestaoOscAPI/Services/UsuarioService.cs`)
- Order response → Order record: maps fields (evidence: `GestaoOscAPI/GestaoOscAPI/Models/Responses/OscResponse.cs`)
- User response → User record: maps fields (evidence: `GestaoOscAPI/GestaoOscAPI/Models/Responses/UsuarioResponse.cs`)
