Labels: ready-to-code
Depends on: Issue 5 (#4043 health data model), Issue 21 (#4059 audit logging)
RHIDP Stories: RHIDP-15280 (analytics scope)
Feature: RHDHPLAN-1508 — Epic RHIDP-15277 (consolidated from RHDHPLAN-1513 RHIDP-15333)
Implement analytics REST API endpoints (sync history, quality scores, match coverage) with RBAC gating and pagination, quality score storage (DB table + store), match coverage calculator, Neo4j sync status embedding, Eval Hub client for external quality score ingestion, and multi-eval backend support (LightEval, IBM Clear, GuideLLM).
Tasks
From openspec/changes/ingestion-audit-metrics/tasks.md group 5 (RHIDP-15344):
- 5.1 Define analytics API routes
- 5.2 Add
GET /api/boost/admin/analytics/sync-history endpoint
- 5.3 Add
GET /api/boost/admin/analytics/quality-scores endpoint
- 5.4 Add
GET /api/boost/admin/analytics/match-coverage endpoint
- 5.5 Add RBAC gating to all endpoints
- 5.6–5.10 Pagination, date range filtering, connector filtering, eval source filtering, route registration
- 5.11 Add integration tests
From openspec/changes/ingestion-audit-metrics/tasks.md group 6:
- 6.1–6.7 Sync history service:
AnalyticsService, getSyncHistory(), pagination, date range filtering, connector filtering, duration calculation, unit tests
From openspec/changes/ingestion-audit-metrics/tasks.md group 7:
- 7.1–7.8 Quality score storage: DB table schema, migration,
QualityScoresStore, insertScore(), getScoresBySkill(), getLatestScores(), indexes, unit tests
From openspec/changes/ingestion-audit-metrics/tasks.md group 8:
- 8.1–8.6 Quality score analytics:
getQualityScores(), per-skill scores, aggregate distribution, normalization, eval source filtering, unit tests
From openspec/changes/ingestion-audit-metrics/tasks.md group 9:
- 9.1–9.8 Match coverage calculator: agent capability extraction, skill ID extraction, matching logic, coverage ratio, unmatched capabilities list, caching, unit tests
From openspec/changes/ingestion-audit-metrics/tasks.md group 10:
- 10.1–10.6 Neo4j sync status: connection check, last sync timestamp, entity count, embed in analytics responses, graceful unavailable handling, unit tests
From openspec/changes/ingestion-audit-metrics/tasks.md group 11:
- 11.1–11.8 Eval Hub client: interface,
fetchQualityScores(), app-config schema, client init, HTTP client, error handling, score normalization, unit tests
From openspec/changes/ingestion-audit-metrics/tasks.md group 12:
- 12.1–12.8 Eval Hub ingestion service: background task, refresh interval config, score fetching/storage, graceful unavailable handling, manual trigger endpoint, status logging, integration tests
From openspec/changes/ingestion-audit-metrics/tasks.md group 13:
- 13.1–13.6 Multi-eval backend support:
eval_source field, source normalization, source filtering, per-source aggregation, LightEval/IBM Clear/GuideLLM support, unit tests
Specifications
openspec/changes/ingestion-audit-metrics/specs/analytics-api/spec.md
openspec/changes/ingestion-audit-metrics/specs/eval-hub-integration/spec.md
Labels:
ready-to-codeDepends on: Issue 5 (#4043 health data model), Issue 21 (#4059 audit logging)
RHIDP Stories: RHIDP-15280 (analytics scope)
Feature: RHDHPLAN-1508 — Epic RHIDP-15277 (consolidated from RHDHPLAN-1513 RHIDP-15333)
Implement analytics REST API endpoints (sync history, quality scores, match coverage) with RBAC gating and pagination, quality score storage (DB table + store), match coverage calculator, Neo4j sync status embedding, Eval Hub client for external quality score ingestion, and multi-eval backend support (LightEval, IBM Clear, GuideLLM).
Tasks
From
openspec/changes/ingestion-audit-metrics/tasks.mdgroup 5 (RHIDP-15344):GET /api/boost/admin/analytics/sync-historyendpointGET /api/boost/admin/analytics/quality-scoresendpointGET /api/boost/admin/analytics/match-coverageendpointFrom
openspec/changes/ingestion-audit-metrics/tasks.mdgroup 6:AnalyticsService,getSyncHistory(), pagination, date range filtering, connector filtering, duration calculation, unit testsFrom
openspec/changes/ingestion-audit-metrics/tasks.mdgroup 7:QualityScoresStore,insertScore(),getScoresBySkill(),getLatestScores(), indexes, unit testsFrom
openspec/changes/ingestion-audit-metrics/tasks.mdgroup 8:getQualityScores(), per-skill scores, aggregate distribution, normalization, eval source filtering, unit testsFrom
openspec/changes/ingestion-audit-metrics/tasks.mdgroup 9:From
openspec/changes/ingestion-audit-metrics/tasks.mdgroup 10:From
openspec/changes/ingestion-audit-metrics/tasks.mdgroup 11:fetchQualityScores(), app-config schema, client init, HTTP client, error handling, score normalization, unit testsFrom
openspec/changes/ingestion-audit-metrics/tasks.mdgroup 12:From
openspec/changes/ingestion-audit-metrics/tasks.mdgroup 13:eval_sourcefield, source normalization, source filtering, per-source aggregation, LightEval/IBM Clear/GuideLLM support, unit testsSpecifications
openspec/changes/ingestion-audit-metrics/specs/analytics-api/spec.mdopenspec/changes/ingestion-audit-metrics/specs/eval-hub-integration/spec.md