Phase 3.2 WS2: Mitra request activity log + control center page

- DB migration: add active_session_count column + mitra_notified index
- Constants: add MISSED to NotificationResponse
- Pairing service: record active_session_count on notification creation,
  use MISSED (not IGNORED) when another mitra accepts first
- New mitra-activity.service.js: getMitraActivityLog (paginated),
  getMitraActivitySummary (per-mitra aggregates with acceptance rate)
- New mitra-activity.routes.js: GET /internal/mitra-activity/log,
  GET /internal/mitra-activity/summary
- Control center: new MitraActivityPage with summary table + detail log,
  filters (mitra, date range), color-coded response types, pagination
- Register route in App.jsx, add "Aktivitas Mitra" nav link in Layout

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
This commit is contained in:
2026-04-09 22:20:52 +08:00
parent b9c4841eb1
commit 4c6130aa04
9 changed files with 312 additions and 4 deletions

View File

@@ -33,6 +33,7 @@ export const MessageType = Object.freeze({
export const NotificationResponse = Object.freeze({
ACCEPTED: 'accepted',
DECLINED: 'declined',
MISSED: 'missed',
IGNORED: 'ignored',
})