Files
corrosion-admin-panel/CHANGELOG.md
Vantz Stockwell 75d08aeee4 feat: Phase 2 data aggregation pipeline (Strike 4A)
Backend:
- Stats ingestion consumer subscribing to corrosion.*.stats NATS subject
- Hourly aggregation scheduler (runs :05 past every hour)
- Daily cleanup job (03:00 UTC) with 7-day raw / 90-day hourly retention
- Analytics API (summary, timeseries, CSV export)
- Complete stats DB queries with aggregation and cleanup

Frontend:
- Analytics dashboard with ECharts integration
- Player count and server performance charts
- Time range selector (24h/7d/30d)
- CSV export functionality
- Real-time data loading

Infrastructure:
- Exposed NatsBridge.jetstream for consumer access
- Background service initialization in main.rs

Data flow: Plugin → NATS → Consumer → DB → Aggregation → API → Charts

Unblocks Strike 4B (dashboards) and 4C (alerting).

Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
2026-02-15 12:53:25 -05:00

3.9 KiB

CHANGELOG — Corrosion Admin Panel

All notable changes to this project will be documented in this file.

[Unreleased]

Added (Phase 2 — Data Aggregation Pipeline)

Backend:

  • Stats ingestion consumer service (stats_consumer.rs) subscribing to corrosion.*.stats NATS subject
  • Complete stats database queries (db/stats.rs) with support for:
    • Raw stats insertion and retrieval
    • Hourly aggregation queries
    • Analytics summary calculations (peak/avg players, uptime)
    • Data retention cleanup (7 days raw, 90 days hourly)
  • Hourly stats aggregation scheduler job (runs at :05 past every hour)
  • Daily cleanup scheduler job (runs at 03:00 UTC)
  • Analytics API endpoints (api/analytics.rs):
    • GET /api/analytics/summary — Peak/avg players, uptime percentage
    • GET /api/analytics/timeseries — Time-series data for charting (hourly/raw granularity)
    • GET /api/analytics/export — CSV export of server stats
  • Background service initialization in main.rs (stats consumer + scheduler)

Frontend:

  • Analytics TypeScript types (AnalyticsSummary, TimeseriesData, HourlyStats)
  • Complete AnalyticsView.vue implementation with:
    • Real-time data fetching from analytics API
    • Apache ECharts integration for Player Count and Server Performance charts
    • Time range selector (24h/7d/30d)
    • CSV export functionality
    • Loading states and responsive layout

Infrastructure:

  • Made NatsBridge.jetstream public for service consumer access

Technical Details

Data Flow:

Plugin/Agent publishes stats (60s interval)
  → NATS JetStream (corrosion.*.stats)
  → StatsConsumerService persists to server_stats table
  → Hourly aggregation job rolls up to server_stats_hourly
  → Analytics API queries aggregated data
  → Frontend renders charts via ECharts

Database Schema:

  • server_stats table (raw stats, 7-day retention)
  • server_stats_hourly table (aggregated hourly data, 90-day retention)

Scheduler Jobs:

  • Hourly aggregation: 0 5 * * * * (at :05 past every hour)
  • Daily cleanup: 0 0 3 * * * (at 03:00 UTC)

Installation Notes

Frontend:

cd frontend && npm install echarts

Backend: No additional dependencies beyond existing Cargo.toml.

Deferred to Phase 2.2

  • Player retention tracking (new vs returning players, session duration)
  • Wipe-correlated analytics
  • Player activity heatmaps (time-of-day patterns)
  • Anomaly alerting system

[2025-02-15] — Phase 1 Complete

Added (Phase 1 — Foundation)

Backend Services:

  • Core control plane (Axum + Tokio)
  • Auto-wiper with rollback (wipe_engine.rs)
  • Plugin management system
  • WebSocket/NATS bridge for real-time data
  • Companion agent adapter (bare metal server management)
  • Panel adapters (AMP + Pterodactyl)

Frontend:

  • Vue 3 dashboard with 19 admin sub-views
  • Wipe management UI with real-time progress
  • Toast notification system
  • Plugin management interface
  • Public server site

Infrastructure:

  • PostgreSQL schema (migrations 001-003)
  • NATS JetStream streams (6 streams configured)
  • Docker Compose deployment (4 services)
  • JWT auth with refresh tokens, TOTP 2FA

Companion Agent:

  • Go binary for bare metal server management
  • NATS-based command execution
  • Process lifecycle control
  • File operations support

uMod Plugin:

  • C# plugin for Rust game server integration
  • Stats publishing every 60 seconds
  • Server lifecycle event reporting

Commits

  • c5d0571 — feat: Complete Phase 1 frontend — WebSocket + Wipe feature end-to-end
  • 590765f — feat: Complete Phase 1 backend services and WebSocket/NATS bridge
  • 8320591 — docs: Update companion agent language choice to Go
  • 3c39345 — docs: Add CLAUDE.md and Claude Code settings
  • 81eeb3b — docs: Add AGENTS.md roster and resource discipline

Format: type: Short description

Types: feat, fix, docs, refactor, test, chore, perf, ci