@greatapps/greatagents 0.1.5 → 0.1.7

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (57) hide show
  1. package/docs/ERD_GAGents_Database.mmd +333 -0
  2. package/package.json +1 -1
  3. package/scripts/MIGRATION_COMPLETE_DOCUMENTATION.md +672 -0
  4. package/scripts/README.md +128 -235
  5. package/scripts/constraints.sql +585 -0
  6. package/scripts/indexes.sql +662 -0
  7. package/scripts/migrate_v1.sql +1227 -0
  8. package/scripts/tables/001_accounts.sql +51 -0
  9. package/scripts/tables/002_users.sql +69 -0
  10. package/scripts/tables/003_people.sql +70 -0
  11. package/scripts/tables/004_tags.sql +62 -0
  12. package/scripts/tables/005_credentials.sql +79 -0
  13. package/scripts/tables/006_agents.sql +70 -0
  14. package/scripts/tables/007_tools.sql +68 -0
  15. package/scripts/tables/008_channels.sql +75 -0
  16. package/scripts/tables/009_leads.sql +85 -0
  17. package/scripts/tables/010_missions.sql +62 -0
  18. package/scripts/tables/011_objectives.sql +68 -0
  19. package/scripts/tables/012_conversations.sql +84 -0
  20. package/scripts/tables/013_objectives_tools.sql +66 -0
  21. package/scripts/tables/014_messages.sql +78 -0
  22. package/scripts/tables/015_companies.sql +77 -0
  23. package/scripts/tables/016_conversations_tags.sql +64 -0
  24. package/scripts/tables/017_leads_tags.sql +64 -0
  25. package/scripts/triggers.sql +497 -0
  26. package/src/modules/accounts/index.js +11 -0
  27. package/src/modules/accounts/properties.js +46 -0
  28. package/src/modules/channels/properties.js +1 -0
  29. package/src/modules/conversations/index.js +1 -1
  30. package/src/modules/conversations/properties.js +29 -26
  31. package/src/modules/credentials/properties.js +2 -2
  32. package/src/modules/leads/properties.js +4 -4
  33. package/src/modules/messages/properties.js +40 -2
  34. package/src/modules/missions/properties.js +1 -0
  35. package/src/modules/objectives/properties.js +1 -18
  36. package/src/modules/objectives_tools/index.js +1 -1
  37. package/src/modules/objectives_tools/properties.js +1 -37
  38. package/src/modules/tools/properties.js +1 -0
  39. package/src/modules/users/index.js +11 -0
  40. package/src/modules/users/properties.js +156 -0
  41. package/src/product.js +4 -0
  42. package/scripts/agents/create_table.sql +0 -43
  43. package/scripts/channels/create_table.sql +0 -48
  44. package/scripts/companies/create_table.sql +0 -52
  45. package/scripts/conversations/add_messages_reference.sql +0 -42
  46. package/scripts/conversations/create_table.sql +0 -55
  47. package/scripts/conversations_tags/create_table.sql +0 -39
  48. package/scripts/credentials/create_table.sql +0 -63
  49. package/scripts/leads/create_table.sql +0 -55
  50. package/scripts/leads_tags/create_table.sql +0 -39
  51. package/scripts/messages/create_table.sql +0 -44
  52. package/scripts/missions/create_table.sql +0 -39
  53. package/scripts/objectives/create_table.sql +0 -47
  54. package/scripts/objectives_tools/create_table.sql +0 -52
  55. package/scripts/people/create_table.sql +0 -51
  56. package/scripts/tags/create_table.sql +0 -38
  57. package/scripts/tools/create_table.sql +0 -43
package/scripts/README.md CHANGED
@@ -1,272 +1,165 @@
1
- # Scripts PostgreSQL - GreatAgents
1
+ # Scripts de Migração GAgents v1.0
2
2
 
3
- Sistema de scripts SQL para criação e manutenção do banco de dados PostgreSQL do projeto GreatAgents.
3
+ Este diretório contém os scripts SQL organizados para migração do banco PostgreSQL v14+ do sistema GAgents.
4
4
 
