Convenções de Código
Python / Django
- Class-Based Views para todas as views (sem function-based views)
- Mixins de permissão em todas as views protegidas
- Imports por provider para LangChain (nunca de
langchain.embeddings) - Lazy imports dentro de funções para evitar import circular (ex: em signals)
- Sempre filtrar pelo
school do usuário — nunca confiar em IDs da URL sem validação
Templates
- Estender
base_admin.html para área admin, base_student.html para alunos - Usar classes do Duralux:
card, card-body, btn-primary, badge bg-soft-* - Formulários com CSRF token sempre
- JavaScript vanilla ou jQuery (incluído no Duralux) — sem frameworks JS
Migrations
- Nomear com
--name descritivo: makemigrations app --name="descricao_da_mudanca" - Nunca editar migrations já aplicadas em produção
Segurança
- Nunca expor
message_cost (custo em USD) para alunos — apenas para admins internos - Sempre validar permissão antes de acessar objetos por ID
- Variáveis sensíveis apenas via
.env, nunca hardcoded