core/platform-projects-core/README.md
2026-01-08 15:35:44 -03:00

84 lines
2.5 KiB
Markdown

# platform-projects-core
`platform-projects-core` é o ERP técnico da plataforma. Ele é a **fonte de verdade** sobre projetos, produtos e ambientes.
## Responsabilidade e limites
**Este serviço faz:**
- Governança de projetos, ambientes, repositórios, tarefas e vínculos externos.
- Orquestração de metadados com multi-tenancy por design.
- Auditoria e observabilidade para uso enterprise.
**Este serviço não faz:**
- Não executa código de cliente.
- Não faz CI/CD ou deploy.
- Não autentica usuários finais.
- Não substitui GitHub, GitLab ou clouds.
## Fluxo de dados
1. Requisições autenticadas chegam em `/api/v1`.
2. Middleware JWT valida, injeta `tenantId` no contexto e bloqueia requisições inválidas.
3. Handlers transformam DTOs em comandos e chamam os casos de uso.
4. Casos de uso aplicam regras de domínio e persistem via repositórios.
5. Respostas padronizadas são retornadas ao cliente.
## Modelo de domínio (resumo)
- **Project (Aggregate Root)**: slug único por tenant, status controlado.
- **Environment**: pertence a um projeto, tipos controlados.
- **Repository**: metadados, provider enum, URL validada, branch obrigatória.
- **Project Links**: somente IDs externos, meta JSON sem segredo.
- **Tasks**: tarefas com status, prazo e vínculo por projeto.
## Exemplo de uso
Criar projeto:
```bash
curl -X POST http://localhost:8080/api/v1/projects \
-H "Authorization: Bearer <token>" \
-H "Content-Type: application/json" \
-d '{"name":"Core ERP","slug":"core-erp","description":"ERP técnico"}'
```
Criar ambiente:
```bash
curl -X POST http://localhost:8080/api/v1/environments \
-H "Authorization: Bearer <token>" \
-H "Content-Type: application/json" \
-d '{"project_id":"<project-id>","type":"production"}'
```
Criar tarefa:
```bash
curl -X POST http://localhost:8080/api/v1/tasks \
-H "Authorization: Bearer <token>" \
-H "Content-Type: application/json" \
-d '{"project_id":"<project-id>","title":"Kickoff","description":"Reunião inicial","due_date":"2024-09-01T12:00:00Z"}'
```
## Escalabilidade com segurança
- Multi-tenancy explícito em todas as tabelas e queries.
- JWT validado por JWKS e fallback opcional por secret interno.
- Logs estruturados e middlewares defensivos.
- Configuração validada no boot (fail-fast).
## Comandos
```bash
make run
make migrate
make sqlc
make test
make lint
```
## Observabilidade
- Logs estruturados via `slog`.
- Endpoint `/api/v1/health`.
- Endpoint `/api/v1/metrics` (placeholder para instrumentação enterprise).