Files
Emanuel Almeida 692475a315 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>
2026-02-04 16:18:02 +00:00

9.7 KiB

name, description, argument-hint
name description argument-hint
db-archive Archiving de dados de telemetria antigos. Move registos >90 dias para tabelas _archive. [--days=N] [--table=X] [--dry-run] [--delete-archived]

/descomplicar:db-archive

Move dados de telemetria antigos para tabelas de arquivo, mantendo as tabelas principais optimizadas.

Objectivo

Mover registos de telemetria antigos (>90 dias) para tabelas _archive, mantendo as tabelas activas optimizadas.

Sintaxe

/descomplicar:db-archive [options]
Opção Descrição Default
--days=N Arquivar registos com mais de N dias 90
--table=X Arquivar apenas tabela específica todas
--dry-run Mostrar o que seria arquivado sem executar false
--delete-archived Apagar dados arquivados (após backup) false
--force Não pedir confirmação false

Output Esperado

╔════════════════════════════════════════════════════════════╗
║  DB ARCHIVE                                                ║
╠════════════════════════════════════════════════════════════╣
║  Threshold: 90 dias                                        ║
║  cr_agent_usage:      15.234 → archive   ✓                 ║
║  cr_skill_usage:      22.456 → archive   ✓                 ║
║  cr_mcp_tool_usage:    8.901 → archive   ✓                 ║
╠════════════════════════════════════════════════════════════╣
║  TOTAL ARCHIVED: 46.591 registos | ~6.9 MB libertados      ║
╚════════════════════════════════════════════════════════════╝

Tabelas de Telemetria

Tabela Activa Tabela Archive Critério
cr_agent_usage cr_agent_usage_archive created_at < N dias
cr_skill_usage cr_skill_usage_archive created_at < N dias
cr_mcp_tool_usage cr_mcp_tool_usage_archive created_at < N dias
cr_lsp_usage cr_lsp_usage_archive created_at < N dias

Workflow

1. VERIFICAR tabelas archive existem (criar se necessário)
2. CONTAR registos a arquivar
3. MOSTRAR resumo ao utilizador
4. COPIAR para tabelas _archive
5. VERIFICAR integridade (count match)
6. ELIMINAR da tabela principal
7. REGISTAR em cr_maintenance_log

Exemplos

Dry-run (ver sem executar)

/descomplicar:db-archive --dry-run

Output:

╔════════════════════════════════════════════════════════════════╗
║  DB ARCHIVE - DRY RUN                                          ║
╠════════════════════════════════════════════════════════════════╣
║  Threshold: 90 dias (antes de 2025-11-06)                      ║
╠════════════════════════════════════════════════════════════════╣
║  Tabela                    Registos    Oldest          Size    ║
║  ─────────────────────────────────────────────────────────────║
║  cr_agent_usage            15.234      2025-08-15      2.1 MB  ║
║  cr_skill_usage            22.456      2025-08-20      3.4 MB  ║
║  cr_mcp_tool_usage          8.901      2025-09-01      1.2 MB  ║
║  cr_lsp_usage               1.234      2025-10-15      0.2 MB  ║
╠════════════════════════════════════════════════════════════════╣
║  TOTAL: 47.825 registos | ~6.9 MB a arquivar                   ║
║  Executar sem --dry-run para arquivar                          ║
╚════════════════════════════════════════════════════════════════╝

Archiving completo

/descomplicar:db-archive

Output:

╔════════════════════════════════════════════════════════════════╗
║  DB ARCHIVE                                                    ║
╠════════════════════════════════════════════════════════════════╣
║  Threshold: 90 dias                                            ║
╠════════════════════════════════════════════════════════════════╣
║  cr_agent_usage                                                ║
║    Copying to archive...          15.234 rows   ✓              ║
║    Verifying integrity...         match         ✓              ║
║    Removing from active...        15.234 rows   ✓              ║
║                                                                ║
║  cr_skill_usage                                                ║
║    Copying to archive...          22.456 rows   ✓              ║
║    Verifying integrity...         match         ✓              ║
║    Removing from active...        22.456 rows   ✓              ║
║                                                                ║
║  cr_mcp_tool_usage                                             ║
║    Copying to archive...           8.901 rows   ✓              ║
║    Verifying integrity...         match         ✓              ║
║    Removing from active...         8.901 rows   ✓              ║
║                                                                ║
║  cr_lsp_usage                                                  ║
║    Copying to archive...           1.234 rows   ✓              ║
║    Verifying integrity...         match         ✓              ║
║    Removing from active...         1.234 rows   ✓              ║
╠════════════════════════════════════════════════════════════════╣
║  TOTAL ARCHIVED: 47.825 registos                               ║
║  Space freed: ~6.9 MB                                          ║
║  Status: ✓ SUCCESS                                             ║
╚════════════════════════════════════════════════════════════════╝

Arquivar com threshold diferente

/descomplicar:db-archive --days=30

Apenas uma tabela

/descomplicar:db-archive --table=cr_agent_usage

Apagar dados muito antigos do archive

/descomplicar:db-archive --delete-archived --days=365

Atenção: --delete-archived apaga permanentemente dados com mais de N dias das tabelas _archive. Backup recomendado antes.

SQL Executado

-- 1. Criar tabela archive se não existir
CREATE TABLE IF NOT EXISTS cr_agent_usage_archive LIKE cr_agent_usage;

-- 2. Contar registos a arquivar
SELECT COUNT(*) FROM cr_agent_usage
WHERE created_at < DATE_SUB(NOW(), INTERVAL 90 DAY);

-- 3. Copiar para archive
INSERT INTO cr_agent_usage_archive
SELECT * FROM cr_agent_usage
WHERE created_at < DATE_SUB(NOW(), INTERVAL 90 DAY);

-- 4. Verificar integridade
SELECT
  (SELECT COUNT(*) FROM cr_agent_usage_archive
   WHERE created_at < DATE_SUB(NOW(), INTERVAL 90 DAY)) as archived,
  @expected_count as expected;

-- 5. Remover da tabela activa
DELETE FROM cr_agent_usage
WHERE created_at < DATE_SUB(NOW(), INTERVAL 90 DAY);

-- 6. Registar operação
INSERT INTO cr_maintenance_log (operation, table_name, rows_affected, details)
VALUES ('archive', 'cr_agent_usage', @row_count, JSON_OBJECT(
  'threshold_days', 90,
  'archived_to', 'cr_agent_usage_archive',
  'oldest_record', @oldest_date
));

Políticas de Retenção

Dados Activo Archive Total
Telemetria diária 90 dias 1 ano 15 meses
Métricas agregadas Sempre - Ilimitado
Logs manutenção 1 ano 2 anos 3 anos

Automação Sugerida

Hook Stop (diário)

{
  "hooks": {
    "Stop": [{
      "type": "command",
      "command": "/descomplicar:db-archive --days=90 --force",
      "condition": "daily"
    }]
  }
}

Cron Semanal

# Arquivar telemetria > 90 dias todos os domingos
0 3 * * 0 claude /descomplicar:db-archive --force

Integração

  • Skill: db-maintenance-manager
  • MCP: desk-crm-v3
  • Relacionado:
    • /descomplicar:db-backup (antes de delete-archived)
    • /descomplicar:telemetry (fonte dos dados)

Segurança

  • Dados são MOVIDOS, não apagados (excepto --delete-archived)
  • Verificação de integridade antes de DELETE
  • Rollback automático se count mismatch
  • Log completo em cr_maintenance_log