5
- ## Introdução
5
+ ## 📁 Estrutura de Diretórios
6
6
 
7
- O **gagents-schemas** é um sistema de definição e implementação de esquemas de banco de dados para o GreatAgents. O sistema funciona em duas camadas complementares:
8
-
9
- - **Schemas JavaScript** (`src/modules/`): Definem a estrutura canônica dos dados, propriedades, validações e interfaces
10
- - **Scripts SQL** (`scripts/`): Implementam essas estruturas no PostgreSQL com comandos DDL otimizados
11
-
12
- Os scripts SQL são gerados e mantidos em sincronia com os schemas JavaScript, garantindo consistência entre a definição lógica dos dados e sua implementação física no banco.
13
-
14
- ### Propósito
15
-
16
- Este diretório contém scripts SQL PostgreSQL prontos para produção que criam todas as tabelas necessárias para o funcionamento do sistema GreatAgents, incluindo índices otimizados, comentários de documentação e referências de integridade.
17
-
18
- ## Arquitetura do Sistema
19
-
20
- ### Schemas JavaScript como Fonte da Verdade
21
-
22
- Os schemas JavaScript em [`src/modules/`](../src/modules/) definem:
23
- - Estrutura dos dados e tipos de campos
24
- - Validações e restrições
25
- - Relacionamentos entre entidades
26
- - Configurações de cache e parâmetros
27
- - Interfaces de usuário e labels
28
-
29
- ### Scripts SQL como Implementação
30
-
31
- Os scripts SQL em [`scripts/`](.) implementam:
32
- - Comandos `CREATE TABLE` com tipos PostgreSQL correspondentes
33
- - Índices otimizados para consultas frequentes
34
- - Chaves estrangeiras e integridade referencial
35
- - Comentários detalhados de documentação
36
- - Execução segura com `CREATE IF NOT EXISTS`
37
-
38
- ### Sincronização
39
-
40
- A relação entre os módulos garante que:
41
- - Cada schema JavaScript tem um script SQL correspondente
42
- - Os tipos de dados são consistentes entre as duas representações
43
- - As modificações nos schemas refletem automaticamente nos scripts
44
- - A estrutura permanece sincronizada em todas as camadas
45
-
46
- ## Estrutura dos Dados
47
-
48
- O sistema GreatAgents é organizado em **17 módulos** distribuídos em duas categorias:
49
-
50
- ### Módulos Principais (13)
51
-
52
- | Módulo | Descrição | Dependências |
53
- |--------|-----------|--------------|
54
- | [`accounts`](accounts/) | Contas/organizações do sistema | - |
55
- | [`agents`](agents/) | Agentes de IA e suas configurações | accounts |
56
- | [`channels`](channels/) | Canais de comunicação (WhatsApp, Telegram, etc.) | accounts, credentials |
57
- | [`companies`](companies/) | Empresas dos leads | - |
58
- | [`conversations`](conversations/) | Conversas entre usuários e agentes | accounts, agents, leads_channels |
59
- | [`credentials`](credentials/) | Credenciais de autenticação para integrações | accounts |
60
- | [`leads`](leads/) | Leads/contatos do sistema | accounts, companies |
61
- | [`messages`](messages/) | Mensagens das conversas | accounts, conversations |
62
- | [`missions`](missions/) | Missões/tarefas complexas dos agentes | accounts, agents |
63
- | [`objectives`](objectives/) | Objetivos específicos dentro das missões | accounts, agents, missions |
64
- | [`tags`](tags/) | Sistema de tags para categorização | accounts |
65
- | [`tools`](tools/) | Ferramentas disponíveis para os agentes | accounts, credentials |
66
- | [`users`](users/) | Usuários do sistema | accounts |
67
-
68
- ### Tabelas de Relacionamento (4)
69
-
70
- | Módulo | Descrição | Relaciona |
71
- |--------|-----------|-----------|
72
- | [`conversations_tags`](conversations_tags/) | Tags das conversas | conversations ↔ tags |
73
- | [`leads_channels`](leads_channels/) | Canais dos leads | leads ↔ channels |
74
- | [`leads_tags`](leads_tags/) | Tags dos leads | leads ↔ tags |
75
- | [`objectives_tools`](objectives_tools/) | Ferramentas dos objetivos | objectives ↔ tools |
7
+ ```
8
+ gagents-schemas/scripts/
9
+ ├── README.md # Este arquivo
10
+ ├── migrate_v1.sql # Script principal de migração
11
+ ├── indexes.sql # Criação de índices otimizados
12
+ ├── constraints.sql # Constraints e chaves estrangeiras
13
+ ├── triggers.sql # Triggers para automação
14
+ └── tables/ # Scripts de criação das tabelas
15
+ ├── 001_accounts.sql # Tabela base (sem dependências)
16
+ ├── 002_users.sql # Depende de: accounts
17
+ ├── 003_people.sql # Depende de: accounts
18
+ ├── 004_tags.sql # Depende de: accounts
19
+ ├── 005_credentials.sql # Depende de: accounts
20
+ ├── 006_agents.sql # Depende de: accounts
21
+ ├── 007_tools.sql # Depende de: accounts
22
+ ├── 008_channels.sql # Depende de: credentials
23
+ ├── 009_leads.sql # Depende de: people
24
+ ├── 010_missions.sql # Depende de: agents
25
+ ├── 011_objectives.sql # Depende de: agents, missions
26
+ ├── 012_conversations.sql # Sem FK inicial (ref. cíclica)
27
+ ├── 013_objectives_tools.sql # Depende de: objectives, tools
28
+ ├── 014_messages.sql # Depende de: conversations
29
+ ├── 015_companies.sql # Depende de: leads
30
+ ├── 016_conversations_tags.sql # Depende de: conversations, tags
31
+ └── 017_leads_tags.sql # Depende de: leads, tags
32
+ ```
76
33
 
