Pular para conteúdo

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