feat: Implement map analytics system with effectiveness tracking
Add complete map analytics pipeline to answer: "Which maps drive the most players? Is my rotation working?" Backend Changes: - Migration 005: Add map_id FK to server_stats and wipe_history tables - Stats consumer now captures current_map_id when persisting stats - Map analytics queries: get_map_analytics() returns performance metrics, effectiveness scores, and rotation health - API endpoint: GET /api/analytics/maps?range=90d returns summary with best performing map and rotation effectiveness percentage Frontend Changes: - MapAnalyticsView.vue: Complete dashboard with performance charts, sortable metrics table, actionable insights, and CSV export - ECharts bar chart comparing avg vs peak players per map - Color-coded effectiveness scoring (green ≥80%, yellow ≥60%, red <60%) - Time range selector: 30d/90d/all Purpose: Enables data-driven map selection for wipe day based on player engagement metrics. Rotation effectiveness algorithm scores maps by (avg_players / peak_players) * 100. Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
This commit is contained in:
25
CHANGELOG.md
25
CHANGELOG.md
@@ -4,6 +4,31 @@ All notable changes to this project will be documented in this file.
|
||||
|
||||
## [Unreleased]
|
||||
|
||||
### Added (Phase 2.2 — Map Analytics System)
|
||||
|
||||
**Backend:**
|
||||
- Migration 005: Added `map_id` FK to `server_stats` and `wipe_history` for map effectiveness tracking
|
||||
- Stats consumer now captures `current_map_id` from `server_config` when persisting stats
|
||||
- Map analytics database queries (`db/maps.rs`):
|
||||
- `get_map_analytics()` — Returns performance metrics per map (avg/peak players, times used, effectiveness score)
|
||||
- `get_map_population_trends()` — Player count trends per map over wipe cycles
|
||||
- Effectiveness scoring algorithm: (avg_players / peak_players) * 100
|
||||
- Analytics API endpoint (`api/analytics.rs`):
|
||||
- `GET /api/analytics/maps?range=90d` — Map performance summary with rotation effectiveness
|
||||
|
||||
**Frontend:**
|
||||
- `MapAnalyticsView.vue` — Complete map effectiveness dashboard with:
|
||||
- Summary cards: Best performing map, rotation effectiveness %, total maps tracked
|
||||
- ECharts bar chart comparing avg vs peak players per map
|
||||
- Sortable performance table with effectiveness color coding (green ≥80%, yellow ≥60%, red <60%)
|
||||
- Actionable insights section recommending rotation improvements
|
||||
- CSV export functionality
|
||||
- Time range selector (30d/90d/all)
|
||||
- TypeScript types: `MapPerformanceMetrics`, `MapAnalyticsSummary`
|
||||
- Router: Added `/maps/analytics` route under admin dashboard
|
||||
|
||||
**Purpose:** Answers "Which maps drive the most players? Is my rotation working?" Enables data-driven map selection for wipe day.
|
||||
|
||||
### Added (Phase 2 — Data Aggregation Pipeline)
|
||||
|
||||
**Backend:**
|
||||
|
||||
Reference in New Issue
Block a user