Documentação técnica • Autor: Leonardo Norbiato - Equipe de Engenharia
Cliente: Aster Technology / UVA Última Atualização: 15/09/2025 Autores: Leonardo Norbiato - Equipe de Engenharia

Microservice HR

Microserviço de recursos humanos — NestJS/PostgreSQL

Índice

1. OBJETIVO

Este documento consolida as informações técnicas e de arquitetura do projeto "microservice-hr", um microserviço desenvolvido em NestJS que gerencia recursos humanos, incluindo cadastro de pessoas, funcionários, endereços e contatos. O serviço implementa Clean Architecture com separação clara de responsabilidades e utiliza Prisma ORM para persistência de dados PostgreSQL. O microserviço oferece APIs REST completas para gestão de entidades de RH com autenticação JWT, documentação Swagger e testes automatizados.

2. ÚLTIMA REVISÃO

3. TECNOLOGIAS UTILIZADAS

Backend
Node.js v20+, NestJS v10.0.0 (framework), TypeScript v5.1.3, Prisma ORM v5.21.1, JWT (jsonwebtoken v9.0.2), Passport (autenticação), Swagger (documentação), Class-validator v0.14.1, Class-transformer v0.5.1 (validação), bcrypt v5.1.1 (hash), Jest v29.5.0 (testes), ESLint, Prettier (qualidade de código)
Frontend
Não aplicável (API pura)
Banco de Dados
PostgreSQL v14 (principal), Prisma Migrations para versionamento do schema
Ferramentas de Conexão e Infraestrutura
Docker Compose v3.8 (PostgreSQL + App), Docker multi-stage build para produção, Prisma Migrations para controle de schema

4. FUNCIONALIDADES E DOMÍNIOS

Person
Gestão de pessoas (física/jurídica/estrangeira) com suporte a PersonType (CORPORATE, INDIVIDUAL, FOREIGN), validação de dados com enums (TaxRegime, CivilStatus, Gender) e campos opcionais para flexibilidade
Employee
Gestão de funcionários vinculados a pessoas com relacionamento One-to-One, suporte a PositionType (FULL_TIME, PART_TIME, CONTRACTOR, INTERN) e EmploymentStatus (ACTIVE, INACTIVE, SUSPENDED)
Address
Gestão de endereços (residencial/comercial) com relacionamento Many-to-One com Person, suporte a AddressType (RESIDENTIAL, COMMERCIAL) e estados brasileiros via enum BrazilianState
Contact
Gestão de contatos (email, telefone, etc.) com relacionamento Many-to-One com Person e suporte a primaryContact para contato principal

5. ARQUITETURA FRONTEND

Não aplicável - API pura sem frontend próprio

6. ARQUITETURA BACKEND

Clean Architecture com separação de responsabilidades:

Controllers/Endpoints:

Services (Lógica de Negócio):

Repositories (Persistência):

Entities/DTOs:

Guards/Middlewares:

Helper/Utilities:

7. ROTAS E ENDPOINTS

PersonController:

Outros Controllers:

8. ESTRUTURA DE DADOS, TABELAS E VIEWS

Banco de Dados PostgreSQL:

Tabelas Principais:

Views:

Não implementadas

9. CONFIGURAÇÃO E VARIÁVEIS

Variáveis de ambiente:

Docker Compose para desenvolvimento:

Docker multi-stage build para produção:

10. TREEVIEW DA ARQUITETURA

microservice-hr/
├── docker-compose.yml                 # Configuração Docker
├── Dockerfile                         # Imagem Docker
├── package.json                       # Dependências Node.js
├── prisma/
│   ├── migrations/                    # Migrações do banco
│   │   └── 20241031002634_init/
│   │       └── migration.sql
│   └── schema.prisma                  # Schema do banco de dados
├── src/
│   ├── app.module.ts                  # Módulo principal
│   ├── main.ts                        # Ponto de entrada
│   ├── domain/                        # Camada de domínio
│   │   ├── entities/                  # Entidades de negócio
│   │   │   ├── contact.entity.ts
│   │   │   ├── employee.entity.ts
│   │   │   ├── person.entity.ts
│   │   │   └── person.enums.ts
│   │   └── services/                  # Serviços de domínio
│   │       ├── address.service.ts
│   │       ├── contact.service.ts
│   │       ├── employee.service.ts
│   │       └── person.service.ts
│   ├── infrastructure/                # Camada de infraestrutura
│   │   ├── filters/                   # Filtros globais
│   │   │   └── all-exceptions.filter.ts
│   │   ├── guards/                    # Guards de autenticação
│   │   │   ├── auth.guard.ts
│   │   │   └── mock-auth.guard.ts
│   │   ├── prisma/                    # Configuração Prisma
│   │   │   ├── prisma.module.ts
│   │   │   ├── prisma.service.ts
│   │   │   └── repositories/          # Repositórios
│   │   │       ├── address.repository.ts
│   │   │       ├── contact.repository.ts
│   │   │       ├── employee.repository.ts
│   │   │       └── person.repository.ts
│   │   └── security/                  # Módulo de segurança
│   │       └── security.module.ts
│   ├── interfaces/                    # Interfaces e mocks
│   │   └── http/
│   │       └── __mocks__/
│   │           ├── address.mock.ts
│   │           └── person.mocks.ts
│   └── presentation/                  # Camada de apresentação
│       ├── controllers/               # Controllers REST
│       │   ├── address.controller.ts
│       │   ├── contact.controller.ts
│       │   ├── employee.controller.ts
│       │   └── person.controller.ts
│       ├── dtos/                      # Data Transfer Objects
│       │   ├── create-contact.dto.ts
│       │   ├── create-employee.dto.ts
│       │   ├── create-person.dto.ts
│       │   ├── update-contact.dto.ts
│       │   └── update-person.dto.ts
│       └── modules/                   # Módulos NestJS
│           ├── address.module.ts
│           ├── contact.module.ts
│           ├── employee.module.ts
│           └── person.module.ts
└── test/                              # Testes
    ├── app.e2e-spec.ts
    ├── jest-e2e.json
    └── setup.ts
      

11. INTEGRAÇÕES E DEPENDÊNCIAS

Dependências principais
Node.js, NestJS, TypeScript, Prisma ORM, JWT, Passport, Swagger, Class-validator, Class-transformer, bcrypt, Jest, ESLint, Prettier
Banco de Dados
PostgreSQL (principal)
Ferramentas
Docker Compose, Prisma Migrations

12. INTEGRAÇÕES EXTERNAS

Comunicação Interna
REST API com Swagger (/api), Endpoints padronizados CRUD, Validação de dados com class-validator, Tratamento de exceções global
Documentação
Swagger UI disponível em /api, Documentação automática dos endpoints, Exemplos de request/response, Autenticação Bearer configurada

13. CONTROLE DE VERSÃO

14. SEGURANÇA E ACESSO

Autenticação:

Autorização:

15. CONSIDERAÇÕES FINAIS

O microservice-hr é um serviço bem estruturado seguindo Clean Architecture, com separação clara de responsabilidades entre as camadas de domínio, infraestrutura e apresentação. O uso do Prisma ORM facilita a manipulação de dados e migrações, enquanto o NestJS fornece uma base sólida para APIs REST. O serviço implementa um modelo de dados robusto para gestão de recursos humanos com suporte a diferentes tipos de pessoas e relacionamentos complexos.

Pontos Fortes:

O serviço está preparado para integração com outros microserviços do ecossistema Aster/UVA e pode ser facilmente expandido com novas funcionalidades de RH. A arquitetura modular permite adição de novos domínios sem impacto nas funcionalidades existentes.

Retornar para home