docs: move diagrama de arquitetura para STATUS_REPORT.md
This commit is contained in:
parent
1693003d9d
commit
1d8fe78697
5 changed files with 1831 additions and 1090 deletions
94
README.md
94
README.md
|
|
@ -344,101 +344,7 @@ Ver [docs/ROADMAP.md](docs/ROADMAP.md) para detalhes.
|
|||
5. Abra um Pull Request
|
||||
|
||||
---
|
||||
## 📊 Status Atual do Sistema (GoHorse Report)
|
||||
|
||||
Diagrama gerado automaticamente com base nos testes de validação do MVP.
|
||||
Legenda:
|
||||
* 🟢 **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<br/>(Uploads)"]:::broken
|
||||
FCM[Firebase FCM]:::broken
|
||||
AW["Appwrite Realtime<br/>(Chat)"]:::broken
|
||||
ST["Stripe<br/>(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<br/>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
|
||||
```
|
||||
|
||||
|
||||
---
|
||||
## 📄 Licença
|
||||
|
||||
Este projeto está sob a licença MIT. Veja [LICENSE](LICENSE) para detalhes.
|
||||
|
|
|
|||
109
STATUS_REPORT.md
Normal file
109
STATUS_REPORT.md
Normal file
|
|
@ -0,0 +1,109 @@
|
|||
# 📊 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<br/>(Uploads)"]:::broken
|
||||
FCM[Firebase FCM]:::broken
|
||||
AW["Appwrite Realtime<br/>(Chat)"]:::broken
|
||||
ST["Stripe<br/>(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<br/>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.
|
||||
6
backend/package-lock.json
generated
Normal file
6
backend/package-lock.json
generated
Normal file
|
|
@ -0,0 +1,6 @@
|
|||
{
|
||||
"name": "backend",
|
||||
"lockfileVersion": 3,
|
||||
"requires": true,
|
||||
"packages": {}
|
||||
}
|
||||
|
|
@ -8,9 +8,30 @@ services:
|
|||
ports:
|
||||
- "3000:3000"
|
||||
environment:
|
||||
- NEXT_PUBLIC_API_URL=https://api-local.gohorsejobs.com
|
||||
- API_URL=https://api-local.gohorsejobs.com
|
||||
- BACKOFFICE_URL=https://b-local.gohorsejobs.com
|
||||
- SEEDER_API_URL=https://s-local.gohorsejobs.com
|
||||
- HOST=0.0.0.0
|
||||
- NEXT_PUBLIC_API_URL=http://localhost:8080
|
||||
- API_URL=http://localhost:8080
|
||||
restart: always
|
||||
|
||||
postgres:
|
||||
image: postgres:15-alpine
|
||||
container_name: gohorsejobs-postgres
|
||||
environment:
|
||||
POSTGRES_USER: postgres
|
||||
POSTGRES_PASSWORD: postgres
|
||||
POSTGRES_DB: gohorsejobs
|
||||
ports:
|
||||
- "5432:5432"
|
||||
volumes:
|
||||
- postgres_data:/var/lib/postgresql/data
|
||||
restart: always
|
||||
|
||||
rabbitmq:
|
||||
image: rabbitmq:3-management-alpine
|
||||
container_name: gohorsejobs-rabbitmq
|
||||
ports:
|
||||
- "5672:5672"
|
||||
- "15672:15672"
|
||||
restart: always
|
||||
|
||||
volumes:
|
||||
postgres_data:
|
||||
2681
frontend/package-lock.json
generated
2681
frontend/package-lock.json
generated
File diff suppressed because it is too large
Load diff
Loading…
Reference in a new issue