# 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 " \ -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 " \ -H "Content-Type: application/json" \ -d '{"project_id":"","type":"production"}' ``` Criar tarefa: ```bash curl -X POST http://localhost:8080/api/v1/tasks \ -H "Authorization: Bearer " \ -H "Content-Type: application/json" \ -d '{"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).