Pular para conteúdo

Arquitetura

Estilo de aplicação

O produto é um monólito Django com apps de domínio no mesmo projeto. As páginas são renderizadas por Django Templates; não há frontend React/Next.js separado. O ORM persiste em PostgreSQL. Redis atua como broker Celery, e o worker processa tarefas assíncronas.

Camada Implementação observada
Apresentação Django Templates e JavaScript, usando o padrão visual Holo.
Aplicação Class-based views, formulários, serviços de domínio e ViewSets DRF.
Domínio Apps accounts, dashboard, projetos, tarefas, calendario, notificacoes.
Persistência Django ORM, PostgreSQL e migrations Django.
Assíncrona Celery Worker e Celery Beat com django-celery-beat.
Integrações API OpenAI para sugestões; SMTP configurável para recuperação de senha.

Fluxo das sugestões de IA

As ações do Dashboard consultam somente dados do usuário autenticado. Tarefas e eventos são convertidos em prompts em português e enviados à API da OpenAI. Erros do provedor são registrados e expostos pela aplicação como indisponibilidade da integração. Os resultados são guardados em dashboard.SugestaoIA; uma notificação também é criada para o usuário.

Isolamento por usuário

As consultas HTML e os get_queryset() da API filtram objetos de domínio pelo usuário ou proprietário. Para relações enviadas como IDs nos serializers, a verificação de propriedade do objeto relacionado deve também ser feita na escrita. A auditoria documental encontrou pontos em que esse vínculo não é validado pelo serializer atual; ver Governança.

Referências

  • Configuração: core/settings/base.py e core/urls.py.
  • IA: dashboard/ai.py e dashboard/views.py.
  • Tarefas programadas: tarefas/tasks.py e configuração do Celery Beat.