Técnico¶
Stack observada¶
- Python 3.12 e Django 5.
- PostgreSQL, Django ORM e usuário customizado
accounts.User. - Celery, Redis e Celery Beat para processamento assíncrono e agenda.
- Django REST Framework,
drf-spectacular, autenticação por token e sessão. - Django Templates,
crispy-forms, Bootstrap 5 como pacote de formulário e componentes de interface.holo-*. - Integração OpenAI configurável (padrão
gpt-4o-mini),requests/BeautifulSoup para fontes HTML e bibliotecas de PDF/Excel para relatórios.
Configuração¶
As configurações ficam em config/settings/ com base comum e módulos específicos de desenvolvimento, produção, Contabo, Hostinger e Railway. python-decouple lê variáveis de ambiente. O fuso configurado é America/Sao_Paulo; o banco padrão é PostgreSQL.
Processamento¶
JobSearchService controla sessão ativa e cooldown antes de enviar a tarefa Celery. Adaptadores de apps/scraper/sources/ normalizam resultados; JobPosting usa unicidade conjunta de source e external_id para deduplicação. A análise de IA grava score, resumo, pontos positivos/negativos e instante da análise na vaga.
Persistência e permissões¶
As entidades do DP usam chaves inteiras padrão do Django. Busca e vagas pertencem ao usuário via sessão; interações e consultas também referenciam usuário. A API do domínio jobs restringe cada usuário aos próprios registros; os recursos do DP usam permissões Django concedidas aos grupos do domínio.