Pular para conteúdo

Arquitetura

Status real

Monólito Django modular, mesmo padrão pragmático dos demais produtos CoreFlow (ver ADR-0002) — sem camadas formais de Clean Architecture/DDD.

Composição real

flowchart TD Browser --> Django Django --> Middleware["ResetDBMiddleware / DemoDBMiddleware"] Middleware --> Apps Apps --> ORM ORM --> PostgreSQL Apps --> Celery["Celery Worker + Beat"] Celery --> Redis

Particularidade real: roteamento de banco para demonstração

ResetDBMiddleware (primeiro da lista, antes da autenticação) reseta o roteamento para default a cada request; DemoDBMiddleware detecta se o usuário está no grupo Demonstração e roteia as queries daquele request para um banco de demonstração separado (config/db_router.py). Usuários demo podem ter PKs diferentes nos dois bancos — o middleware rebusca o usuário após trocar de banco para evitar contaminação entre requests. Populado por apps.core.management.commands.populate_demo.

Diferença real em relação a CRM/ERP

Os models não herdam um BaseModel com UUID — cada model declara criado_em/atualizado_em próprios e usa a chave primária inteira padrão do Django.

Referências