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.pyecore/urls.py. - IA:
dashboard/ai.pyedashboard/views.py. - Tarefas programadas:
tarefas/tasks.pye configuração do Celery Beat.