75 lines
2.1 KiB
Markdown
75 lines
2.1 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 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.
|
|
|
|
## 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"}'
|
|
```
|
|
|
|
## 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).
|
|
|