pediatric-ai-scribe-v3/grafana-dashboard.json
Daniel 2f6e5a7d8f feat: neonatal calculator, DOCX/PPTX/ODT/EPUB support, gateway-agnostic URL helper, TTS/STT fixes
- Add neonatal assessment calculator: GA classification (extremely preterm through
  post term), weight-for-GA percentile (AGA/SGA/LGA) using Fenton 2013 LMS data,
  birth weight category (ELBW/VLBW/LBW/normal/macrosomia)
- Add DOCX support via mammoth, PPTX/ODT/EPUB via jszip in Learning Hub content
  generator file upload
- Add gatewayUrl() helper for consistent API URL construction — handles
  LITELLM_API_BASE with or without /v1 suffix, works with any OpenAI-compatible
  gateway (LiteLLM, Bifrost, etc.)
- Fix TTS model/voice separation: discovery now tags items as MODEL or VOICE,
  auto-detects provider from voice name (Vertex, ElevenLabs, OpenAI)
- Fix STT discovery to include ElevenLabs Scribe and Chirp models
- Fix TTS discovery to include ElevenLabs and Vertex voices alongside models
- Fix admin model test to bypass allowlist check (skipAllowlistCheck) so
  discovered models can be tested before adding
- Fix Nextcloud token decryption in learningAI.js WebDAV browse and file import
- Fix admin embedding test to show DB model name instead of hardcoded default
- Fix admin STT test to use correct endpoint for Whisper models
- Add AI gateway migration guide to configuration docs
- Add Grafana dashboard JSON for Loki log visualization
2026-04-19 02:17:06 +02:00

58 lines
2.3 KiB
JSON

{
"dashboard": {
"title": "PedScribe Overview",
"tags": ["pedscribe"],
"timezone": "browser",
"refresh": "30s",
"time": {"from": "now-24h", "to": "now"},
"panels": [
{
"id": 1, "title": "Audit Events", "type": "timeseries",
"gridPos": {"h": 8, "w": 24, "x": 0, "y": 0},
"datasource": {"type": "loki"},
"targets": [{"expr": "count_over_time({app=\"pedscribe\"} [5m])", "legendFormat": "{{action}}"}],
"fieldConfig": {"defaults": {"custom": {"drawStyle": "bars", "fillOpacity": 30}}}
},
{
"id": 2, "title": "By Category", "type": "piechart",
"gridPos": {"h": 8, "w": 8, "x": 0, "y": 8},
"datasource": {"type": "loki"},
"targets": [{"expr": "sum by (category) (count_over_time({app=\"pedscribe\"} [24h]))"}]
},
{
"id": 3, "title": "By Action", "type": "piechart",
"gridPos": {"h": 8, "w": 8, "x": 8, "y": 8},
"datasource": {"type": "loki"},
"targets": [{"expr": "sum by (action) (count_over_time({app=\"pedscribe\"} [24h]))"}]
},
{
"id": 4, "title": "Success vs Failure", "type": "piechart",
"gridPos": {"h": 8, "w": 8, "x": 16, "y": 8},
"datasource": {"type": "loki"},
"targets": [{"expr": "sum by (status) (count_over_time({app=\"pedscribe\"} [24h]))"}]
},
{
"id": 5, "title": "Auth Events", "type": "logs",
"gridPos": {"h": 8, "w": 12, "x": 0, "y": 16},
"datasource": {"type": "loki"},
"targets": [{"expr": "{app=\"pedscribe\", category=\"auth\"}"}],
"options": {"showTime": true, "sortOrder": "Descending", "enableLogDetails": true}
},
{
"id": 6, "title": "Clinical Events", "type": "logs",
"gridPos": {"h": 8, "w": 12, "x": 12, "y": 16},
"datasource": {"type": "loki"},
"targets": [{"expr": "{app=\"pedscribe\", category=\"clinical\"}"}],
"options": {"showTime": true, "sortOrder": "Descending", "enableLogDetails": true}
},
{
"id": 7, "title": "All Logs", "type": "logs",
"gridPos": {"h": 10, "w": 24, "x": 0, "y": 24},
"datasource": {"type": "loki"},
"targets": [{"expr": "{app=\"pedscribe\"}"}],
"options": {"showTime": true, "sortOrder": "Descending", "enableLogDetails": true}
}
]
},
"overwrite": true
}