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:
2026-02-04 16:18:02 +00:00
commit 692475a315
55 changed files with 11950 additions and 0 deletions

249
commands/telemetry.md Normal file
View File

@@ -0,0 +1,249 @@
---
name: telemetry
description: >
Visualização e gestão de telemetria de uso.
Dashboard, top componentes, análise de erros, subutilização.
argument-hint: "[dashboard|top|unused|errors] [period] [filter]"
---
# /descomplicar:telemetry
Visualização e gestão de telemetria de uso.
## Objectivo
Mostrar métricas de uso de agentes, skills e MCPs. Identificar padrões, componentes subutilizados e oportunidades de optimização.
## Sintaxe
```
/descomplicar:telemetry [action] [period] [filter]
```
## Acções Disponíveis
### 1. Dashboard Geral
```
/descomplicar:telemetry dashboard
/descomplicar:telemetry dashboard 7d # Últimos 7 dias
/descomplicar:telemetry dashboard 30d # Últimos 30 dias (default)
```
**Query:**
```sql
SELECT
'Agents' as component,
COUNT(DISTINCT agent_id) as unique_used,
COUNT(*) as total_invocations,
AVG(duration_sec) as avg_duration,
SUM(CASE WHEN success = 1 THEN 1 ELSE 0 END) * 100.0 / COUNT(*) as success_rate
FROM cr_agent_usage
WHERE created_at > DATE_SUB(NOW(), INTERVAL 30 DAY)
UNION ALL
SELECT
'Skills' as component,
COUNT(DISTINCT skill_id) as unique_used,
COUNT(*) as total_invocations,
AVG(duration_sec) as avg_duration,
SUM(CASE WHEN success = 1 THEN 1 ELSE 0 END) * 100.0 / COUNT(*) as success_rate
FROM cr_skill_usage
WHERE created_at > DATE_SUB(NOW(), INTERVAL 30 DAY)
UNION ALL
SELECT
'MCP Tools' as component,
COUNT(DISTINCT mcp_tool_id) as unique_used,
COUNT(*) as total_invocations,
AVG(response_time_ms) / 1000 as avg_duration,
SUM(CASE WHEN success = 1 THEN 1 ELSE 0 END) * 100.0 / COUNT(*) as success_rate
FROM cr_mcp_tool_usage
WHERE created_at > DATE_SUB(NOW(), INTERVAL 30 DAY);
```
**Output:**
```
╔══════════════════════════════════════════════════════════════════════╗
║ TELEMETRY DASHBOARD - Últimos 30 dias ║
╠══════════════════════════════════════════════════════════════════════╣
║ Componente │ Únicos │ Invocações │ Avg Duration │ Success Rate ║
║ ─────────────────────────────────────────────────────────────────── ║
║ Agents │ 32 │ 1,234 │ 45.2s │ 94.5% ║
║ Skills │ 28 │ 567 │ 12.8s │ 97.2% ║
║ MCP Tools │ 156 │ 8,901 │ 0.8s │ 99.1% ║
╠══════════════════════════════════════════════════════════════════════╣
║ TENDÊNCIA: ↑ 12% vs período anterior ║
╚══════════════════════════════════════════════════════════════════════╝
```
### 2. Top Componentes
```
/descomplicar:telemetry top agents 10
/descomplicar:telemetry top skills 10
/descomplicar:telemetry top mcps 10
```
**Query (Agents):**
```sql
SELECT
a.slug,
a.name,
COUNT(*) as invocations,
AVG(au.duration_sec) as avg_duration,
SUM(CASE WHEN au.success = 1 THEN 1 ELSE 0 END) * 100.0 / COUNT(*) as success_rate
FROM cr_agent_usage au
JOIN cr_agents a ON au.agent_id = a.id
WHERE au.created_at > DATE_SUB(NOW(), INTERVAL 30 DAY)
GROUP BY a.id
ORDER BY invocations DESC
LIMIT 10;
```
**Output:**
```
╔══════════════════════════════════════════════════════════════════════╗
║ TOP 10 AGENTS - Últimos 30 dias ║
╠══════════════════════════════════════════════════════════════════════╣
║ # │ Agent │ Invocações │ Avg │ Success ║
║ ─────────────────────────────────────────────────────────────────── ║
║ 1 │ wordpress-plugin-developer │ 156 │ 52s │ 96% ║
║ 2 │ marketing-planning-expert │ 134 │ 38s │ 94% ║
║ 3 │ php-fullstack-engineer │ 98 │ 61s │ 92% ║
║ 4 │ seo-specialist │ 87 │ 45s │ 98% ║
║ 5 │ content-manager │ 76 │ 32s │ 97% ║
║ 6 │ copywriter │ 65 │ 28s │ 99% ║
║ 7 │ sales-manager │ 54 │ 41s │ 91% ║
║ 8 │ dev-helper │ 48 │ 55s │ 89% ║
║ 9 │ n8n-automation-expert │ 42 │ 67s │ 95% ║
║ 10 │ easypanel-specialist │ 38 │ 72s │ 93% ║
╚══════════════════════════════════════════════════════════════════════╝
```
### 3. Componentes Subutilizados
```
/descomplicar:telemetry unused
/descomplicar:telemetry unused 90d # Não usados há 90 dias
```
**Query:**
```sql
-- Agentes nunca usados ou não usados há 30+ dias
SELECT a.slug, a.name, a.category,
COALESCE(MAX(au.created_at), 'Nunca') as last_used,
DATEDIFF(NOW(), COALESCE(MAX(au.created_at), '2020-01-01')) as days_since
FROM cr_agents a
LEFT JOIN cr_agent_usage au ON a.id = au.agent_id
WHERE a.status = 'active'
GROUP BY a.id
HAVING days_since > 30 OR last_used = 'Nunca'
ORDER BY days_since DESC;
```
**Output:**
```
╔══════════════════════════════════════════════════════════════════════╗
║ COMPONENTES SUBUTILIZADOS (>30 dias sem uso) ║
╠══════════════════════════════════════════════════════════════════════╣
║ AGENTS (14 de 46) ║
║ ├── backup-specialist │ Nunca usado │ Considerar arquivar ║
║ ├── reflect-agent │ 45 dias │ Auto-trigger activo?║
║ └── ... ║
╠══════════════════════════════════════════════════════════════════════╣
║ SKILLS (26 de 54) ║
║ ├── archive │ 60 dias │ Raramente necessária║
║ └── ... ║
╠══════════════════════════════════════════════════════════════════════╣
║ RECOMENDAÇÃO: Revisar componentes não usados há >90 dias ║
╚══════════════════════════════════════════════════════════════════════╝
```
### 4. Análise de Erros
```
/descomplicar:telemetry errors
/descomplicar:telemetry errors agent wordpress-plugin-developer
```
**Query:**
```sql
SELECT
a.slug,
COUNT(*) as total_errors,
COUNT(*) * 100.0 / (SELECT COUNT(*) FROM cr_agent_usage WHERE agent_id = a.id) as error_rate,
MAX(au.created_at) as last_error
FROM cr_agent_usage au
JOIN cr_agents a ON au.agent_id = a.id
WHERE au.success = 0
AND au.created_at > DATE_SUB(NOW(), INTERVAL 30 DAY)
GROUP BY a.id
ORDER BY total_errors DESC
LIMIT 10;
```
### 5. Registar Uso (automático via hooks)
```sql
-- Registado automaticamente pelo hook PostToolUse
INSERT INTO cr_agent_usage (agent_id, session_id, success, duration_sec, created_at)
VALUES (
(SELECT id FROM cr_agents WHERE slug = '{agent_slug}'),
'{session_id}',
{success},
{duration},
NOW()
);
INSERT INTO cr_mcp_tool_usage (mcp_tool_id, agent_id, response_time_ms, success, created_at)
VALUES (
(SELECT id FROM cr_mcp_tools WHERE tool_name = '{tool_name}'),
(SELECT id FROM cr_agents WHERE slug = '{agent_slug}'),
{response_time},
{success},
NOW()
);
```
## Integração com Decision Trees
A telemetria alimenta as decision trees para melhorar a selecção de agentes:
```sql
-- Actualizar confidence baseado em success rate
UPDATE cr_decision_trees dt
SET dt.confidence_score = (
SELECT AVG(CASE WHEN au.success = 1 THEN 1.0 ELSE 0.5 END)
FROM cr_agent_usage au
WHERE au.agent_id = dt.agent_id
AND au.created_at > DATE_SUB(NOW(), INTERVAL 30 DAY)
)
WHERE dt.status = 'active';
```
## Métricas de Saúde
| Métrica | Threshold | Acção |
|---------|-----------|-------|
| Success Rate | < 90% | Investigar erros |
| Avg Duration | > 120s | Optimizar agente |
| Unused (dias) | > 90 | Considerar arquivar |
| Error Spike | > 5 em 1h | Alerta imediato |
## Output Esperado
```
╔══════════════════════════════════════════════════════════════════════╗
║ TELEMETRY DASHBOARD - Últimos 30 dias ║
╠══════════════════════════════════════════════════════════════════════╣
║ Componente │ Únicos │ Invocações │ Avg Duration │ Success Rate ║
║ Agents │ 32 │ 1,234 │ 45.2s │ 94.5% ║
║ Skills │ 28 │ 567 │ 12.8s │ 97.2% ║
║ MCP Tools │ 156 │ 8,901 │ 0.8s │ 99.1% ║
╠══════════════════════════════════════════════════════════════════════╣
║ TENDÊNCIA: ↑ 12% vs período anterior ║
╚══════════════════════════════════════════════════════════════════════╝
```