77
- ### Categorização Funcional
34
+ ## 🎯 Ordem de Dependências
78
35
 
79
- **Núcleo do Sistema:**
80
- - `accounts` - Base organizacional
81
- - `users` - Gestão de usuários
82
- - `credentials` - Autenticação
36
+ ### Tabelas Base (Sem Dependências)
37
+ - **001_accounts**: Tabela central do sistema
83
38
 
84
- **Agentes e IA:**
85
- - `agents` - Agentes de IA
86
- - `missions` - Tarefas complexas
87
- - `objectives` - Objetivos específicos
88
- - `tools` - Ferramentas disponíveis
39
+ ### Nível 1 (Dependem de accounts)
40
+ - **002_users**: Usuários do sistema
41
+ - **003_people**: Pessoas cadastradas
42
+ - **004_tags**: Sistema de etiquetas
43
+ - **005_credentials**: Credenciais de integração
44
+ - **006_agents**: Agentes inteligentes
45
+ - **007_tools**: Ferramentas disponíveis
89
46
 
90
- **Comunicação:**
91
- - `channels` - Canais de comunicação
92
- - `conversations` - Conversas
93
- - `messages` - Mensagens
47
+ ### Nível 2 (Dependem do Nível 1)
48
+ - **008_channels**: Canais de comunicação (credentials)
49
+ - **009_leads**: Leads comerciais (people)
50
+ - **010_missions**: Missões dos agentes (agents)
94
51
 
95
- **Gestão de Leads:**
96
- - `leads` - Contatos
97
- - `companies` - Empresas
98
- - `leads_channels` - Associações lead-canal
52
+ ### Nível 3 (Dependem do Nível 2)
53
+ - **011_objectives**: Objetivos das missões (agents, missions)
54
+ - **012_conversations**: Conversas (sem FK inicial para resolver ciclo)
99
55
 
100
- **Organização:**
101
- - `tags` - Sistema de categorização
102
- - `conversations_tags` - Tags de conversas
103
- - `leads_tags` - Tags de leads
56
+ ### Nível 4 (Dependem do Nível 3)
57
+ - **013_objectives_tools**: Relacionamento N:N (objectives, tools)
58
+ - **014_messages**: Mensagens das conversas (conversations)
59
+ - **015_companies**: Empresas dos leads (leads)
104
60
 
