diff --git a/AGENT.md b/AGENT.md new file mode 100644 index 0000000..440ec9d --- /dev/null +++ b/AGENT.md @@ -0,0 +1,15 @@ +# GoHorseJobs - AI Engineering Standards + +## 📱 Mobile-First Obsession (Frontend) +1. **Padrão de Layout**: Todas as páginas devem ser desenvolvidas para mobile (`width < 640px`) primeiro. +2. **Componentes**: Use o design system já definido. É proibido duplicar componentes de "Card de Vaga". +3. **Imagens**: Sempre use o componente `next/image` com `sizes` definido para evitar layouts que "pulam". + +## 🧪 Estratégia de Testes +1. **Scraper (Python/Playwright)**: Cada novo site de vagas deve ter um teste de "extração simulada" para garantir que o seletor CSS ainda funciona. +2. **E2E (Playwright)**: Fluxos críticos (Candidatar-se a vaga, Login de Empresa) devem ser testados via Playwright E2E na VPS. +3. **Integration**: Testar a persistência do banco via Postgres diretamente. + +## 🛠️ Regras de Código (Go) +- Use **Context** em todas as chamadas de banco e serviços externos. +- Erros devem ser "embrulhados" com contexto: `fmt.Errorf("falha ao salvar vaga: %w", err)`. diff --git a/DOMAIN.md b/DOMAIN.md new file mode 100644 index 0000000..d2ffb2f --- /dev/null +++ b/DOMAIN.md @@ -0,0 +1,16 @@ +# GoHorseJobs - Regras de Domínio + +## 📄 Ciclo de Vida da Vaga (Job) +1. **Posted**: Vaga criada pela empresa. +2. **Featured**: Vaga paga para destaque no topo da lista. +3. **Expired**: Vagas caducam após 30 dias automaticamente. +4. **Closed**: Encerrada manualmente pelo RH. + +## 👥 Candidatos e Aplicações +- **Resume**: Suporte a upload de PDF no S3/Civo Object Storage. +- **Application**: Um candidato só pode se aplicar 1 vez por vaga. +- **Answers**: Perguntas customizadas por vaga devem ser validadas no momento da aplicação. + +## 🕷️ Motor de Scraping +- As vagas coletadas de outros sites (multisite) devem ter o campo `source_url` preenchido. +- Vagas duplicadas devem ser ignoradas via hash do conteúdo + título.