Skip to content

Kế hoạch triển khai: Game & Room Management Feature

1. Hiện trạng

Triển khai hiện có

  • RoomCmdConsumer với 8+ @OnCmd handlers cho room lifecycle.
  • CreateRoomService routing qua prize allocation queues.
  • CreateRoomValidationService validate trước khi enqueue.
  • CreateRoomJMSService xử lý JMS side.
  • Dynamic queue registration per machine/game mode.
  • Room state in Redis (RRoomModel).

Vấn đề đã biết

# Vấn đề Mức độ
1 Reason codes không chuẩn hóa (hardcoded strings) Medium
2 fakeMachine/skipLifeGauge không có production guard High
3 Room state bị mất khi restart batch service Medium
4 Dynamic queue không tự update khi add machine runtime Medium

2. Kế hoạch cải tiến

Phase 1: Validation hardening

  • Task 1-1: Chuẩn hóa tất cả reason codes thành enum/constants
  • Task 1-2: Guard fakeMachine + skipLifeGauge bằng environment check

Phase 2: Stability

  • Task 2-1: Bổ sung metrics: room creation latency, validation fail rate per reason
  • Task 2-2: Alert khi queue lag vượt ngưỡng

Phase 3: Dynamic queue

  • Task 3-1: Trigger re-registration khi admin tạo machine mới (không cần restart)
  • Task 3-2: Health check endpoint cho JMS listener status

Phase 4: Testing

  • Task 4-1: Integration test PVE Free Play create/join/ready/quit
  • Task 4-2: Integration test PVE Single Play với streaming prize (PRIZE_FOR_STREAMER queue)
  • Task 4-3: Test rollback khi QUIT_GAME mid-game

3. Quan hệ phụ thuộc

graph TD
    T1_1[Task 1-1: Reason codes] --> T4_1
    T1_2[Task 1-2: Fake machine guard] --> T4_2
    T2_1[Task 2-1: Metrics] --> T2_2
    T2_2[Task 2-2: Alerts]
    T3_1[Task 3-1: Dynamic queue runtime] --> T3_2
    T3_2[Task 3-2: Health check]
    T4_1[Task 4-1: Free Play test]
    T4_2[Task 4-2: Single Play test]
    T4_3[Task 4-3: Rollback test]

4. Timeline

gantt
    title Room Management - Improvement Plan
    dateFormat YYYY-MM-DD
    section Phase 1 Validation
    Task 1-1 Reason codes     :crit, t1_1, 2025-01-01, 2d
    Task 1-2 Fake machine     :crit, t1_2, after t1_1, 1d
    section Phase 2 Stability
    Task 2-1 Metrics          :t2_1, after t1_2, 2d
    Task 2-2 Alerts           :t2_2, after t2_1, 1d
    section Phase 3 Dynamic Queue
    Task 3-1 Runtime register :t3_1, after t1_2, 3d
    Task 3-2 Health check     :t3_2, after t3_1, 1d
    section Phase 4 Testing
    Task 4-1 Free Play test   :t4_1, after t1_1, 2d
    Task 4-2 Single Play test :t4_2, after t4_1, 2d
    Task 4-3 Rollback test    :t4_3, after t4_2, 2d

5. Rủi ro

Rủi ro Ảnh hưởng Biện pháp
Queue lag PRIZE_FOR_STREAMER Tạo room chậm khi streaming Tune concurrency + monitor lag
Redis restart → room state mất Game bị drop Add Redis persistence / reload mechanism
fakeMachine on prod Game cheat Env guard + audit log
Missing reason codes Client không biết xử lý lỗi Chuẩn hóa reason code enum