Skip to main content

Analytics Service

Purpose

analytics-service exposes admin analytics APIs and maintains aggregate tables fed by Kafka events.

Responsibilities

  • Provide dashboard metrics
  • Provide revenue, order, book, and payment analytics
  • Consume order and payment events
  • Deduplicate events using processed_events

Dependencies

  • Port: 8088
  • Database: bookstore_analytics_db
  • Kafka consumer
  • Admin-only JWT-protected APIs

REST APIs

MethodPathAuthDescription
GET/analytics/dashboardAdminHigh-level dashboard summary
GET/analytics/revenueAdminRevenue totals, optional from and to
GET/analytics/revenue/dailyAdminDaily revenue series
GET/analytics/revenue/monthlyAdminMonthly revenue series
GET/analytics/ordersAdminOrder analytics
GET/analytics/booksAdminBook sales analytics
GET/analytics/paymentsAdminPayment analytics

Kafka

Consumers

  • order-created
  • payment-completed
  • payment-failed

Aggregate tables

  • daily_metrics
  • book_sales
  • pending_order_items
  • processed_events

Ingestion & deduplication

Aggregate schema

Deduplication

The service stores event keys like:

  • order-created:{orderId}
  • payment-completed:{orderId}
  • payment-failed:{paymentId}

This prevents double-counting under at-least-once delivery.

Known gap

The checked-in payment-service publishes payment-success, not payment-completed. Until that is corrected, success-side payment analytics will not fully update from Kafka.