docs: unifica documentação e atualiza README principal
This commit is contained in:
parent
ae475e41a9
commit
b9961d083b
4 changed files with 104 additions and 849 deletions
366
README.md
366
README.md
|
|
@ -1,356 +1,104 @@
|
||||||
# 🐴 GoHorse Jobss
|
# 🐴 GoHorse Jobs
|
||||||
|
|
||||||
[](https://golang.org/)
|
Plataforma de recrutamento com arquitetura separada por serviços:
|
||||||
[](https://nextjs.org/)
|
|
||||||
[](https://nestjs.com/)
|
|
||||||
[](https://postgresql.org/)
|
|
||||||
[](https://docker.com/)
|
|
||||||
|
|
||||||
> 🇧🇷 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:
|
- 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;
|
||||||
| Para Empresas | Para Candidatos |
|
- o roadmap foi simplificado para refletir prioridades reais do produto (sem backlog histórico de iniciativas fora de escopo atual).
|
||||||
|---------------|-----------------|
|
|
||||||
| ✅ 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 |
|
|
||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
## 🔄 Fluxos de Negócio
|
## 📚 Onde encontrar cada assunto
|
||||||
|
|
||||||
### 1. Empresa Publica Vaga
|
### Documentação central (canônica)
|
||||||
|
|
||||||
```mermaid
|
- [docs/API.md](docs/API.md) — endpoints, contratos e exemplos.
|
||||||
flowchart LR
|
- [docs/API_SECURITY.md](docs/API_SECURITY.md) — autenticação, autorização e segurança.
|
||||||
A[Empresa] --> B[Registro/Login]
|
- [docs/DATABASE.md](docs/DATABASE.md) — estrutura e decisões de dados.
|
||||||
B --> C[Criar Vaga]
|
- [docs/DEVOPS.md](docs/DEVOPS.md) — execução local, deploy e operação.
|
||||||
C --> D[Pagamento]
|
- [docs/ROADMAP.md](docs/ROADMAP.md) — direção de produto e engenharia.
|
||||||
D --> E[Vaga Publicada]
|
- [docs/TASKS.md](docs/TASKS.md) — tarefas e acompanhamento de execução.
|
||||||
E --> F[Candidatos Aplicam]
|
|
||||||
F --> G[Triagem]
|
|
||||||
G --> H[Contratação]
|
|
||||||
```
|
|
||||||
|
|
||||||
### 2. Candidato Busca Emprego
|
### Documentação por componente
|
||||||
|
|
||||||
```mermaid
|
- [backend/BACKEND.md](backend/BACKEND.md)
|
||||||
flowchart LR
|
- [frontend/FRONTEND.md](frontend/FRONTEND.md)
|
||||||
A[Candidato] --> B[Buscar Vagas]
|
- [backoffice/BACKOFFICE.md](backoffice/BACKOFFICE.md)
|
||||||
B --> C[Filtrar]
|
- [seeder-api/SEEDER-API.md](seeder-api/SEEDER-API.md)
|
||||||
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]
|
|
||||||
```
|
|
||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
## 🚀 Roadmap B2C (Marketplace Transformation)
|
## 🚀 Quick start
|
||||||
|
|
||||||
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
|
|
||||||
|
|
||||||
### Pré-requisitos
|
### Pré-requisitos
|
||||||
|
|
||||||
- Docker v24+ ou Go 1.24+
|
- Go 1.24+
|
||||||
- Node.js v20+
|
- Node.js 20+
|
||||||
- PostgreSQL v16+
|
- PostgreSQL 16+
|
||||||
|
|
||||||
### Instalação
|
### Subindo localmente
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
# Clone
|
# 1) clone
|
||||||
git clone https://github.com/rede5/gohorsejobs.git
|
git clone https://github.com/rede5/gohorsejobs.git
|
||||||
cd gohorsejobs
|
cd gohorsejobs
|
||||||
|
|
||||||
# Configure
|
# 2) variáveis de ambiente (ajuste os valores)
|
||||||
cp backend/.env.example backend/.env
|
cp backend/.env.example backend/.env
|
||||||
cp frontend/.env.example frontend/.env
|
cp frontend/.env.example frontend/.env
|
||||||
|
|
||||||
# Backend
|
# 3) backend
|
||||||
cd backend && go run ./cmd/api
|
cd backend
|
||||||
|
go run ./cmd/api
|
||||||
|
|
||||||
# Frontend (outro terminal)
|
# 4) frontend (novo terminal)
|
||||||
cd frontend && npm install && npm run dev
|
cd ../frontend
|
||||||
|
npm install
|
||||||
|
npm run dev
|
||||||
|
|
||||||
# Seeder (opcional)
|
# 5) seeder (opcional)
|
||||||
cd seeder-api && npm install && npm run seed
|
cd ../seeder-api
|
||||||
|
npm install
|
||||||
|
npm run seed
|
||||||
```
|
```
|
||||||
|
|
||||||
### Usando start.sh
|
### Script auxiliar
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
./start.sh
|
./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]
|
```text
|
||||||
> 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
|
|
||||||
|
|
||||||
```
|
|
||||||
gohorsejobs/
|
gohorsejobs/
|
||||||
├── backend/ # Go API (Clean Architecture)
|
├── backend/
|
||||||
│ ├── cmd/api/ # Entrypoint
|
├── frontend/
|
||||||
│ ├── internal/ # Business logic
|
├── backoffice/
|
||||||
│ ├── migrations/ # 30 SQL migrations
|
├── seeder-api/
|
||||||
│ └── BACKEND.md # Documentação
|
├── docs/
|
||||||
│
|
├── k8s/
|
||||||
├── frontend/ # Next.js 15 App
|
└── start.sh
|
||||||
│ ├── 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
|
|
||||||
```
|
```
|
||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
## 📊 Status do Projeto
|
## 🤝 Contribuição
|
||||||
|
|
||||||
| Área | Progresso | Status |
|
1. Crie uma branch de feature/fix.
|
||||||
|------|-----------|--------|
|
2. Faça commits pequenos e objetivos.
|
||||||
| Backend API | 95% | 🟢 Production Ready |
|
3. Atualize documentação relevante em `docs/` quando necessário.
|
||||||
| Frontend | 85% | 🟢 Funcional |
|
4. Abra PR com contexto, impacto e evidências de teste.
|
||||||
| 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.
|
|
||||||
|
|
||||||
---
|
|
||||||
|
|
||||||
<p align="center">
|
|
||||||
<sub>Desenvolvido com ❤️ pela equipe GoHorse</sub>
|
|
||||||
</p>
|
|
||||||
|
|
|
||||||
312
ROADMAP.md
312
ROADMAP.md
|
|
@ -1,311 +1,7 @@
|
||||||
# 🗺️ GoHorse Jobs - Roadmap Completo
|
# Roadmap (movido)
|
||||||
|
|
||||||
> **Data**: 27/12/2024
|
Este arquivo foi mantido apenas por compatibilidade de links antigos.
|
||||||
> **Status**: Pré-lançamento
|
|
||||||
> **Objetivo**: Documentar funcionalidades existentes, gaps e próximos passos
|
|
||||||
|
|
||||||
---
|
A versão oficial e atualizada do roadmap está em:
|
||||||
|
|
||||||
## 📊 Status Atual do Projeto
|
- [`docs/ROADMAP.md`](docs/ROADMAP.md)
|
||||||
|
|
||||||
### ✅ 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*
|
|
||||||
|
|
|
||||||
112
STATUS_REPORT.md
112
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.
|
- [`docs/ROADMAP.md`](docs/ROADMAP.md)
|
||||||
* 🟡 **Amarelo:** Parcial/Bugado.
|
- [`docs/TASKS.md`](docs/TASKS.md)
|
||||||
* 🔴 **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<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| 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.
|
|
||||||
|
|
|
||||||
163
docs/ROADMAP.md
163
docs/ROADMAP.md
|
|
@ -1,146 +1,59 @@
|
||||||
# 🗺️ GoHorse Jobs & Marketplace - "The Intense" Roadmap (10X)
|
# 🗺️ Roadmap GoHorse Jobs (Atualizado)
|
||||||
|
|
||||||
**O Roadmap Definitivo.**
|
> Documento de direção de produto e engenharia.
|
||||||
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).
|
>
|
||||||
|
> **Critério:** manter apenas itens que fazem sentido para o escopo atual da plataforma de recrutamento.
|
||||||
> **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.
|
|
||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
## 🏗️ Pilar 1: Fundação & Arquitetura (Já Consolidado)
|
## 1) Prioridades em andamento
|
||||||
*O alicerce que permite escalar sem quebrar.*
|
|
||||||
|
|
||||||
### 1.1 Backend & Core (Go)
|
- **Confiabilidade do core de vagas e candidaturas**
|
||||||
- [x] **Clean Arch + DDD:** Separação estrita entre Handlers, Services, UseCases e Repositories.
|
- estabilidade de fluxo de candidatura;
|
||||||
- [x] **UUID v7:** Migração completa de INT para UUIDv7 (time-sorted) em todas as tabelas críticas (`users`, `jobs`, `applications`).
|
- redução de falhas em integrações externas;
|
||||||
- *Por que?* Evita fragmentação de índices e permite sharding futuro sem conflitos.
|
- melhoria de monitoramento e logs operacionais.
|
||||||
- [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.
|
|
||||||
|
|
||||||
### 1.2 Frontend & UX (Next.js)
|
- **Segurança e governança**
|
||||||
- [x] **Design System:** Componentes ShadCN/UI padronizados e responsivos.
|
- endurecimento de regras de autorização (RBAC);
|
||||||
- [x] **Auth Híbrida:** Suporte a JWT Bearer e Cookies para segurança máxima em clientes web e mobile.
|
- revisão de endpoints administrativos;
|
||||||
- [x] **Dashboards Dedicados:** Áreas distintas e otimizadas para Candidatos (foco: aplicar rápido) e Recrutadores (foco: triagem rápida).
|
- 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)
|
## 2) Próximas entregas (curto prazo)
|
||||||
*Transformando usuários gratuitos em receita recorrente.*
|
|
||||||
|
|
||||||
### 2.1 Engine de Pagamentos (Stripe Integration)
|
- **Experiência de empresa/recrutador**
|
||||||
**Objetivo:** Permitir fluxo financeiro fluido para B2B e B2C.
|
- 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):**
|
- **Experiência do candidato**
|
||||||
- Empresas pagam para destacar vagas ("Featured") ou furar a fila de moderação.
|
- simplificação do processo de candidatura;
|
||||||
- **Regra de Negócio:** Vaga paga entra como `status: published` automaticamente (após check de fraude). Vaga grátis entra como `review`.
|
- melhoria de feedback de status;
|
||||||
- **Técnico:** Webhook Stripe (`checkout.session.completed`) atualiza tabela `job_payments` e dispara evento de publicação.
|
- refinamento de notificações.
|
||||||
- [ ] **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).
|
|
||||||
|
|
||||||
### 2.2 Gamificação & Engajamento
|
- **Qualidade de código**
|
||||||
**Objetivo:** Viciar o usuário na plataforma (Retenção).
|
- aumento de cobertura de testes em pontos críticos;
|
||||||
|
- redução de inconsistências entre documentação e implementação;
|
||||||
- [ ] **Sistema de Níveis (XP):**
|
- revisão de endpoints legados.
|
||||||
- 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).
|
|
||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
## 📦 Pilar 3: E-commerce & Logística (Q2 2025)
|
## 3) Backlog estratégico (médio prazo)
|
||||||
*Expansão física: Venda de Merch e Equipamentos para Home Office.*
|
|
||||||
|
|
||||||
### 3.1 Loja Oficial (Merch)
|
- funcionalidades avançadas de matching e recomendação;
|
||||||
- [ ] **Catálogo de Produtos:** Camisetas, Canecas, Adesivos "GoHorse".
|
- expansão de integrações para aquisição e retenção de usuários;
|
||||||
- [ ] **Integração de Estoque:** Controle simples de estoque (`product_variants`, `inventory_logs`).
|
- melhorias incrementais de monetização.
|
||||||
- [ ] **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.
|
|
||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
## 🧠 Pilar 4: Inteligência & Automação (Q3 2025 - "GoHorse AI")
|
## 4) O que foi removido deste roadmap
|
||||||
*Onde a mágica acontece. O diferencial competitivo.*
|
|
||||||
|
|
||||||
### 4.1 Matching Semântico (Vector Search)
|
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.
|
||||||
- [ ] **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.
|
|
||||||
|
|
||||||
### 4.2 Assistente de Carreira (LLM Agent)
|
Histórico detalhado, quando necessário, deve ser consultado por commit/PR anterior.
|
||||||
- [ ] **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."* 🚀
|
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue