- 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>
9.7 KiB
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