# Database Migrations - Kanban Pro Workflow ## 📁 Estrutura da Pasta ``` migrations/ ├── consolidated_migration_mysql.sql # Migration consolidada para MySQL ├── consolidated_migration_postgresql.sql # Migration consolidada para PostgreSQL ├── CONSOLIDATION_SUMMARY.md # Documentação detalhada das migrations ├── README.md # Este arquivo └── archive/ # Migrations antigas e utilitários ├── 000_*.sql # Migrations incrementais individuais ├── 001_*.sql ├── add_*.sql ├── *.php # Scripts PHP de utilidade └── *.md # Documentação antiga ``` ## 🎯 Migrations Atuais (Versão Consolidada) ### 📦 Consolidated Migrations As migrations consolidadas são arquivos **completos e idempotentes** que criam todo o schema do banco de dados do zero. Elas substituem todas as migrations incrementais antigas. #### **MySQL: `consolidated_migration_mysql.sql`** - **Linhas:** 755 - **Tabelas:** 34 (31 principais + 3 auxiliares) - **Índices:** 59 - **Permissões:** 30 - **Compatibilidade:** MySQL 5.7+, MariaDB 10.2+ - **Características:** - Usa `CREATE TABLE IF NOT EXISTS` - Idempotente (pode ser executado múltiplas vezes) - Inclui todos os campos de chat, swimlanes, workflows, R2 storage - Organizado em 10 seções lógicas #### **PostgreSQL: `consolidated_migration_postgresql.sql`** - **Linhas:** 635 - **Tabelas:** 34 (31 principais + 3 auxiliares) - **Índices:** 59 - **Triggers:** 1 (chat_groups updated_at) - **Funções:** 1 (update_chat_groups_updated_at) - **Permissões:** 30 - **Compatibilidade:** PostgreSQL 12+ - **Características:** - Usa `CREATE TABLE IF NOT EXISTS` - Idempotente (pode ser executado múltiplas vezes) - Sintaxe PostgreSQL nativa (SERIAL, JSONB, CHECK constraints) - Inclui triggers e funções ### 📋 O que está incluído nas Migrations Consolidadas? **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 **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. **Seção 9: Permissions** (30 permissões) Inserção de todas as permissões base do sistema. ## 🚀 Como Aplicar as Migrations ### ✅ Banco de Dados NOVO (Recomendado) Se você está criando o banco de dados do zero, use as migrations consolidadas: #### MySQL: ```bash # 1. Criar banco de dados mysql -u root -p -e "CREATE DATABASE kanban_pro CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;" # 2. Executar migration consolidada mysql -u root -p kanban_pro < migrations/consolidated_migration_mysql.sql # 3. Verificar mysql -u root -p kanban_pro -e "SHOW TABLES;" ``` #### PostgreSQL: ```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" ``` ### 🔄 Banco de Dados EXISTENTE Se você já tem um banco de dados com schema antigo: **Opção 1: Backup e Recriação (Recomendada)** ```bash # 1. Fazer backup completo mysqldump -u root -p kanban_pro > backup_$(date +%Y%m%d_%H%M%S).sql # 2. Dropar e recriar mysql -u root -p -e "DROP DATABASE kanban_pro;" mysql -u root -p -e "CREATE DATABASE kanban_pro CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;" # 3. Aplicar migration consolidada mysql -u root -p kanban_pro < migrations/consolidated_migration_mysql.sql # 4. Restaurar dados (se necessário) ``` **Opção 2: Migrations Incrementais (Avançado)** ```bash # Use as migrations individuais em migrations/archive/ na ordem correta # Veja migrations/archive/INCREMENTAL_CHANGES.md para mais detalhes ``` ## 📖 Documentação Adicional - **[CONSOLIDATION_SUMMARY.md](CONSOLIDATION_SUMMARY.md)** - Documentação detalhada sobre a consolidação das 21 migrations originais - **[archive/INCREMENTAL_CHANGES.md](archive/INCREMENTAL_CHANGES.md)** - Histórico de mudanças incrementais (se disponível) - **[archive/SCHEMA_INVENTORY.md](archive/SCHEMA_INVENTORY.md)** - Inventário completo do schema (se disponível) ## 📦 Conteúdo do Archive A pasta `archive/` contém: 1. **Migrations Incrementais Individuais** (17 arquivos) - `000_create_migrations_history_table.sql` - `001_add_scheduled_tasks_and_user_profile.sql` - `add_chat_features_*.sql` - `add_swimlanes_*.sql` - `cloudflare_r2_*.sql` - E outros... 2. **Scripts PHP de Utilidade** (5 arquivos) - `apply_chat_migrations.php` - `execute_swimlanes_migration.php` - `init_migrations_table.php` - `verify_structure.php` 3. **Versões Alternativas de Consolidated Migrations** (4 arquivos) - `consolidated_mysql.sql` - `consolidated_postgresql.sql` - `unified_migration_mysql.sql` - `unified_migration_postgresql.sql` 4. **Documentação Antiga** (4 arquivos) - `INCREMENTAL_CHANGES.md` - `SCHEMA_INVENTORY.md` - `SWIMLANES_MIGRATION_README.md` - `TEST_RESULTS.md` **⚠️ Nota:** Os arquivos no archive são mantidos apenas para referência histórica. Para novos projetos, use sempre as migrations consolidadas na raiz. ## ✅ Boas Práticas - ✅ Sempre fazer backup antes de aplicar migrations - ✅ Testar migrations em ambiente de desenvolvimento primeiro - ✅ Usar as migrations consolidadas para bancos novos - ✅ Documentar todas as alterações - ✅ Verificar a aplicação com `SHOW TABLES` (MySQL) ou `\dt` (PostgreSQL) - ❌ Nunca modificar migrations já aplicadas - ❌ Não executar migrations diretamente em produção sem backup - ❌ Evitar mudanças destrutivas (DROP, TRUNCATE) sem confirmação ## 🔍 Verificação de Aplicação ### MySQL: ```sql -- Ver todas as tabelas SHOW TABLES; -- Ver estrutura de uma tabela DESCRIBE users; -- Ver todas as permissões SELECT * FROM permissions ORDER BY id; -- Ver índices SHOW INDEX FROM tasks; ``` ### PostgreSQL: ```sql -- Ver todas as tabelas SELECT table_name FROM information_schema.tables WHERE table_schema = 'public' ORDER BY table_name; -- Ver estrutura de uma tabela \d users -- 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 ### Produção: - **MySQL:** 5.7+ / MariaDB 10.2+ - **Encoding:** UTF-8 (utf8mb4) ### Desenvolvimento (Replit): - **PostgreSQL:** 12+ (Neon via Replit) - **Encoding:** UTF-8 ## 📅 Histórico de Versões | Versão | Data | Descrição | |--------|------|-----------| | 1.0 | Outubro 2025 | Consolidação de 21 migrations em 2 arquivos principais | ## 🆘 Suporte Para problemas ou dúvidas: 1. Consulte a [CONSOLIDATION_SUMMARY.md](CONSOLIDATION_SUMMARY.md) 2. Verifique os logs de erro no banco de dados 3. Revise as migrations individuais no archive/ para detalhes históricos --- **Última atualização:** 15 de Outubro de 2025 **Mantido por:** Kanban Pro Workflow Team