105
- ## Como Usar
61
+ ### Nível 5 (Tabelas de Relacionamento)
62
+ - **016_conversations_tags**: Relacionamento N:N (conversations, tags)
63
+ - **017_leads_tags**: Relacionamento N:N (leads, tags)
106
64
 
107
- ### Pré-requisitos
65
+ ## 🔄 Referência Cíclica Resolvida
108
66
 
109
- - PostgreSQL 12 ou superior
110
- - Permissões para criação de tabelas e índices
111
- - Cliente `psql` ou ferramenta equivalente
67
+ **Problema**: `conversations` `messages`
68
+ - conversations pode referenciar a última mensagem
69
+ - messages sempre referenciam a conversa
112
70
 
113
- ### Instalação Rápida
71
+ **Solução Implementada**:
72
+ 1. Criar `conversations` sem FK para messages (script 012)
73
+ 2. Criar `messages` com FK para conversations (script 014)
74
+ 3. Adicionar FK de conversations para messages no `constraints.sql`
114
75
 
115
- Execute todos os scripts de uma vez:
76
+ ## 🚀 Como Executar a Migração
116
77
 
78
+ ### Opção 1: Script Principal (Recomendado)
117
79
  ```bash
118
- # Navegar para o diretório de scripts
119
- cd gagents-schemas/scripts
120
-
121
- # Executar todos os 17 scripts
122
- for module in accounts agents channels companies conversations conversations_tags credentials leads leads_channels leads_tags messages missions objectives objectives_tools tags tools users; do
123
- echo "Criando tabela: $module"
124
- psql -d sua_base_dados -f "$module/create_table.sql"
125
- done
80
+ psql -d sua_database -f migrate_v1.sql
126
81
  ```
127
82
 
128
- ### Instalação Respeitando Dependências
129
-
130
- Para uma nova instalação, execute na ordem recomendada:
131
-
83
+ ### Opção 2: Execução Manual
132
84
  ```bash
133
- # 1. Tabelas base (sem dependências)
134
- psql -d sua_base_dados -f accounts/create_table.sql
135
- psql -d sua_base_dados -f tags/create_table.sql
136
- psql -d sua_base_dados -f companies/create_table.sql
137
-
138
- # 2. Tabelas dependentes de accounts
139
- psql -d sua_base_dados -f users/create_table.sql
140
- psql -d sua_base_dados -f credentials/create_table.sql
141
- psql -d sua_base_dados -f agents/create_table.sql
142
- psql -d sua_base_dados -f leads/create_table.sql
143
-
144
- # 3. Tabelas com múltiplas dependências
145
- psql -d sua_base_dados -f tools/create_table.sql
146
- psql -d sua_base_dados -f channels/create_table.sql
147
- psql -d sua_base_dados -f missions/create_table.sql
148
- psql -d sua_base_dados -f leads_channels/create_table.sql
149
-
150
- # 4. Tabelas de nível superior
151
- psql -d sua_base_dados -f conversations/create_table.sql
152
- psql -d sua_base_dados -f messages/create_table.sql
153
- psql -d sua_base_dados -f objectives/create_table.sql
154
-
155
- # 5. Tabelas de relacionamento
156
- psql -d sua_base_dados -f conversations_tags/create_table.sql
157
- psql -d sua_base_dados -f leads_tags/create_table.sql
158
- psql -d sua_base_dados -f objectives_tools/create_table.sql
85
+ # 1. Executar tabelas em ordem
86
+ psql -d sua_database -f tables/001_accounts.sql
87
+ psql -d sua_database -f tables/002_users.sql
88
+ # ... continuar na ordem até 017_leads_tags.sql
89
+
90
+ # 2. Executar estruturas auxiliares
91
+ psql -d sua_database -f indexes.sql
92
+ psql -d sua_database -f constraints.sql
93
+ psql -d sua_database -f triggers.sql
159
94
  ```
160
95
 
