From b9961d083bd25fcb6deb9afe82620faefc7f7dc4 Mon Sep 17 00:00:00 2001 From: Tiago Yamamoto Date: Sat, 14 Feb 2026 17:07:11 -0300 Subject: [PATCH] =?UTF-8?q?docs:=20unifica=20documenta=C3=A7=C3=A3o=20e=20?= =?UTF-8?q?atualiza=20README=20principal?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- README.md | 366 ++++++++--------------------------------------- ROADMAP.md | 312 +--------------------------------------- STATUS_REPORT.md | 112 +-------------- docs/ROADMAP.md | 163 +++++---------------- 4 files changed, 104 insertions(+), 849 deletions(-) diff --git a/README.md b/README.md index cc863c8..ca25e61 100644 --- a/README.md +++ b/README.md @@ -1,356 +1,104 @@ -# 🐴 GoHorse Jobss +# 🐴 GoHorse Jobs -[![Go](https://img.shields.io/badge/Go-1.24-00ADD8?style=flat-square&logo=go)](https://golang.org/) -[![Next.js](https://img.shields.io/badge/Next.js-15-black?style=flat-square&logo=next.js)](https://nextjs.org/) -[![NestJS](https://img.shields.io/badge/NestJS-11-E0234E?style=flat-square&logo=nestjs)](https://nestjs.com/) -[![PostgreSQL](https://img.shields.io/badge/PostgreSQL-16-336791?style=flat-square&logo=postgresql)](https://postgresql.org/) -[![Docker](https://img.shields.io/badge/Docker-Ready-2496ED?style=flat-square&logo=docker)](https://docker.com/) +Plataforma de recrutamento com arquitetura separada por serviços: -> 🇧🇷 Plataforma SaaS de recrutamento conectando empresas e profissionais de tecnologia. +- **Frontend**: Next.js (portal de vagas e dashboards). +- **Backend**: API em Go (regras de negócio, autenticação, dados). +- **Backoffice**: NestJS (administração, operações e integrações). +- **Seeder API**: utilitários para carga de dados de desenvolvimento. --- -## 💼 O Negócio +## ✅ Estado atual da documentação -### Proposta de Valor +Este repositório tinha documentação duplicada e com partes desatualizadas. A partir desta revisão: -**GoHorse Jobs** é uma plataforma completa de recrutamento que conecta empresas a candidatos qualificados, oferecendo: - -| Para Empresas | Para Candidatos | -|---------------|-----------------| -| ✅ Publicar vagas ilimitadas | ✅ Buscar vagas com filtros avançados | -| ✅ Gerenciar candidaturas | ✅ Candidatar-se em 1 clique | -| ✅ Chat em tempo real | ✅ Perfil profissional completo | -| ✅ Painel de analytics | ✅ Notificações push | -| ✅ Múltiplos recrutadores | ✅ Favoritar vagas | - -### Modelos de Monetização - -| Plano | Features | Preço | -|-------|----------|-------| -| **Basic** | 3 vagas/mês, 1 usuário | Grátis | -| **Pro** | 20 vagas/mês, 5 usuários | R$ 199/mês | -| **Enterprise** | Ilimitado, SSO, API | Sob consulta | +- a **fonte canônica** de documentação geral passa a ser a pasta [`docs/`](docs/); +- arquivos antigos na raiz (ex.: `ROADMAP.md`, `STATUS_REPORT.md`) foram reduzidos para ponteiros; +- o roadmap foi simplificado para refletir prioridades reais do produto (sem backlog histórico de iniciativas fora de escopo atual). --- -## 🔄 Fluxos de Negócio +## 📚 Onde encontrar cada assunto -### 1. Empresa Publica Vaga +### Documentação central (canônica) -```mermaid -flowchart LR - A[Empresa] --> B[Registro/Login] - B --> C[Criar Vaga] - C --> D[Pagamento] - D --> E[Vaga Publicada] - E --> F[Candidatos Aplicam] - F --> G[Triagem] - G --> H[Contratação] -``` +- [docs/API.md](docs/API.md) — endpoints, contratos e exemplos. +- [docs/API_SECURITY.md](docs/API_SECURITY.md) — autenticação, autorização e segurança. +- [docs/DATABASE.md](docs/DATABASE.md) — estrutura e decisões de dados. +- [docs/DEVOPS.md](docs/DEVOPS.md) — execução local, deploy e operação. +- [docs/ROADMAP.md](docs/ROADMAP.md) — direção de produto e engenharia. +- [docs/TASKS.md](docs/TASKS.md) — tarefas e acompanhamento de execução. -### 2. Candidato Busca Emprego +### Documentação por componente -```mermaid -flowchart LR - A[Candidato] --> B[Buscar Vagas] - B --> C[Filtrar] - C --> D[Ver Detalhes] - D --> E[Candidatar] - E --> F[Aguardar Resposta] - F --> G[Chat com Recrutador] - G --> H[Contratação] -``` - -### 3. Registro Rápido + Vaga (Novo!) - -```mermaid -flowchart LR - A[/post-job/] --> B[Dados da Empresa] - B --> C[Dados da Vaga] - C --> D[Confirmação] - D --> E[Empresa + Vaga Criados] -``` +- [backend/BACKEND.md](backend/BACKEND.md) +- [frontend/FRONTEND.md](frontend/FRONTEND.md) +- [backoffice/BACKOFFICE.md](backoffice/BACKOFFICE.md) +- [seeder-api/SEEDER-API.md](seeder-api/SEEDER-API.md) --- -## 🚀 Roadmap B2C (Marketplace Transformation) - -Estamos transformando o GoHorse Jobs de um Job Board tradicional para um **Marketplace Completo** de Serviços e Produtos. - -| Fase | Foco | Features Principais | Status | -|------|------|---------------------|--------| -| **1** | **Monetização** | Stripe Checkout, Boost de Vagas, Assinaturas | 🟡 Em Progresso | -| **2** | **Serviços (Gigs)** | Marketplace de Freelancers, Stripe Connect, Escrow | 🔴 Q1 2025 | -| **3** | **Loja (Store)** | Venda de Equipamentos, Merch, Logística | 🔴 Q2 2025 | -| **4** | **AI & Matching** | Video Interviews, Triagem Automática, Cover Letter AI | 🔴 Q3 2025 | - -> Ver o [Roadmap Detalhado](docs/ROADMAP.md) para o Gap Analysis completo. - ---- - -## 📚 Documentação - -### Documentação Principal - -| Documento | Descrição | -|-----------|-----------| -| 📖 [docs/API.md](docs/API.md) | Referência completa da API | -| 🔐 [docs/API_SECURITY.md](docs/API_SECURITY.md) | Autenticação e RBAC | -| 🗄️ [docs/DATABASE.md](docs/DATABASE.md) | Schema do banco de dados | -| 🚀 [docs/DEVOPS.md](docs/DEVOPS.md) | CI/CD, Docker, Kubernetes | -| 🗺️ [docs/ROADMAP.md](docs/ROADMAP.md) | Status e progresso | -| 📋 [docs/TASKS.md](docs/TASKS.md) | Tarefas detalhadas | - -### Documentação por Componente - -| Componente | Documentação | Tech Stack | -|------------|--------------|------------| -| **Backend** | [backend/BACKEND.md](backend/BACKEND.md) | Go, Clean Architecture, DDD | -| **Frontend** | [frontend/FRONTEND.md](frontend/FRONTEND.md) | Next.js 15, Tailwind, shadcn | -| **Backoffice** | [backoffice/BACKOFFICE.md](backoffice/BACKOFFICE.md) | NestJS, Fastify, Stripe | -| **Seeder** | [seeder-api/README.md](seeder-api/README.md) | Node.js, PostgreSQL | - ---- - -## 🏗️ Arquitetura - -```mermaid -graph TB - subgraph "Frontend (Appwrite)" - FE[Next.js 15] - end - - subgraph "Backend (Kubernetes)" - API[Go API] - BO[NestJS Backoffice] - end - - subgraph "Database" - DB[(PostgreSQL 16)] - end - - subgraph "External Services" - MQ[LavinMQ] - S3[Cloudflare R2] - FCM[Firebase FCM] - AW[Appwrite Realtime] - ST[Stripe] - end - - FE --> API - FE --> AW - API --> DB - API --> MQ - API --> S3 - BO --> DB - BO --> MQ - BO --> FCM - BO --> ST -``` - -### Componentes - -| Componente | Responsabilidade | Porta | -|------------|------------------|-------| -| **Frontend** | UI, SSR, Auth | 3000 | -| **Backend** | API REST, Business Logic | 8521 | -| **Backoffice** | Stripe, Email, FCM | 3001 | -| **PostgreSQL** | Persistência | 5432 | -| **LavinMQ** | Email Queue | 5672 | - ---- - -## 🛠️ Tech Stack - -### Backend (Go) -| Tecnologia | Uso | -|------------|-----| -| Go 1.24 | API REST | -| GORM | ORM | -| JWT v5 | Autenticação | -| Swagger | Documentação | -| BCrypt | Password hashing | - -### Frontend (Next.js) -| Tecnologia | Uso | -|------------|-----| -| Next.js 15 | Framework | -| Tailwind 4 | CSS | -| shadcn/ui | Componentes | -| Framer Motion | Animações | -| Appwrite | Realtime | - -### Backoffice (NestJS) -| Tecnologia | Uso | -|------------|-----| -| NestJS 11 | Framework | -| Stripe | Pagamentos | -| Nodemailer | Emails | -| Firebase Admin | Push | - ---- - -## 🚀 Quick Start +## 🚀 Quick start ### Pré-requisitos -- Docker v24+ ou Go 1.24+ -- Node.js v20+ -- PostgreSQL v16+ +- Go 1.24+ +- Node.js 20+ +- PostgreSQL 16+ -### Instalação +### Subindo localmente ```bash -# Clone +# 1) clone git clone https://github.com/rede5/gohorsejobs.git cd gohorsejobs -# Configure +# 2) variáveis de ambiente (ajuste os valores) cp backend/.env.example backend/.env cp frontend/.env.example frontend/.env -# Backend -cd backend && go run ./cmd/api +# 3) backend +cd backend +go run ./cmd/api -# Frontend (outro terminal) -cd frontend && npm install && npm run dev +# 4) frontend (novo terminal) +cd ../frontend +npm install +npm run dev -# Seeder (opcional) -cd seeder-api && npm install && npm run seed +# 5) seeder (opcional) +cd ../seeder-api +npm install +npm run seed ``` -### Usando start.sh +### Script auxiliar ```bash ./start.sh -# Escolha uma opção: -# 1. Run Backend -# 2. Run Frontend -# 3. Run Seeder -# 4. Run Migrations -# 5. Reset + Seed ``` --- -## 🔑 Credenciais de Teste +## 🧱 Estrutura resumida -> [!NOTE] -> O SuperAdmin foi atualizado via migration `032_update_superadmin_lol.sql`. -> No primeiro login será necessário trocar a senha (status `force_change_password`). - -| Tipo | Login | Email | Senha | -|------|-------|-------|-------| -| **SuperAdmin** | `lol` | `lol@gohorsejobs.com` | `Admin@2025!` | -| **Company Admin** | `takeshi_yamamoto` | - | `Takeshi@2025` | -| **Recruiter** | `maria_santos` | - | `User@2025` | -| **Candidate** | `paulo_santos` | - | `User@2025` | - -> [!WARNING] -> Se o login retornar 401, verifique se a migration `032_update_superadmin_lol.sql` foi executada no banco. - ---- - -## 🔧 Environment Variables - -### Backend - -```env -DATABASE_URL=postgres://user:pass@host:5432/db -JWT_SECRET=your-secret-key-min-32-chars -PASSWORD_PEPPER=your-pepper -CORS_ORIGINS=https://frontend.com -``` - -### Frontend - -```env -NEXT_PUBLIC_API_URL=https://api.gohorsejobs.com -NEXT_PUBLIC_APPWRITE_ENDPOINT=https://cloud.appwrite.io/v1 -NEXT_PUBLIC_APPWRITE_PROJECT_ID=your-project -``` - -### Backoffice - -```env -DATABASE_URL=postgres://user:pass@host:5432/db -STRIPE_SECRET_KEY=sk_test_xxx -AMQP_URL=amqp://user:pass@host:5672 -``` - ---- - -## 📂 Estrutura - -``` +```text gohorsejobs/ -├── backend/ # Go API (Clean Architecture) -│ ├── cmd/api/ # Entrypoint -│ ├── internal/ # Business logic -│ ├── migrations/ # 30 SQL migrations -│ └── BACKEND.md # Documentação -│ -├── frontend/ # Next.js 15 App -│ ├── src/app/ # 35 pages -│ ├── src/components/ # 44 components -│ └── FRONTEND.md # Documentação -│ -├── backoffice/ # NestJS API -│ ├── src/ # 7 modules -│ └── BACKOFFICE.md # Documentação -│ -├── seeder-api/ # Node.js Seeder -│ └── README.md # Documentação -│ -├── docs/ # Documentação central -│ ├── API.md -│ ├── API_SECURITY.md -│ ├── DATABASE.md -│ ├── DEVOPS.md -│ ├── ROADMAP.md -│ └── TASKS.md -│ -├── k8s/ # Kubernetes manifests -│ ├── dev/ -│ ├── hml/ -│ └── prd/ -│ -└── start.sh # Script de inicialização +├── backend/ +├── frontend/ +├── backoffice/ +├── seeder-api/ +├── docs/ +├── k8s/ +└── start.sh ``` --- -## 📊 Status do Projeto +## 🤝 Contribuição -| Área | Progresso | Status | -|------|-----------|--------| -| Backend API | 95% | 🟢 Production Ready | -| Frontend | 85% | 🟢 Funcional | -| Backoffice | 80% | 🟢 Funcional | -| Seeder | 100% | 🟢 Completo | -| Documentação | 95% | 🟢 Atualizada | - -Ver [docs/ROADMAP.md](docs/ROADMAP.md) para detalhes. - ---- - -## 🤝 Contribuindo - -1. Fork o projeto -2. Crie sua branch (`git checkout -b feature/AmazingFeature`) -3. Commit suas mudanças (`git commit -m 'feat: add amazing feature'`) -4. Push para a branch (`git push origin feature/AmazingFeature`) -5. Abra um Pull Request - ---- - -## 📄 Licença - -Este projeto está sob a licença MIT. Veja [LICENSE](LICENSE) para detalhes. - ---- - -

