Skip to content

Task 2-1: Document và Deprecate Room Sync v1

Phase: 2 - Deprecation Priority: Medium Module: livestreamweb Depends on: Không có Blocks: task-2-2 Reference: docs/BountyHunter-Backend/details/feature-livestream/SPEC.md

Background

Còn tồn tại 2 endpoints song song: - v1: POST /room-sync-register (Firebase command-based) - v2: POST /sync-register (direct handler)

Cần document và deprecate v1 để không còn client nào dùng trước khi xóa.

Tasks

DI Note: LivestreamController (hoặc RoomSyncController) cần inject HttpServletResponse dưới dạng tham số method (không phải field). Không inject qua constructor — Spring tự bind khi khai báo trong method signature.

  • [ ] Xác nhận v1 endpoint trong LivestreamController hoặc RoomSyncController bằng grep: grep -r "room-sync-register" trong livestreamweb/
  • [ ] Thêm @Deprecated annotation và response header deprecation:

    @Deprecated
    @PostMapping("/room-sync-register")
    public Result<?> roomSyncRegisterV1(
        @RequestBody RoomSyncRequest request,
        @AuthenticationPrincipal UserDetails userDetails,
        HttpServletResponse response  // injected by Spring MVC as method param
    ) {
        response.setHeader("Deprecation", "true");
        response.setHeader("Sunset", "2025-06-01");  // planned removal date
        LOGGER.warn("[DEPRECATION] /room-sync-register called by userId={}", loginUserId);
        // ... existing logic (keep working for now)
    }
    

  • [ ] Theo dõi access log: xem còn client nào gọi v1 không — dùng Splunk/ELK query [DEPRECATION] /room-sync-register

  • [ ] Notify clients (app team) để migrate sang v2 — ghi chú migration guide (URL change, response format có thay đổi không)
  • [ ] Set timeline xóa v1 (sau khi không còn client dùng, tối thiểu 2 tuần không có traffic)

Verification / Acceptance Criteria

  • [ ] POST /room-sync-register vẫn trả response 200 (backward compatible) sau khi thêm deprecation header
  • [ ] Response header Deprecation: true có mặt trong response của v1 endpoint
  • [ ] Response header Sunset: 2025-06-01 có mặt trong response của v1 endpoint
  • [ ] Log [DEPRECATION] /room-sync-register xuất hiện trong server logs khi gọi v1
  • [ ] v2 endpoint POST /sync-register không bị ảnh hưởng
  • [ ] @Deprecated annotation trên method → IDE cảnh báo nếu có internal caller

Files to Modify

  • livestreamweb/controllers/livestream/LivestreamController.java (hoặc file chứa v1 endpoint)