161
- ### Execução Individual
96
+ ## 📋 Pré-requisitos
162
97
 
163
- Para executar scripts específicos:
98
+ - **PostgreSQL**: Versão 14 ou superior
99
+ - **Permissões**: CREATE TABLE, CREATE INDEX, CREATE TRIGGER
100
+ - **Extensões**: Verificadas automaticamente nos scripts
164
101
 
165
- ```bash
166
- # Exemplo: criar apenas a tabela de agentes
167
- psql -d sua_base_dados -f agents/create_table.sql
102
+ ## 🔍 Verificações Automáticas
168
103
 
169
- # Exemplo: recriar múltiplas tabelas
170
- psql -d sua_base_dados -f accounts/create_table.sql
171
- psql -d sua_base_dados -f agents/create_table.sql
172
- psql -d sua_base_dados -f conversations/create_table.sql
173
- ```
104
+ Cada script inclui:
105
+ - Verificação da versão do PostgreSQL
106
+ - Logs informativos de progresso
107
+ - Verificação de sucesso na criação
108
+ - ✅ Tratamento de erros
174
109
 
175
- ### Verificação da Instalação
176
-
177
- Após a execução, verifique se todas as tabelas foram criadas:
178
-
179
- ```sql
180
- -- Verificar contagem de tabelas criadas
181
- SELECT COUNT(*) as total_tabelas
182
- FROM information_schema.tables
183
- WHERE table_schema = 'public'
184
- AND table_name IN (
185
- 'accounts', 'agents', 'channels', 'companies', 'conversations',
186
- 'conversations_tags', 'credentials', 'leads', 'leads_channels',
187
- 'leads_tags', 'messages', 'missions', 'objectives',
188
- 'objectives_tools', 'tags', 'tools', 'users'
189
- );
190
- -- Resultado esperado: 17
191
-
192
- -- Verificar integridade referencial
193
- SELECT
194
- tc.table_name,
195
- kcu.column_name,
196
- ccu.table_name AS tabela_referenciada,
197
- ccu.column_name AS coluna_referenciada
198
- FROM information_schema.table_constraints AS tc
199
- JOIN information_schema.key_column_usage AS kcu
200
- ON tc.constraint_name = kcu.constraint_name
201
- JOIN information_schema.constraint_column_usage AS ccu
202
- ON ccu.constraint_name = tc.constraint_name
203
- WHERE tc.constraint_type = 'FOREIGN KEY'
204
- ORDER BY tc.table_name;
205
- ```
206
-
207
- ## Informações Técnicas
208
-
209
- ### Características dos Scripts
210
-
211
- **Execução Segura:**
212
- - Todos os scripts usam `CREATE IF NOT EXISTS`
213
- - Podem ser executados múltiplas vezes sem riscos
214
- - Não há perda de dados em re-execuções
110
+ ## 📝 Status Atual
215
111
 
216
- **Índices Automáticos:**
217
- - Todos os índices usam `CREATE INDEX IF NOT EXISTS`
218
- - Índices otimizados para consultas frequentes
219
- - Cobertura de chaves estrangeiras e campos de busca
112
+ ### ✅ Implementado
113
+ - [x] Estrutura de diretórios
114
+ - [x] 17 arquivos de tabelas com templates
115
+ - [x] Scripts de índices, constraints e triggers (templates)
116
+ - [x] Script principal de migração
117
+ - [x] Documentação completa
220
118
 
221
- **Documentação Integrada:**
222
- - Comentários detalhados em todas as tabelas e colunas
223
- - Descrição do propósito de cada campo
224
- - Explicação de relacionamentos e dependências
119
+ ### 🔄 Próximas Etapas
120
+ - [ ] Implementar conteúdo SQL das tabelas
121
+ - [ ] Definir índices específicos para performance
122
+ - [ ] Implementar constraints de integridade
123
+ - [ ] Criar triggers de auditoria e automação
124
+ - [ ] Testes de migração em ambiente de desenvolvimento
225
125
 
