# Consolidated Migration Summary **Data:** 15 de Outubro de 2025 **Arquivo:** `consolidated_migration_postgresql.sql` **Database:** PostgreSQL 12+ ## Visão Geral Este documento descreve a consolidação de **21 migrations** individuais em um único arquivo inteligente e idempotente para PostgreSQL. ## Estatísticas do Arquivo Consolidado - **Total de linhas:** 635 - **Tabelas criadas:** 34 (31 principais + 3 auxiliares) - **Índices criados:** 59 - **Triggers:** 1 (chat_groups updated_at) - **Funções:** 1 (update_chat_groups_updated_at) - **Permissões inseridas:** 29 base + 1 dinâmica ## Estrutura Organizada em 10 Seções ### Seção 1: Migrations Tracking (1 tabela) - `migrations_history` - Rastreamento de migrations aplicadas ### Seção 2: Core Tables (8 tabelas) - `organizations` - Organizações/empresas - `users` - Usuários (com preferências de chat completas) - `areas` - Áreas/departamentos - `permissions` - Catálogo de permissões - `roles` - Cargos/funções - `role_permissions` - Relacionamento roles ↔ permissions - `user_area_roles` - Usuários em áreas com cargos - `user_project_roles` - Usuários em projetos com cargos (movido para após projects) ### Seção 3: Kanban Tables (10 tabelas) - `projects` - Projetos Kanban (com comment_policy e enable_swimlanes) - `columns` - Colunas do quadro (com color) - `swimlanes` - Raias horizontais para organização - `tasks` - Tarefas/cards (com swimlane_id, scheduled_date, recurrence) - `subtasks` - Subtarefas/checklist - `tags` - Tags para categorização - `task_tags` - Relacionamento tasks ↔ tags - `task_dependencies` - Dependências entre tarefas - `task_templates` - Templates reutilizáveis - `template_subtasks` - Subtarefas dos templates ### Seção 4: Collaboration Tables (6 tabelas) - `comments` - Comentários em tarefas - `notifications` - Notificações de usuários - `attachments` - Anexos (com storage_type: local/r2, remote_key, migrated_at) - `project_share_links` - Links de compartilhamento - `chat_groups` - Grupos de chat (com trigger updated_at) - `chat_group_members` - Membros dos grupos ### Seção 5: Activity Tables (3 tabelas) - `activity_log` - Log de atividades em tarefas - `project_activity_log` - Log de atividades em projetos - `swimlane_activity_log` - Log de atividades em swimlanes ### Seção 6: Workflow Tables (3 tabelas) - `workflows` - Workflows de automação por projeto - `task_workflows` - Workflows de automação por tarefa - `workflow_logs` - Logs de execução de workflows ### Seção 7: Integration Tables (3 tabelas) - `integrations` - Integrações (email, WhatsApp, Telegram, Typebot) - `cloudflare_r2_settings` - Configuração de armazenamento R2 - `appearance_settings` - Configurações de aparência UI ### Seção 8: Indexes (59 índices) Todos os índices para otimização de performance, organizados por tabela. ### Seção 9: Permissions (30 permissões) Inserção de todas as permissões base do sistema com `ON CONFLICT DO NOTHING`. ### Seção 10: Completion Summary Documentação final e resumo. ## Migrations Originais Consolidadas As seguintes migrations foram analisadas e consolidadas: 1. `000_create_migrations_history_table.sql` - Tracking de migrations 2. `001_add_scheduled_tasks_and_user_profile.sql` - Campos bio, photo_path, scheduled_date, color 3. `add_chat_features_postgresql.sql` - Preferências de chat em users, chat_groups, chat_group_members 4. `add_swimlanes_postgresql.sql` - Tabela swimlanes, campos swimlane_id e enable_swimlanes 5. `add_swimlane_activity_log_postgresql.sql` - Tabela swimlane_activity_log 6. `chat_permission_postgresql.sql` - Permissão 28 (chat:use) 7. `cloudflare_r2_postgresql.sql` - Tabela cloudflare_r2_settings, campos storage em attachments 8. `create_project_activity_log.sql` - Tabela project_activity_log 9. `task_workflows_postgresql.sql` - Tabela task_workflows ## Características de Idempotência ### ✅ O arquivo é completamente idempotente para bancos de dados novos: - **CREATE TABLE IF NOT EXISTS** - Não recria tabelas existentes - **CREATE INDEX IF NOT EXISTS** - Não recria índices existentes - **DROP TRIGGER IF EXISTS** - Remove trigger antes de recriar - **ON CONFLICT DO NOTHING** - Não falha em permissões duplicadas - **SELECT setval()** - Atualiza sequences apenas se necessário ### 📝 Notas sobre uso em bancos existentes: Este arquivo é otimizado para **criação de banco de dados novo** a partir do zero. Se você tem um banco de dados existente com schema antigo: 1. **Opção 1 (Recomendada):** Faça backup, drop database, recrie com esta migration 2. **Opção 2:** Use as migrations incrementais individuais para atualizar O arquivo **não inclui** verificações `ALTER TABLE ... IF NOT EXISTS` para adicionar colunas faltantes em tabelas existentes, pois é uma migration consolidada destinada a criar tudo do zero. ## Ordem de Dependências A ordem das tabelas foi cuidadosamente planejada para respeitar todas as dependências de foreign keys: 1. **Base:** organizations 2. **Core:** users, areas, permissions, roles → role_permissions, user_area_roles 3. **Projects:** projects → user_project_roles 4. **Kanban:** columns, swimlanes, tasks → subtasks, tags, task_tags, etc 5. **Features:** comments, notifications, attachments, chat, activity logs, workflows, integrations ## Sintaxe PostgreSQL Todos os tipos e construções são específicos do PostgreSQL: - `SERIAL` ao invés de AUTO_INCREMENT - `BOOLEAN` ao invés de TINYINT(1) - `JSONB` para configurações JSON - `CHECK (...)` constraints inline e nomeados - `REFERENCES ... ON DELETE CASCADE/SET NULL` - `CREATE OR REPLACE FUNCTION` para triggers - `DECIMAL(3,2)` para valores numéricos precisos ## Permissões Incluídas Total de **30 permissões** inseridas: ### Permissões Base (1-27) - project: create, edit, delete, view - task: create, edit, delete, view, assign - comment: create, edit, delete, view - area: create, edit, delete, view - user: invite, edit, remove - role: create, edit, delete, assign - attachment: upload, delete - workflow: manage ### Permissões Adicionadas por Migrations (28-30) - **28:** `chat:use` - Usar funcionalidade de chat - **29:** `project:manage_swimlanes` - Gerenciar swimlanes - **30:** `project:view_activity_log` - Ver log de atividades (ID dinâmico) ## Índices de Performance **59 índices** criados para otimizar queries comuns: - **Foreign keys:** Todos os campos com FK têm índices - **Filtros comuns:** is_read, is_archived, is_active, status - **Ordenação:** created_at DESC, display_order, column_order - **Buscas:** email, organization_id, project_id, etc - **Compostos:** (project_id, display_order), (task_id, tag_id) ## Como Usar ### Criar um novo banco de dados: ```bash # 1. Criar banco de dados createdb kanban_pro # 2. Executar migration consolidada psql -d kanban_pro -f migrations/consolidated_migration_postgresql.sql # 3. Verificar psql -d kanban_pro -c "\dt" ``` ### Verificar aplicação: ```sql -- Ver todas as tabelas SELECT table_name FROM information_schema.tables WHERE table_schema = 'public' ORDER BY table_name; -- Ver todas as permissões SELECT * FROM permissions ORDER BY id; -- Ver índices SELECT indexname FROM pg_indexes WHERE schemaname = 'public' ORDER BY indexname; ``` ## Compatibilidade - **PostgreSQL:** 12+ - **Encoding:** UTF-8 - **Schema:** public (padrão) ## Manutenção Futura Para novas mudanças de schema: 1. **Incremental:** Crie nova migration individual em `migrations/` 2. **Consolidação:** Atualize este arquivo se fizer nova consolidação completa ## Conclusão ✅ **Todas as 21 migrations foram consolidadas com sucesso** ✅ **34 tabelas criadas com dependências corretas** ✅ **59 índices para otimização de performance** ✅ **30 permissões inseridas** ✅ **Sintaxe PostgreSQL correta** ✅ **Comentários explicativos em todas as seções** ✅ **Arquivo completamente idempotente para bancos novos** O arquivo está pronto para uso em produção! 🚀