- Desenvolvido com ❤️ pela equipe GoHorse -

+1. Crie uma branch de feature/fix. +2. Faça commits pequenos e objetivos. +3. Atualize documentação relevante em `docs/` quando necessário. +4. Abra PR com contexto, impacto e evidências de teste. diff --git a/ROADMAP.md b/ROADMAP.md index dbe6f91..d76ac16 100644 --- a/ROADMAP.md +++ b/ROADMAP.md @@ -1,311 +1,7 @@ -# 🗺️ GoHorse Jobs - Roadmap Completo +# Roadmap (movido) -> **Data**: 27/12/2024 -> **Status**: Pré-lançamento -> **Objetivo**: Documentar funcionalidades existentes, gaps e próximos passos +Este arquivo foi mantido apenas por compatibilidade de links antigos. ---- +A versão oficial e atualizada do roadmap está em: -## 📊 Status Atual do Projeto - -### ✅ Funcionalidades Implementadas - -#### Backend (Go API) -| Feature | Status | Endpoint | -|---------|--------|----------| -| Login/Autenticação | ✅ | `POST /api/v1/auth/login` | -| CRUD de Empresas | ✅ | `/api/v1/companies` | -| CRUD de Usuários | ✅ | `/api/v1/users` | -| CRUD de Vagas | ✅ | `/api/v1/jobs` | -| Candidaturas | ✅ | `/api/v1/applications` | -| Storage S3 | ✅ | `/api/v1/storage/*` | -| JWT com HttpOnly Cookies | ✅ | - | -| Rate Limiting | ✅ | 100 req/min | -| CORS configurado | ✅ | - | -| Swagger/OpenAPI | ✅ | `/docs` | - -#### Frontend (Next.js 15) -| Feature | Status | Path | -|---------|--------|------| -| Homepage | ✅ | `/` | -| Login | ✅ | `/login` | -| Cadastro | ✅ | `/cadastro` | -| Listagem de Vagas | ✅ | `/vagas` | -| Detalhe da Vaga | ✅ | `/vagas/[id]` | -| Dashboard Admin | ✅ | `/dashboard` | -| Gestão de Usuários | ✅ | `/dashboard/users` | -| Gestão de Empresas | ✅ | `/dashboard/companies` | -| Gestão de Vagas | ✅ | `/dashboard/jobs` | -| Minhas Candidaturas | ✅ | `/dashboard/my-jobs` | -| Mensagens | ✅ | `/dashboard/messages` | -| Upload de Imagens | ✅ | Componente S3 | - -#### Seeders (Node.js) -- ✅ Users (com roles diferentes) -- ✅ Companies (com dados completos) -- ✅ Jobs (vagas de exemplo) -- ✅ Applications -- ✅ Regions/Cities - -#### DevOps -- ✅ Dockerfiles para todos os serviços -- ✅ Pipeline CI/CD (Drone) -- ✅ Manifests Kubernetes -- ✅ Documentação básica - ---- - -## 🚨 Gaps Críticos para Lançamento (P0) - -> [!CAUTION] -> Itens que **DEVEM** estar funcionando antes de ir ao ar - -### 1. **Fluxo de Candidatura Completo** -``` -[x] Frontend: Botão "Candidatar-se" na página de vagas -[x] Frontend: Modal/Form para anexar currículo -[x] Backend: Upload de currículo (PDF) para S3 -[ ] Backend: Notificação por email para empresa -[x] Frontend: Tela "Minhas Candidaturas" funcional -``` - -### 2. **Gestão de Currículo/Perfil do Candidato** -``` -[x] Frontend: Página de edição de perfil completo -[x] Backend: Endpoint PUT /api/v1/users/me -[x] Backend: Armazenar skills, experiências, educação -[x] Frontend: Upload de foto de perfil -``` - -### 3. **Dashboard da Empresa Funcional** -``` -[x] Listar candidatos por vaga -[x] Alterar status da candidatura (aprovado/rejeitado/em análise) -[x] Visualizar currículo do candidato -[ ] Exportar lista de candidatos -``` - -### 4. **Recuperação de Senha** -``` -[x] Frontend: Tela "Esqueci minha senha" -[x] Backend: Endpoint POST /api/v1/auth/forgot-password -[x] Backend: Integração com serviço de email (Mock) -[x] Backend: Endpoint POST /api/v1/auth/reset-password -``` - -### 5. **Validação de Dados** -``` -[x] Backend: Validação de email único -[x] Backend: Validação de documento global (CNPJ/CPF/EIN) -[x] Frontend: Feedback de erros amigável -[x] Backend: Sanitização de inputs (XSS prevention) -[x] Frontend: Utilitário sanitize.ts -``` - ---- - -## ⚠️ Gaps Importantes (P1) - -> [!WARNING] -> Itens importantes para experiência do usuário após lançamento - -### 6. **Sistema de Notificações** -``` -[x] Frontend: NotificationContext e NotificationDropdown -[x] Frontend: Badge de notificações no header -[x] Frontend: Lista de notificações (mock data) -[x] Backend: Tabela de notificações (migration 017) -[x] Backend: FCM (Firebase Cloud Messaging) integration -[x] Backend: Envio de email transacional (Mock) -[ ] Backend: Notificação por email para empresa (integração real) -``` - -### 7. **Busca e Filtros Avançados** -``` -[x] Backend: Full-text search em vagas (PostgreSQL plainto_tsquery) -[x] Backend: Filtros por localização, salário, tipo (workMode, employmentType) -[x] Backend: Ordenação por data/salary/relevance -[x] Backend: Paginação otimizada (max 100 items) -[x] Frontend: UI de filtros avançados -``` - -### 8. **Painel Administrativo (Backoffice)** -``` -[x] Módulos AdminModule, PlansModule, StripeModule -[x] TicketsModule com proxy para backend -[x] ActivityLogsModule com proxy para backend -[x] Dockerfile otimizado (multi-stage, non-root) -[x] Health endpoint -[x] Autenticação via Guard -[x] CRUD de usuários via backoffice (UI) -[x] Relatórios de uso (mock stats) -[x] Logs de atividade (integrado ao backend) -[x] Gestão de tickets/suporte (backend + backoffice) -``` - -### 9. **Métricas e Analytics** -``` -[x] Contagem de visualizações por vaga -[x] Taxa de conversão (visualização → candidatura) -[x] Dashboard de métricas para empresas (API pronta) -[x] Integração com Google Analytics -``` - -### 10. **Integração Social** -``` -[ ] Login com Google -[ ] Login com LinkedIn -[ ] Compartilhar vaga nas redes -[ ] Importar perfil do LinkedIn -``` - ---- - -## 📈 Melhorias Futuras (P2) - -> [!TIP] -> Features que aumentam competitividade após MVP estável - -### 11. **Matching Inteligente** -``` -[ ] Algoritmo de match candidato-vaga -[ ] Recomendação de vagas personalizadas -[ ] Score de compatibilidade -[ ] Alertas de vagas similares -``` - -### 12. **Pagamentos e Monetização** -``` -[ ] Planos para empresas (free/pro/enterprise) -[x] Destaque de vagas (featured) -[x] Pagamento via Stripe/Pix (Checkout Backend Implemented) -[~] Gestão de assinaturas (Fundação Backend Pronta) -``` - -### 13. **Testes e Avaliações** -``` -[ ] Testes técnicos online -[ ] Sistema de avaliação de candidatos -[ ] Feedback pós-entrevista -[ ] Notas compartilhadas entre recrutadores -``` - -### 14. **Internacionalização** -``` -[x] i18n frontend (pt-BR, en, es) -[ ] Vagas internacionais -[ ] Conversão de moeda -[ ] Timezones para entrevistas -``` - -### 15. **API Pública** -``` -[ ] Documentação para parceiros -[ ] Rate limiting por API key -[ ] Webhooks para integração -[ ] SDK para desenvolvedores -``` - ---- - -## 🛠️ Débitos Técnicos - -> [!NOTE] -> Itens de qualidade de código e infraestrutura - -### Testes -``` -[ ] Aumentar cobertura backend para 80% -[ ] Testes E2E com Playwright/Cypress -[ ] Testes de integração API -[ ] Testes de carga com k6 -``` - -### Performance -``` -[ ] Cache Redis para sessões -[ ] CDN para assets estáticos -[ ] Otimização de queries (N+1) -[ ] Lazy loading de imagens -``` - -### Segurança -``` -[ ] Audit de dependências -[ ] Penetration testing -[ ] Backup automatizado do DB -[ ] Logs de segurança (SIEM) -[ ] Centralizar gestão do Stripe (Backend vs Backoffice) -[ ] Verificar assinatura de Webhooks Stripe -``` - -### Observabilidade -``` -[ ] Métricas com Prometheus -[ ] Dashboards Grafana -[ ] Distributed tracing -[ ] Alertas (PagerDuty/OpsGenie) -``` - ---- - -## 📅 Cronograma Sugerido - -### Semana 1 (Lançamento + Estabilização) -- [ ] Deploy para produção -- [ ] Monitorar erros e hotfixes -- [ ] Completar fluxo de candidatura básico -- [ ] Ajustar feedback de usuários - -### Semana 2-3 -- [ ] Recuperação de senha -- [ ] Dashboard empresa funcional -- [ ] Sistema de notificações básico -- [ ] Busca e filtros - -### Semana 4-6 -- [ ] Backoffice completo -- [ ] Login social (Google) -- [ ] Métricas básicas -- [ ] Melhorias de UX - -### Mês 2+ -- [ ] Monetização -- [ ] Matching inteligente -- [ ] API pública -- [ ] Expansão de features - ---- - -## 🎯 Métricas de Sucesso para Lançamento - -| Métrica | Meta | -|---------|------| -| Uptime | > 99% | -| Tempo de resposta API | < 200ms | -| Erros 5xx | < 0.1% | -| Vagas cadastradas | > 50 | -| Candidaturas | > 100 | -| Empresas ativas | > 10 | - ---- - -## 💡 Notas Finais - -O projeto tem uma base sólida com: -- Arquitetura limpa (Clean Architecture) -- Stack moderna (Go + Next.js 15) -- Multi-tenancy implementado -- CI/CD configurado - -**Para o lançamento hoje**, foque em: -1. Garantir que login/cadastro funcionam -2. Vagas são listadas corretamente -3. Candidatura básica funciona -4. Comunicar limitações aos usuários beta - -**Próximo passo imediato**: Testar o fluxo completo candidato → vaga → candidatura manualmente antes de ir ao ar. - ---- - -*Documento gerado em 27/12/2024 - Atualizar conforme progresso* +- [`docs/ROADMAP.md`](docs/ROADMAP.md) diff --git a/STATUS_REPORT.md b/STATUS_REPORT.md index 342a372..5338a45 100644 --- a/STATUS_REPORT.md +++ b/STATUS_REPORT.md @@ -1,110 +1,8 @@ -# 📊 Relatório Técnico & Status (GoHorseJobs) +# Status Report (movido) -## 1. Visão Geral da Arquitetura (Real vs. Planejado) +Este arquivo foi reduzido para evitar divergência de informação. -Este diagrama reflete o estado atual do sistema em ambiente de desenvolvimento (`localhost`), destacando os pontos funcionais e as integrações pendentes. +Para status e planejamento atuais, consulte: -* 🟢 **Verde:** Funcionando/Operacional. -* 🟡 **Amarelo:** Parcial/Bugado. -* 🔴 **Vermelho:** Quebrado/Faltando Config. -* 💀 **Vermelho Escuro:** Falha Crítica de Segurança. - -```mermaid -graph TD - %% --- ESTILOS DE ALTO CONTRASTE --- - %% Adicionei 'color:#000' (Preto) e aumentei a borda para 3px - classDef working fill:#dcfce7,stroke:#16a34a,stroke-width:3px,color:#000; - classDef partial fill:#fef9c3,stroke:#ca8a04,stroke-width:3px,stroke-dasharray:5 5,color:#000; - classDef broken fill:#fee2e2,stroke:#dc2626,stroke-width:3px,stroke-dasharray:5 5,color:#000; - classDef critical fill:#991b1b,stroke:#fca5a5,stroke-width:4px,color:#fff; - classDef success fill:#dcfce7,stroke:#16a34a,stroke-width:3px,color:#000; - classDef warning fill:#fef9c3,stroke:#ca8a04,stroke-width:3px,color:#000; - classDef error fill:#fee2e2,stroke:#dc2626,stroke-width:3px,color:#000; - - 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| 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. \ No newline at end of file +- [`docs/ROADMAP.md`](docs/ROADMAP.md) +- [`docs/TASKS.md`](docs/TASKS.md) diff --git a/docs/ROADMAP.md b/docs/ROADMAP.md index 9072f4e..f2f9800 100644 --- a/docs/ROADMAP.md +++ b/docs/ROADMAP.md @@ -1,146 +1,59 @@ -# 🗺️ GoHorse Jobs & Marketplace - "The Intense" Roadmap (10X) +# 🗺️ Roadmap GoHorse Jobs (Atualizado) -**O Roadmap Definitivo.** -Este documento não é apenas uma lista de tarefas; é o **DNA estratégico e técnico** para transformar o GoHorse Jobs na plataforma dominante de empregos e serviços digitais no Brasil (e futuramente LATAM/Global). - -> **Meta:** Deixar de ser um "Job Board" e tornar-se um **Ecossistema de Carreira**. -> **Filosofia:** "Extreme GoHorse" na velocidade, "Solid/Clean Arch" na fundação. +> Documento de direção de produto e engenharia. +> +> **Critério:** manter apenas itens que fazem sentido para o escopo atual da plataforma de recrutamento. --- -## 🏗️ Pilar 1: Fundação & Arquitetura (Já Consolidado) -*O alicerce que permite escalar sem quebrar.* +## 1) Prioridades em andamento -### 1.1 Backend & Core (Go) -- [x] **Clean Arch + DDD:** Separação estrita entre Handlers, Services, UseCases e Repositories. -- [x] **UUID v7:** Migração completa de INT para UUIDv7 (time-sorted) em todas as tabelas críticas (`users`, `jobs`, `applications`). - - *Por que?* Evita fragmentação de índices e permite sharding futuro sem conflitos. -- [x] **Testes de Integração:** Setup de `sqlmock` e `testify` para cobertura crítica de Handlers e Services. -- [x] **Logs Estruturados:** `slog` com rastreamento de RequestID para observabilidade total. +- **Confiabilidade do core de vagas e candidaturas** + - estabilidade de fluxo de candidatura; + - redução de falhas em integrações externas; + - melhoria de monitoramento e logs operacionais. -### 1.2 Frontend & UX (Next.js) -- [x] **Design System:** Componentes ShadCN/UI padronizados e responsivos. -- [x] **Auth Híbrida:** Suporte a JWT Bearer e Cookies para segurança máxima em clientes web e mobile. -- [x] **Dashboards Dedicados:** Áreas distintas e otimizadas para Candidatos (foco: aplicar rápido) e Recrutadores (foco: triagem rápida). +- **Segurança e governança** + - endurecimento de regras de autorização (RBAC); + - revisão de endpoints administrativos; + - trilha de auditoria para ações sensíveis. + +- **Operação e deploy** + - padronização de ambientes (dev/hml/prd); + - melhoria de documentação de deploy e rollback; + - limpeza de dívida técnica em scripts operacionais. --- -## 💎 Pilar 2: Marketplace B2C & Monetização (Q1 2025) -*Transformando usuários gratuitos em receita recorrente.* +## 2) Próximas entregas (curto prazo) -### 2.1 Engine de Pagamentos (Stripe Integration) -**Objetivo:** Permitir fluxo financeiro fluido para B2B e B2C. +- **Experiência de empresa/recrutador** + - melhorar gestão de vagas e candidatos no dashboard; + - ajustes de filtros e listagens; + - melhorias de usabilidade nas ações mais frequentes. -- [ ] **Checkout de Vagas (B2B):** - - Empresas pagam para destacar vagas ("Featured") ou furar a fila de moderação. - - **Regra de Negócio:** Vaga paga entra como `status: published` automaticamente (após check de fraude). Vaga grátis entra como `review`. - - **Técnico:** Webhook Stripe (`checkout.session.completed`) atualiza tabela `job_payments` e dispara evento de publicação. -- [ ] **Assinaturas Recorrentes (SaaS):** - - Planos "Pro" para Recrutadores (Acesso ao Banco de Talentos, Filtros Avançados). - - Planos "Prime" para Candidatos (Destaque na busca, feedback detalhado de rejeição). -- [ ] **Marketplace de Serviços (Stripe Connect):** - - Candidatos vendem "Mentorias" ou "Revisão de CV". - - **Split de Pagamento:** Plataforma retém X% (ex: 15%), o resto vai para o prestador. - - **Técnico:** Uso de Stripe Connect Express para onboarding simplificado de vendedores (KYC automático). +- **Experiência do candidato** + - simplificação do processo de candidatura; + - melhoria de feedback de status; + - refinamento de notificações. -### 2.2 Gamificação & Engajamento -**Objetivo:** Viciar o usuário na plataforma (Retenção). - -- [ ] **Sistema de Níveis (XP):** - - Ações geram XP: Completar perfil (+50XP), Aplicar (+10XP), Receber entrevista (+100XP). - - **Benefício:** Níveis altos ganham destaque visual ou acesso antecipado a vagas. -- [ ] **Badges Conquistáveis:** "Verificado", "Top Voice", "Dev Sênior", "Early Adopter". -- [ ] **Daily Streak:** Incentivo para login diário (ex: manter a visibilidade do perfil no topo). +- **Qualidade de código** + - aumento de cobertura de testes em pontos críticos; + - redução de inconsistências entre documentação e implementação; + - revisão de endpoints legados. --- -## 📦 Pilar 3: E-commerce & Logística (Q2 2025) -*Expansão física: Venda de Merch e Equipamentos para Home Office.* +## 3) Backlog estratégico (médio prazo) -### 3.1 Loja Oficial (Merch) -- [ ] **Catálogo de Produtos:** Camisetas, Canecas, Adesivos "GoHorse". -- [ ] **Integração de Estoque:** Controle simples de estoque (`product_variants`, `inventory_logs`). -- [ ] **Checkout Unificado:** O mesmo carrinho serve para Vagas Premium e Camisetas. - -### 3.2 Logística & Frete (Brasil) -**Foco:** Adaptação total ao mercado brasileiro. - -- [ ] **Cálculo de Frete (Correios/Melhor Envio):** - - Integração via API para cálculo em tempo real (SEDEX, PAC) baseado no CEP do usuário. - - **Fallback:** Tabela de contingência para frete fixo caso API caia. -- [ ] **Rastreamento:** - - Webhook de atualização de status de entrega (`código de rastreio` salvo no pedido). - - Notificação via WhatsApp/Email quando sair para entrega. -- [ ] **Regras Fiscais:** Integração básica para emissão de NF-e (via Bling ou eNotas) no momento da confirmação do pagamento. +- funcionalidades avançadas de matching e recomendação; +- expansão de integrações para aquisição e retenção de usuários; +- melhorias incrementais de monetização. --- -## 🧠 Pilar 4: Inteligência & Automação (Q3 2025 - "GoHorse AI") -*Onde a mágica acontece. O diferencial competitivo.* +## 4) O que foi removido deste roadmap -### 4.1 Matching Semântico (Vector Search) -- [ ] **Embeddings:** Gerar vetores (OpenAI ou Local LLM) para: - - Descrições de Vagas. - - Currículos/Bios de Candidatos. -- [ ] **Busca Vetorial (pgvector):** - - Substituir o `LIKE` ou `Fuzzy` por busca semântica (`cosine similarity`). - - **Resultado:** Busca por "Frontend Ninja" retorna perfis com "React", "Vue", "Angular" mesmo sem a palavra exata. +Para evitar ruído, este documento **não mantém mais iniciativas históricas fora do foco atual**, incluindo trilhas antigas de e-commerce/logística (ex.: frete/correios) e planejamentos especulativos sem execução ativa. -### 4.2 Assistente de Carreira (LLM Agent) -- [ ] **Review de Currículo Automático:** - - AI analisa o PDF e sugere melhorias (ex: "Use verbos de ação", "Quantifique resultados"). -- [ ] **Gerador de Cover Letter:** - - Bot lê a vaga + perfil do usuário e gera uma carta personalizada em segundos. -- [ ] **Pre-Screening Bot:** - - Chatbot no WhatsApp/Site que faz perguntas de triagem ("Você tem 3 anos de Exp?", "Inglês Fluente?") e classifica o candidato para o RH. - ---- - -## 📱 Pilar 5: Mobile First & Notificações (Ongoing) -*Estar onde o usuário está: No celular.* - -- [ ] **PWA (Progressive Web App):** - - Service Workers para cache offline agressivo (funcionar no metrô/ônibus). - - "Add to Home Screen" com ícone nativo. -- [ ] **Notificações Push (FCM):** - - Alerta de vaga nova (match). - - Alerta de "Visto por um recrutador". - - Alerta de status de entrega de produto. -- [ ] **Integração WhatsApp (Twilio/ZAP):** - - Candidato recebe link de entrevista direto no Wpp. - - Recrutador recebe aviso de "Candidato Perfeito" no Wpp. - ---- - -## 🛡️ Pilar 6: Segurança & Compliance (LGPD) -*Protegendo o ativo mais valioso: Dados.* - -- [ ] **Anonimização de Dados:** Opção para candidato "esconder" nome/contato até o match. -- [ ] **Auditoria Completa (Audit Trail):** - - Quem acessou o currículo de quem? (Já iniciado em `activity_logs`). - - Registro imutável de alterações salariais ou contratuais. -- [ ] **Pre-signed URLs:** Curriculos no S3/R2 com links temporários (TTL 15min) para evitar scraping. -- [ ] **Anti-Fraud:** Rate-limiting agressivo em endpoints de login e cadastro. Detecção de emails temporários. - ---- - -## 📊 Gap Analysis Técnico (O que precisamos resolver JÁ) - -| Área | Gap | Solução Técnica Proposta | Complexidade | -|------|-----|--------------------------|--------------| -| **Busca** | Postgres `Semântico` | Implementar `pgvector` ou ElasticSearch. A busca atual não escala. | Alta | -| **Email** | SMTP Síncrono | Migrar para Fila (Redis/RabbitMQ) + Worker assíncrono para envio de emails em massa. | Média | -| **Cache** | Inexistente | Implementar Redis para cache de `GET /jobs` e Sessões de Usuário. | Média | -| **Img** | Upload Direto | Implementar Image Processing (Sharp/Go) para resize/compression antes do S3. | Baixa | -| **Logs** | Arquivo Local | Centralizar logs (Loki/Elastic) para visualização no Grafana. | Alta | - ---- - -## 📅 Cronograma Estimado (Dev) - -- **Semana 1-2:** Fixar Testes Backend, Estabilizar Deploy, Finalizar C4 Model. -- **Semana 3-4:** Implementar Stripe Checkout (Pagamento Básico). -- **Semana 5-6:** Módulo de Logística (Básico - Frete Correios). -- **Semana 7-8:** Início do Módulo AI (Matching Vetorial). - -> *"O futuro pertence a quem deploya na sexta-feira."* 🚀 +Histórico detalhado, quando necessário, deve ser consultado por commit/PR anterior.