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:
167
commands/db-cleanup.md
Normal file
167
commands/db-cleanup.md
Normal file
@@ -0,0 +1,167 @@
|
||||
---
|
||||
name: db-cleanup
|
||||
description: >
|
||||
Limpeza de órfãos nas tabelas de relacionamento cr_*.
|
||||
Remove referências inválidas com backup automático.
|
||||
argument-hint: "[--table=X] [--dry-run] [--no-backup]"
|
||||
---
|
||||
|
||||
# /descomplicar:db-cleanup
|
||||
|
||||
Detecta e remove registos órfãos nas tabelas de relacionamento da infraestrutura Claude Code.
|
||||
|
||||
## Objectivo
|
||||
|
||||
Garantir integridade referencial das tabelas cr_* removendo registos que apontam para entidades inexistentes (órfãos).
|
||||
|
||||
## Sintaxe
|
||||
|
||||
```
|
||||
/descomplicar:db-cleanup [options]
|
||||
```
|
||||
|
||||
| Opção | Descrição | Default |
|
||||
|-------|-----------|---------|
|
||||
| `--table=X` | Limpar apenas tabela específica | todas |
|
||||
| `--dry-run` | Mostrar o que seria removido sem executar | false |
|
||||
| `--no-backup` | Não criar backup (não recomendado) | false |
|
||||
| `--force` | Não pedir confirmação | false |
|
||||
|
||||
## Output Esperado
|
||||
|
||||
```
|
||||
╔════════════════════════════════════════════════════════════╗
|
||||
║ DB CLEANUP ║
|
||||
╠════════════════════════════════════════════════════════════╣
|
||||
║ Backup criado: cr_orphans_backup_20260204 ║
|
||||
║ cr_agent_mcps: 12 → 0 órfãos ✓ ║
|
||||
║ cr_agent_skills: 3 → 0 órfãos ✓ ║
|
||||
║ cr_skill_mcps: 5 → 0 órfãos ✓ ║
|
||||
╠════════════════════════════════════════════════════════════╣
|
||||
║ TOTAL REMOVIDO: 20 órfãos | Integridade: ✓ OK ║
|
||||
╚════════════════════════════════════════════════════════════╝
|
||||
```
|
||||
|
||||
## Tabelas Verificadas
|
||||
|
||||
| Opção | Descrição | Default |
|
||||
|-------|-----------|---------|
|
||||
| `--table=X` | Limpar apenas tabela específica | todas |
|
||||
| `--dry-run` | Mostrar o que seria removido sem executar | false |
|
||||
| `--no-backup` | Não criar backup (não recomendado) | false |
|
||||
| `--force` | Não pedir confirmação | false |
|
||||
|
||||
## Tabelas Verificadas
|
||||
|
||||
| Tabela | FK 1 | FK 2 |
|
||||
|--------|------|------|
|
||||
| `cr_agent_mcps` | agent_id → cr_agents | mcp_id → cr_mcps |
|
||||
| `cr_agent_lsps` | agent_id → cr_agents | lsp_id → cr_lsps |
|
||||
| `cr_agent_skills` | agent_id → cr_agents | skill_id → cr_skills |
|
||||
| `cr_skill_mcps` | skill_id → cr_skills | mcp_id → cr_mcps |
|
||||
| `cr_sdk_agents` | sdk_id → cr_sdks | agent_id → cr_agents |
|
||||
| `cr_sdk_skills` | sdk_id → cr_sdks | skill_id → cr_skills |
|
||||
| `cr_sdk_mcps` | sdk_id → cr_sdks | mcp_id → cr_mcps |
|
||||
| `cr_agent_collaborations` | agent_id → cr_agents | collaborator_id → cr_agents |
|
||||
|
||||
## Workflow
|
||||
|
||||
```
|
||||
1. DETECTAR órfãos em cada tabela
|
||||
2. CRIAR backup das linhas a remover
|
||||
3. MOSTRAR resumo ao utilizador
|
||||
4. PEDIR confirmação (se não --force)
|
||||
5. EXECUTAR DELETE em transação
|
||||
6. VALIDAR integridade
|
||||
7. REPORTAR resultado
|
||||
```
|
||||
|
||||
## Exemplos
|
||||
|
||||
### Dry-run (ver sem executar)
|
||||
```bash
|
||||
/descomplicar:db-cleanup --dry-run
|
||||
```
|
||||
|
||||
Output:
|
||||
```
|
||||
╔════════════════════════════════════════════════════════════╗
|
||||
║ DB CLEANUP - DRY RUN ║
|
||||
╠════════════════════════════════════════════════════════════╣
|
||||
║ cr_agent_mcps: 12 órfãos detectados ║
|
||||
║ cr_agent_lsps: 0 órfãos detectados ║
|
||||
║ cr_agent_skills: 3 órfãos detectados ║
|
||||
║ cr_skill_mcps: 5 órfãos detectados ║
|
||||
║ cr_sdk_agents: 0 órfãos detectados ║
|
||||
║ cr_sdk_skills: 2 órfãos detectados ║
|
||||
║ cr_sdk_mcps: 0 órfãos detectados ║
|
||||
║ cr_agent_collaborations: 1 órfão detectado ║
|
||||
╠════════════════════════════════════════════════════════════╣
|
||||
║ TOTAL: 23 órfãos a remover ║
|
||||
║ Executar sem --dry-run para limpar ║
|
||||
╚════════════════════════════════════════════════════════════╝
|
||||
```
|
||||
|
||||
### Limpeza completa
|
||||
```bash
|
||||
/descomplicar:db-cleanup
|
||||
```
|
||||
|
||||
Output:
|
||||
```
|
||||
╔════════════════════════════════════════════════════════════╗
|
||||
║ DB CLEANUP ║
|
||||
╠════════════════════════════════════════════════════════════╣
|
||||
║ Backup criado: cr_orphans_backup_20260204_163500 ║
|
||||
╠════════════════════════════════════════════════════════════╣
|
||||
║ cr_agent_mcps: 12 → 0 órfãos ✓ ║
|
||||
║ cr_agent_skills: 3 → 0 órfãos ✓ ║
|
||||
║ cr_skill_mcps: 5 → 0 órfãos ✓ ║
|
||||
║ cr_sdk_skills: 2 → 0 órfãos ✓ ║
|
||||
║ cr_agent_collaborations: 1 → 0 órfãos ✓ ║
|
||||
╠════════════════════════════════════════════════════════════╣
|
||||
║ TOTAL REMOVIDO: 23 órfãos ║
|
||||
║ Integridade: ✓ OK ║
|
||||
╚════════════════════════════════════════════════════════════╝
|
||||
```
|
||||
|
||||
### Tabela específica
|
||||
```bash
|
||||
/descomplicar:db-cleanup --table=cr_agent_mcps
|
||||
```
|
||||
|
||||
## SQL Executado
|
||||
|
||||
```sql
|
||||
-- Detecção (para cada tabela)
|
||||
SELECT COUNT(*) as orphans FROM cr_agent_mcps am
|
||||
LEFT JOIN cr_agents a ON am.agent_id = a.id
|
||||
LEFT JOIN cr_mcps m ON am.mcp_id = m.id
|
||||
WHERE a.id IS NULL OR m.id IS NULL;
|
||||
|
||||
-- Backup
|
||||
CREATE TABLE cr_orphans_backup_YYYYMMDD_HHMMSS AS
|
||||
SELECT 'cr_agent_mcps' as source_table, am.*
|
||||
FROM cr_agent_mcps am
|
||||
LEFT JOIN cr_agents a ON am.agent_id = a.id
|
||||
LEFT JOIN cr_mcps m ON am.mcp_id = m.id
|
||||
WHERE a.id IS NULL OR m.id IS NULL;
|
||||
|
||||
-- Limpeza
|
||||
DELETE FROM cr_agent_mcps
|
||||
WHERE agent_id NOT IN (SELECT id FROM cr_agents)
|
||||
OR mcp_id NOT IN (SELECT id FROM cr_mcps);
|
||||
```
|
||||
|
||||
## Integração
|
||||
|
||||
- **Skill**: db-maintenance-manager
|
||||
- **MCP**: desk-crm-v3
|
||||
- **Relacionado**: /descomplicar:status (detecta órfãos)
|
||||
|
||||
## Segurança
|
||||
|
||||
- Backup SEMPRE criado antes de DELETE (excepto --no-backup)
|
||||
- Operações em transação (rollback se erro)
|
||||
- Log em cr_maintenance_log
|
||||
- Não remove dados de entidades (apenas relacionamentos)
|
||||
Reference in New Issue
Block a user