226
- ### Campos Automáticos Padrão
227
-
228
- Todas as tabelas incluem os seguintes campos automáticos:
229
-
230
- ```sql
231
- id SERIAL PRIMARY KEY, -- Chave primária auto-incremento
232
- deleted BOOLEAN DEFAULT false NOT NULL, -- Exclusão lógica
233
- datetime_add TIMESTAMP DEFAULT CURRENT_TIMESTAMP NOT NULL, -- Data de criação
234
- datetime_alt TIMESTAMP DEFAULT CURRENT_TIMESTAMP NOT NULL, -- Data de alteração
235
- datetime_del TIMESTAMP NULL -- Data de exclusão lógica
236
- ```
126
+ ## 📚 Convenções Utilizadas
237
127
 
238
- ### Convenções de Nomenclatura
128
+ ### Nomenclatura
129
+ - **Arquivos**: Numerados sequencialmente (001-017)
130
+ - **Tabelas**: Snake_case (lowercase com underscores)
131
+ - **Relacionamentos**: `tabela1_tabela2` para N:N
239
132
 
240
- **Tabelas:** Snake case no plural (`conversations`, `leads_tags`)
241
- **Colunas:** Snake case no singular (`id_account`, `datetime_add`)
242
- **Índices:** Prefixo `idx_` + nome da tabela + campo(s) (`idx_agents_id_account`)
243
- **Chaves estrangeiras:** Prefixo `id_` + nome da tabela referenciada (`id_account`, `id_conversation`)
133
+ ### Headers Padronizados
134
+ Todos os scripts incluem:
135
+ - Identificação do arquivo
136
+ - Descrição e dependências
137
+ - Informações de versionamento
138
+ - Verificações de segurança
244
139
 
245
- ### Tipos de Dados Utilizados
140
+ ### Logs Estruturados
141
+ - `RAISE NOTICE` para informações de progresso
142
+ - `RAISE EXCEPTION` para erros críticos
143
+ - Timestamps em todas as mensagens
246
144
 
247
- | Tipo PostgreSQL | Uso | Exemplo |
248
- |------------------|-----|---------|
249
- | `SERIAL` | Chaves primárias auto-incremento | `id` |
250
- | `INTEGER` | Chaves estrangeiras e números | `id_account`, `verified` |
251
- | `VARCHAR(n)` | Textos com limite definido | `name VARCHAR(100)` |
252
- | `TEXT` | Textos longos sem limite | `prompt`, `content` |
253
- | `BOOLEAN` | Valores verdadeiro/falso | `deleted` |
254
- | `TIMESTAMP` | Datas e horários | `datetime_add` |
145
+ ## 🔧 Manutenção
255
146
 
256
- ### Relacionamentos e Integridade
147
+ Para adicionar novas tabelas:
148
+ 1. Criar arquivo com numeração sequencial apropriada
149
+ 2. Seguir template de header padrão
150
+ 3. Atualizar dependências no `migrate_v1.sql`
151
+ 4. Documentar no README.md
257
152
 
258
- **Cascata de Exclusão:**
259
- - Configurada com `ON DELETE CASCADE` onde apropriado
260
- - Garante limpeza automática de registros dependentes
153
+ ## 📞 Suporte
261
154
 
262
- **Restrições de Integridade:**
263
- - Todas as chaves estrangeiras são validadas
264
- - Campos obrigatórios definidos com `NOT NULL`
265
- - Valores padrão configurados onde aplicável
155
+ Para dúvidas sobre a estrutura de migração:
156
+ - Verificar logs de execução dos scripts
157
+ - Consultar dependências neste README
158
+ - Analisar ordem de execução no `migrate_v1.sql`
266
159
 
267
- ### Compatibilidade
160
+ ---
268
161
 
269
- **PostgreSQL:** 12, 13, 14, 15, 16+
270
- **Encoding:** UTF-8
271
- **Timezone:** Suporte completo a fusos horários
272
- **Collation:** Compatível com diferentes locales
162
+ **Versão**: 1.0
163
+ **Data**: 2025-09-20
164
+ **Autor**: Sistema de Migração GAgents
165
+ **PostgreSQL**: v14+