--- type: Entity layer: wiki tags: [stack, dashdescomplicar, backend, observabilidade, sessoes, sqlite, systemd] title: "Observabilidade-Sessions" --- # Observabilidade-Sessions Sistema de observabilidade de sessões Claude Code (Espelho). Indexa, armazena e expõe dados de sessões de múltiplos motores IA (Claude Code, Hermes, OpenCode) via SQLite local. ## Responsabilidades - **Indexação**: Watcher incremental de ficheiros JSONL (Claude Code) + import de BD (Hermes SQLite, OpenCode SQLite) - **Armazenamento**: SQLite local (`~/.claude-work/sessions.db`) com schema optimizado - **Worklog Import**: Import de worklogs Desk CRM (discussions #31/#32/#33) - **Pattern Detection**: Detecção semanal de padrões de uso (tools, skills, erros) - **API**: Rota `/api/sessions` (lista + detalhe com eventos) - **Sincronização**: Volume bind EasyPanel (`/root/data/dashboard-descomplicar/sessions.db` → `/data/sessions.db`) ## Stack - **DB**: `better-sqlite3` 12.9 (síncrono, zero-deps) - **Watcher**: `chokidar` 5.0 (file system events) - **Parser**: `node-html-parser` 7.1 (extração HTML de worklogs) - **Runtime**: Node.js 22 via `tsx` (systemd services) ## Componentes do Sistema | Componente | Ficheiro | Função | |---|---|---| | Indexer | `api/scripts/sessions-indexer.ts` | Watcher incremental de JSONL | | Patterns | `api/scripts/sessions-patterns.ts` | Detector semanal de padrões | | Worklog Import | `api/scripts/sessions-worklog-import.ts` | Import de worklogs Desk | | DB Layer | `api/services/sessions/db.ts` | Schema, queries, CRUD | | Parser | `api/services/sessions/parser.ts` | Parse de ficheiros JSONL | | Claude Indexer | `api/services/sessions/indexer.ts` | Indexação específica Claude | | Hermes Indexer | `api/services/sessions/hermes-indexer.ts` | Indexação Hermes (`~/.hermes/state.db`) | | OpenCode Indexer | `api/services/sessions/opencode-indexer.ts` | Indexação OpenCode (`~/.local/share/opencode/opencode.db`) | | MCP Client | `api/services/sessions/mcp-client.ts` | Cliente MCP para Desk CRM | | Watcher | `api/services/sessions/watcher.ts` | File watcher eventos | | Patterns Engine | `api/services/sessions/patterns.ts` | Análise de padrões (19KB) | ## Fontes de Dados - **Claude Code**: `~/.claude/projects/*/sessions/*.jsonl` (JSONL) - **Hermes**: `~/.hermes/state.db` (SQLite) - **OpenCode**: `~/.local/share/opencode/opencode.db` (SQLite) - **Gemini**: `~/.claude-work/tool-invocations.jsonl` (via Gemini-Telemetry) - **Desk CRM**: Discussions #31, #32, #33 (worklogs) ## Systemd Timers | Timer | Schedule | Função | |---|---|---| | `observabilidade-indexer.service` | Sempre ligado (simple) | Watcher incremental | | `observabilidade-worklog-import.timer` | Diário 03:00 | Import worklogs Desk | | `observabilidade-patterns.timer` | Dom 23:00 | Detecção de padrões | ## Localizações - **SQLite DB**: `~/.claude-work/sessions.db` (local) / `/data/sessions.db` (container) - **Código**: `api/services/sessions/` (10 ficheiros, ~56KB) - **Scripts**: `api/scripts/sessions-*.ts` (3 scripts) - **Systemd**: `systemd/observabilidade-*.{service,timer}` (5 ficheiros) - **Volume**: `/root/data/dashboard-descomplicar/sessions.db` → container ## Dependências - **Systemd-Timers**: Execução agendada dos scripts - **Gemini-Telemetry**: Dados de telemetria Gemini - **MySQL-Pool**: Worklogs Desk CRM (discussions) - **Express-API**: Rota `/api/sessions` expõe dados - **Sistema de Ficheiros**: `~/.claude/`, `~/.hermes/`, `~/.local/share/opencode/` ## Fornece a - **Painel-Sessoes**: Dados para listagem e detalhe - **Express-API**: Rota `/api/sessions` - **Sistema IA**: Métricas de uso, padrões, anomalias