feat(v1.5.2): Execute database migrations and complete setup
- Execute all 6 migrations on Desk CRM production database - Create missing tables: cr_lsps, cr_agent_lsps, cr_lsp_usage - Create archive tables: cr_*_usage_archive (4 tables) - Create system tables: cr_migrations, cr_maintenance_log - Make all scripts executable (chmod +x) - Total cr_* tables: 38 Migration files: - 001_initial_schema.sql - 002_add_lsps.sql - 003_add_relationships.sql - 004_add_telemetry.sql - 005_add_archive_tables.sql - 006_add_maintenance_log.sql Scripts: - session-init.sh, session-end.sh - inject-context.sh, inject-agent-context.sh - record-usage.sh, db-backup.sh, sync-to-mysql.sh Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
This commit is contained in:
198
commands/infra-sync.md
Normal file
198
commands/infra-sync.md
Normal file
@@ -0,0 +1,198 @@
|
||||
---
|
||||
name: sync
|
||||
description: >
|
||||
Sincronização completa: entidades + relacionamentos.
|
||||
Compara ficheiros locais com MySQL e corrige inconsistências.
|
||||
argument-hint: "[--dry-run] [--force] [--entities-only] [--relationships-only]"
|
||||
---
|
||||
|
||||
# /descomplicar:sync
|
||||
|
||||
Sincronização completa: entidades + relacionamentos.
|
||||
|
||||
## Objectivo
|
||||
|
||||
Garantir que ficheiros locais, BD MySQL e relacionamentos estão todos sincronizados e consistentes.
|
||||
|
||||
## Instruções
|
||||
|
||||
Quando invocado, deves:
|
||||
|
||||
### Fase 1: Sync Entidades Core
|
||||
|
||||
1. **Ler estado local** dos ficheiros JSON:
|
||||
```
|
||||
~/.claude/sdks/_resources/agents.json
|
||||
~/.claude/sdks/_resources/skills.json
|
||||
~/.claude/sdks/_resources/mcps.json
|
||||
~/.claude/sdks/_registry.json
|
||||
```
|
||||
|
||||
2. **Comparar com MySQL** (Core Tables):
|
||||
```sql
|
||||
SELECT slug, name, category, status FROM cr_agents;
|
||||
SELECT slug, name, category, status FROM cr_skills;
|
||||
SELECT slug, name, transport, status FROM cr_mcps;
|
||||
SELECT slug, name, status FROM cr_sdks;
|
||||
```
|
||||
|
||||
3. **Aplicar diferenças** nas entidades:
|
||||
- Novos em ficheiros → INSERT
|
||||
- Diferentes → UPDATE
|
||||
- Removidos → Marcar inactive
|
||||
|
||||
### Fase 2: Sync Relacionamentos
|
||||
|
||||
4. **Verificar consistência de relacionamentos**:
|
||||
|
||||
**cr_agent_mcps (Agent ↔ MCP):**
|
||||
```sql
|
||||
-- Verificar órfãos (agent_id que não existe em cr_agents)
|
||||
SELECT am.* FROM cr_agent_mcps am
|
||||
LEFT JOIN cr_agents a ON am.agent_id = a.id
|
||||
WHERE a.id IS NULL;
|
||||
|
||||
-- Verificar órfãos (mcp_id que não existe em cr_mcps)
|
||||
SELECT am.* FROM cr_agent_mcps am
|
||||
LEFT JOIN cr_mcps m ON am.mcp_id = m.id
|
||||
WHERE m.id IS NULL;
|
||||
```
|
||||
|
||||
**cr_sdk_agents (SDK ↔ Agent):**
|
||||
```sql
|
||||
SELECT sa.* FROM cr_sdk_agents sa
|
||||
LEFT JOIN cr_sdks s ON sa.sdk_id = s.id
|
||||
LEFT JOIN cr_agents a ON sa.agent_id = a.id
|
||||
WHERE s.id IS NULL OR a.id IS NULL;
|
||||
```
|
||||
|
||||
**cr_sdk_skills (SDK ↔ Skill):**
|
||||
```sql
|
||||
SELECT ss.* FROM cr_sdk_skills ss
|
||||
LEFT JOIN cr_sdks s ON ss.sdk_id = s.id
|
||||
LEFT JOIN cr_skills sk ON ss.skill_id = sk.id
|
||||
WHERE s.id IS NULL OR sk.id IS NULL;
|
||||
```
|
||||
|
||||
**cr_sdk_mcps (SDK ↔ MCP):**
|
||||
```sql
|
||||
SELECT sm.* FROM cr_sdk_mcps sm
|
||||
LEFT JOIN cr_sdks s ON sm.sdk_id = s.id
|
||||
LEFT JOIN cr_mcps m ON sm.mcp_id = m.id
|
||||
WHERE s.id IS NULL OR m.id IS NULL;
|
||||
```
|
||||
|
||||
5. **Limpar órfãos** (com confirmação se > 10):
|
||||
```sql
|
||||
DELETE FROM cr_agent_mcps WHERE agent_id NOT IN (SELECT id FROM cr_agents);
|
||||
DELETE FROM cr_agent_mcps WHERE mcp_id NOT IN (SELECT id FROM cr_mcps);
|
||||
-- Repetir para todas as tabelas de relacionamento
|
||||
```
|
||||
|
||||
### Fase 3: Sync MCP Tools
|
||||
|
||||
6. **Actualizar cr_mcp_tools**:
|
||||
```sql
|
||||
-- Para cada MCP activo, verificar se tools estão mapeadas
|
||||
SELECT m.slug, COUNT(mt.id) as tools_count
|
||||
FROM cr_mcps m
|
||||
LEFT JOIN cr_mcp_tools mt ON m.id = mt.mcp_id
|
||||
WHERE m.status = 'active'
|
||||
GROUP BY m.id;
|
||||
```
|
||||
|
||||
### Fase 4: Verificar Intelligence Layer
|
||||
|
||||
7. **Validar Decision Trees**:
|
||||
```sql
|
||||
-- Verificar se agentes referenciados existem
|
||||
SELECT dt.* FROM cr_decision_trees dt
|
||||
LEFT JOIN cr_agents a ON dt.agent_id = a.id
|
||||
WHERE a.id IS NULL;
|
||||
```
|
||||
|
||||
8. **Actualizar recommendations** se necessário:
|
||||
```sql
|
||||
-- Marcar recommendations implementadas
|
||||
UPDATE cr_recommendations
|
||||
SET status = 'implemented', implemented_at = NOW()
|
||||
WHERE status = 'pending'
|
||||
AND component_type = 'agent'
|
||||
AND component_id IN (SELECT slug FROM cr_agents WHERE status = 'active');
|
||||
```
|
||||
|
||||
### Fase 5: Registar Sync
|
||||
|
||||
9. **Log da operação**:
|
||||
```sql
|
||||
INSERT INTO cr_infrastructure_sync
|
||||
(sync_type, entities_synced, relationships_checked, orphans_removed, status, created_at)
|
||||
VALUES ('full', X, Y, Z, 'success', NOW());
|
||||
```
|
||||
|
||||
10. **Apresentar relatório**:
|
||||
|
||||
```
|
||||
╔══════════════════════════════════════════════════════════════════════╗
|
||||
║ SYNC REPORT - 2026-02-04 15:35 ║
|
||||
╠══════════════════════════════════════════════════════════════════════╣
|
||||
║ FASE 1: ENTIDADES CORE ║
|
||||
║ ─────────────────────────────────────────────────────────────────── ║
|
||||
║ Componente │ Local │ MySQL │ Adicionados │ Actualizados │ Status ║
|
||||
║ Agents │ 46 │ 46 │ 0 │ 2 │ ✓ ║
|
||||
║ Skills │ 54 │ 54 │ 0 │ 0 │ ✓ ║
|
||||
║ MCPs │ 33 │ 33 │ 0 │ 1 │ ✓ ║
|
||||
║ SDKs │ 29 │ 29 │ 0 │ 0 │ ✓ ║
|
||||
╠══════════════════════════════════════════════════════════════════════╣
|
||||
║ FASE 2: RELACIONAMENTOS ║
|
||||
║ ─────────────────────────────────────────────────────────────────── ║
|
||||
║ Tabela │ Total │ Órfãos │ Removidos │ Status ║
|
||||
║ cr_agent_mcps │ 483 │ 0 │ 0 │ ✓ ║
|
||||
║ cr_sdk_agents │ 131 │ 0 │ 0 │ ✓ ║
|
||||
║ cr_sdk_skills │ 75 │ 0 │ 0 │ ✓ ║
|
||||
║ cr_sdk_mcps │ 56 │ 0 │ 0 │ ✓ ║
|
||||
║ cr_agent_skills │ 23 │ 0 │ 0 │ ✓ ║
|
||||
║ cr_skill_mcps │ 45 │ 0 │ 0 │ ✓ ║
|
||||
║ cr_agent_collabs │ 12 │ 0 │ 0 │ ✓ ║
|
||||
╠══════════════════════════════════════════════════════════════════════╣
|
||||
║ FASE 3: MCP TOOLS ║
|
||||
║ ─────────────────────────────────────────────────────────────────── ║
|
||||
║ MCPs com tools mapeadas: 33/33 (822 tools total) ║
|
||||
╠══════════════════════════════════════════════════════════════════════╣
|
||||
║ FASE 4: INTELLIGENCE ║
|
||||
║ ─────────────────────────────────────────────────────────────────── ║
|
||||
║ Decision Trees válidas: 5/5 ║
|
||||
║ Recommendations actualizadas: 1 ║
|
||||
╠══════════════════════════════════════════════════════════════════════╣
|
||||
║ RESULTADO: Sync completo, 0 problemas ║
|
||||
║ PRÓXIMO SYNC: Automático em 6h (cron) ║
|
||||
╚══════════════════════════════════════════════════════════════════════╝
|
||||
```
|
||||
|
||||
## Sintaxe
|
||||
|
||||
```
|
||||
/descomplicar:sync [options]
|
||||
```
|
||||
|
||||
| Opção | Descrição | Default |
|
||||
|-------|-----------|---------|
|
||||
| `--dry-run` | Mostrar alterações sem aplicar | false |
|
||||
| `--force` | Aplicar sem confirmação | false |
|
||||
| `--entities-only` | Sync apenas entidades core | false |
|
||||
| `--relationships-only` | Sync apenas relacionamentos | false |
|
||||
| `--fix-orphans` | Remover órfãos automaticamente | false |
|
||||
|
||||
## Output Esperado
|
||||
|
||||
```
|
||||
╔══════════════════════════════════════════════════════════════════════╗
|
||||
║ SYNC REPORT - 2026-02-04 15:35 ║
|
||||
╠══════════════════════════════════════════════════════════════════════╣
|
||||
║ ENTIDADES: Agents 46 ✓ | Skills 54 ✓ | MCPs 33 ✓ | SDKs 29 ✓ ║
|
||||
║ RELACIONAMENTOS: 825 verificados, 0 órfãos removidos ║
|
||||
║ INTELLIGENCE: 5 decision trees válidas ║
|
||||
╠══════════════════════════════════════════════════════════════════════╣
|
||||
║ RESULTADO: Sync completo, 0 problemas ║
|
||||
╚══════════════════════════════════════════════════════════════════════╝
|
||||
```
|
||||
Reference in New Issue
Block a user