# 📊 Relatório Técnico & Status (GoHorseJobs) ## 1. Visão Geral da Arquitetura (Real vs. Planejado) Este diagrama reflete o estado atual do sistema em ambiente de desenvolvimento (`localhost`), destacando os pontos funcionais e as integrações pendentes. * 🟢 **Verde:** Funcionando/Operacional. * 🟡 **Amarelo:** Parcial/Bugado. * 🔴 **Vermelho:** Quebrado/Faltando Config. * 💀 **Vermelho Escuro:** Falha Crítica de Segurança. ```mermaid graph TD %% Estilos classDef working fill:#dcfce7,stroke:#16a34a,stroke-width:2px; classDef partial fill:#fef9c3,stroke:#ca8a04,stroke-width:2px,stroke-dasharray:5 5; classDef broken fill:#fee2e2,stroke:#dc2626,stroke-width:2px,stroke-dasharray:5 5; classDef critical fill:#991b1b,stroke:#fca5a5,stroke-width:4px,color:#fff; classDef success fill:#dcfce7,stroke:#16a34a,stroke-width:2px; classDef warning fill:#fef9c3,stroke:#ca8a04,stroke-width:2px; classDef error fill:#fee2e2,stroke:#dc2626,stroke-width:2px; subgraph Frontend["Frontend & App"] FE[Next.js 15]:::working end subgraph Backend["Core Backend"] API[Go API]:::working DB[(PostgreSQL)]:::working BO[NestJS Backoffice]:::broken end subgraph Integracoes["Integrações (O Gargalo)"] MQ[LavinMQ]:::broken S3["Cloudflare R2/S3
(Uploads)"]:::broken FCM[Firebase FCM]:::broken AW["Appwrite Realtime
(Chat)"]:::broken ST["Stripe
(Pagamentos)"]:::broken end %% Fluxos FE -->|✅ OK| API API -->|✅ OK| DB %% Falhas API -.->|❌ Falha no Upload| S3 FE -.->|❌ Falha na Conexão| AW API -.->|❌ Não Configurado| MQ API -.->|❌ Mockado/Ignorado| ST %% Alerta de Segurança SEC["⚠️ FALHA CRÍTICA DE SEGURANÇA
Usuário altera o próprio Role para SuperAdmin"]:::critical FE -.-> SEC %% Atores Empresa((Empresa)) Candidato((Candidato)) %% Fluxo Empresa subgraph JornadaEmpresa["Jornada da Empresa"] LoginE[Login/Registro]:::success Dash[Dashboard]:::warning NewJob[Criar Vaga]:::warning Payment[Pagamento]:::error ListJobs[Listar Minhas Vagas]:::error AdminUser[Gerenciar Usuários]:::success end %% Fluxo Candidato subgraph JornadaCandidato["Jornada do Candidato"] Search[Buscar Vagas]:::success Details[Ver Detalhes]:::success Apply[Candidatar-se]:::error end %% Conexões Empresa Empresa --> LoginE LoginE --> Dash Dash -->|Botão 'Publish' não funciona| NewJob NewJob -->|❌ Salva mas não aparece na lista da empresa| ListJobs NewJob -.->|❌ Pula Etapa| Payment LoginE -->|⚠️ PERIGO: Permite virar Admin| AdminUser %% Conexões Candidato Candidato --> Search Search -->|Vê vaga criada pela empresa| Details Details -->|❌ Erro: Upload Obrigatório Falha| Apply %% Funcionalidades Isoladas subgraph OutrosModulos["Outros Módulos"] Tickets[Tickets/Suporte]:::success Chat[Chat Realtime]:::error end 2. Diagnóstico de Problemas Críticos 🚨 Segurança (Nível Crítico) Escalada de Privilégio: Falha de controle de acesso (RBAC). A empresa consegue editar o próprio perfil e se tornar SuperAdmin via API/Frontend (PUT /users), ganhando controle total do sistema. ⛔ Funcional (Bloqueante) Upload de Currículo: O fluxo do candidato é interrompido pois o campo de currículo é obrigatório, mas o serviço de Storage (S3/R2) não está configurado com as chaves de acesso. Listagem de Vagas (Empresa): A empresa cria a vaga, mas ela não aparece na lista "Minhas Vagas" (possível erro de filtro por ID no backend). 🛠️ Próximos Passos Sugeridos HOTFIX: Bloquear alteração de role no update de usuários. INFRA: Configurar credenciais do Bucket S3/R2. FIX: Corrigir query de listagem de vagas no dashboard da empresa.