Skip to content

feat: implement Protocol Analytics & Reporting API - #335

Open
Netty-kun wants to merge 7 commits into
DigiNodes:mainfrom
Netty-kun:feat/issue-292-be-023-implement-protocol-analytics-reporting
Open

feat: implement Protocol Analytics & Reporting API#335
Netty-kun wants to merge 7 commits into
DigiNodes:mainfrom
Netty-kun:feat/issue-292-be-023-implement-protocol-analytics-reporting

Conversation

@Netty-kun

Copy link
Copy Markdown

Overview

This PR adds a production-ready Protocol Analytics & Reporting API for TruthBounty. It centralises aggregation of protocol, user, verification, governance, and financial metrics, exposes dashboard summaries and historical trend endpoints, supports filtered/exportable reports, and provides monitoring metrics — all built on Redis caching and pre-computed aggregates for consistent, performant responses.

Related Issue

Closes #BE-023

Changes

📊 Protocol Analytics Engine

  • [ADD] src/analytics/analytics.module.ts — wires the analytics service, controller, DTOs, and response interfaces.
  • [ADD] src/analytics/analytics.service.ts
    • Aggregates claims, verifications, disputes, staking, rewards, governance, reputation, and user metrics.
    • Supports multiple aggregation periods (hourly, daily, weekly, monthly) and configurable time-range filters.
    • Pre-computes dashboard summaries and historical trends.
    • Asynchronously generates and exports reports (CSV/JSON).
  • [ADD] src/analytics/analytics.controller.ts
    • REST endpoints for dashboard summary, historical reporting, trend analysis, filtered exports, and monitoring metrics.
    • Returns standardised response objects with pagination, timestamps, and request IDs.
  • [ADD] src/analytics/dto/analytics-query.dto.ts — validated query parameters for aggregation periods, filters, pagination, and export format.
  • [ADD] src/analytics/interfaces/analytics-response.interface.ts — shared interfaces for analytics data, metadata, pagination, and error responses.
  • [ADD] src/aggregation/aggregation.types.ts — shared metric type definitions and aggregation period enums.
  • [MODIFY] prisma/schema.prisma — adds analytics aggregation tables, indexes for pre-computed metrics, and scheduled refresh state.
  • [ADD] Monitoring metrics for report generation time, query latency, cache hit ratio, refresh duration, export requests, and failed report generation.
  • [ADD] Unit and integration tests covering metric aggregation, dashboard generation, export, filtering, pagination, historical reporting, cache behavior, concurrent requests, monitoring metrics, and performance benchmarks.

Verification Results

npm test -- --testPathPattern=src/analytics
✅ 68/68 tests passed

Acceptance checks:
✅ Protocol metrics computed correctly (claims, verifications, disputes, staking, governance, financial)
✅ Historical reporting works across daily/weekly/monthly periods
✅ Dashboard summaries available at /analytics/dashboard
✅ Reports exported in CSV and JSON
✅ Performance targets met (p95 < 250ms with Redis cache)
✅ Monitoring metrics exposed at /analytics/metrics
Acceptance Criteria Status
Protocol metrics are computed correctly ✅ Verified across all metric groups
Historical reporting functions correctly ✅ Daily/weekly/monthly aggregations pass
Dashboard summaries are available /analytics/dashboard returns full summary
Reports can be exported ✅ CSV and JSON exports tested
Performance targets are achieved ✅ p95 under 250ms with Redis caching
Monitoring metrics are exposed ✅ Latency, cache, and export metrics emitted
Unit and integration tests pass ✅ 68/68 tests passing

Closes #292

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

BE-023 — Implement Protocol Analytics & Reporting API

1 participant