Pular para conteúdo

Database

O produto usa PostgreSQL com Django ORM. O diagrama abaixo representa os modelos de domínio próprios declarados nos apps do produto. User estende AbstractUser; as tabelas auxiliares padrão de autenticação e as tabelas de django-celery-beat não estão detalhadas no desenho.

Diagrama entidade-relacionamento

erDiagram USER ||--o{ PROJECT : owns PROJECT ||--o{ TASK : groups PROJECT ||--o{ LABEL : defines TASK }o--o{ LABEL : tagged USER o|--o{ TASK : assigned USER o|--o{ TASK : creates USER ||--o{ EVENT : owns TASK o|--o{ EVENT : relates USER ||--o{ NOTIFICATION : receives USER ||--o{ AI_SUGGESTION : receives USER o|--o{ AUDIT_LOG : actor

Convenções físicas

  • As tabelas seguem o padrão Django <app>_<model> em minúsculas: accounts_user, accounts_log, dashboard_sugestaoia, projetos_projeto, tarefas_etiqueta, tarefas_tarefa, calendario_evento e notificacoes_notificacao.
  • As PKs são BigAutoField (PostgreSQL bigint). Campos Django DateTimeField usam timestamps com fuso por USE_TZ=True.
  • ForeignKeys criam índice automaticamente, salvo configuração contrária. A tabela intermediária M2M de etiquetas é gerada pelo Django e tem unicidade no par tarefa/etiqueta.
  • O usuário inclui os campos padrão herdados de AbstractUser e as relações padrão de grupos e permissões; abaixo estão os campos específicos da aplicação.

Dicionário de dados

NN indica null=False; N indica que o banco aceita NULL. Valores de blank controlam validação/formulários e não significam, por si só, nulabilidade.

accounts_user — extensão do usuário Django

Campo Tipo PostgreSQL Null Default FK / índice / regra
id bigint NN sequência PK.
username varchar(150) NN — Único, índice por restrição. Herdado de AbstractUser.
password varchar(128) NN — Hash de senha Django; herdado.
last_login timestamptz N NULL Herdado.
is_superuser boolean NN false Herdado.
first_name varchar(150) NN string vazia Herdado.
last_name varchar(150) NN string vazia Herdado.
email varchar(254) NN string vazia Herdado.
is_staff boolean NN false Herdado.
is_active boolean NN true Herdado.
date_joined timestamptz NN horário atual Herdado.
theme varchar(20) NN dracula Escolhas: dracula, dark, futuristic, light, glass.
avatar varchar(100) N NULL Caminho do arquivo; upload em avatars/; formulário permite vazio.

groups e user_permissions são relações M2M herdadas do Django, materializadas por tabelas auxiliares. accounts_log.usuario_id referencia este usuário.

accounts_log

Campo Tipo PostgreSQL Null Default FK / índice / regra
id bigint NN sequência PK.
usuario_id bigint N NULL FK accounts_user, SET NULL; índice automático.
acao smallint NN — Opções: 3 alteração, 4 inclusão, 5 exclusão, 6 importação, 7 exportação.
descricao text NN — Descrição da ação registrada.
data_hora timestamptz NN horário atual Índice explícito; ordenação decrescente no model.

dashboard_sugestaoia

Campo Tipo PostgreSQL Null Default FK / índice / regra
id bigint NN sequência PK.
usuario_id bigint NN — FK accounts_user, CASCADE; índice automático.
tipo varchar(15) NN — prioridades, plano_dia ou conflito.
conteudo text NN — Texto da sugestão.
criado_em timestamptz NN preenchido na criação Timestamp gerido pelo Django (auto_now_add).

projetos_projeto

Campo Tipo PostgreSQL Null Default FK / índice / regra
id bigint NN sequência PK.
nome varchar(200) NN — Nome do projeto.
descricao text NN string vazia Formulário pode deixar vazio.
status varchar(20) NN planejado planejado, ativo, concluido ou arquivado.
proprietario_id bigint NN — FK accounts_user, CASCADE; índice automático.
criado_em timestamptz NN preenchido na criação auto_now_add.
atualizado_em timestamptz NN atualizado ao salvar auto_now.
excluido boolean NN false Exclusão lógica.

tarefas_etiqueta

Campo Tipo PostgreSQL Null Default FK / índice / regra
id bigint NN sequência PK.
nome varchar(100) NN — Único em conjunto com projeto_id.
cor varchar(7) NN #bd93f9 Valor hexadecimal #RRGGBB.
projeto_id bigint NN — FK projetos_projeto, CASCADE; índice automático.

Restrição: UNIQUE (nome, projeto_id), nome etiqueta_unico_por_projeto.

tarefas_tarefa

Campo Tipo PostgreSQL Null Default FK / índice / regra
id bigint NN sequência PK.
titulo varchar(300) NN — Título da tarefa.
descricao text NN string vazia Formulário pode deixar vazio.
prioridade varchar(10) NN media baixa, media, alta ou urgente.
status varchar(15) NN pendente pendente, em_andamento, concluida ou cancelada.
data_vencimento date N NULL Prazo opcional.
projeto_id bigint NN — FK projetos_projeto, CASCADE; índice automático.
responsavel_id bigint N NULL FK accounts_user, SET NULL; índice automático.
criado_por_id bigint N NULL FK accounts_user, SET NULL; índice automático.
criado_em timestamptz NN preenchido na criação auto_now_add.
atualizado_em timestamptz NN atualizado ao salvar auto_now.
excluida boolean NN false Exclusão lógica.
etiquetas M2M — — Junção automática com tarefas_etiqueta; par de FKs único.

Tabela intermediária gerada pelo ORM (tarefas_tarefa_etiquetas): id bigint PK; tarefa_id bigint FK para tarefas_tarefa; etiqueta_id bigint FK para tarefas_etiqueta; os dois campos FK são obrigatórios, indexados e únicos em conjunto.

calendario_evento

Campo Tipo PostgreSQL Null Default FK / índice / regra
id bigint NN sequência PK.
titulo varchar(300) NN — Título do evento.
descricao text NN string vazia Formulário pode deixar vazio.
data_inicio timestamptz NN — Início do evento.
data_fim timestamptz NN — Fim do evento.
cor varchar(7) NN #bd93f9 Valor hexadecimal #RRGGBB.
usuario_id bigint NN — FK accounts_user, CASCADE; índice automático.
tarefa_id bigint N NULL FK tarefas_tarefa, SET NULL; índice automático.
criado_em timestamptz NN preenchido na criação auto_now_add.
excluido boolean NN false Exclusão lógica.

notificacoes_notificacao

Campo Tipo PostgreSQL Null Default FK / índice / regra
id bigint NN sequência PK.
usuario_id bigint NN — FK accounts_user, CASCADE; índice automático.
tipo varchar(10) NN sistema tarefa, ia ou sistema.
titulo varchar(200) NN — Título da notificação.
mensagem text NN string vazia Conteúdo opcional.
link varchar(300) NN string vazia Destino interno opcional.
lida boolean NN false Indicador de leitura.
criado_em timestamptz NN preenchido na criação auto_now_add.

Referências

  • Modelos Django: accounts/models.py, dashboard/models.py, projetos/models.py, tarefas/models.py, calendario/models.py, notificacoes/models.py.
  • Migrações: diretórios */migrations/ do repositório-fonte.
  • APIs