Task 2-1: Document và Deprecate Room Sync v1
Phase: 2 - Deprecation Priority: Medium Module:
livestreamwebDepends 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ặcRoomSyncController) cần injectHttpServletResponsedướ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
LivestreamControllerhoặcRoomSyncControllerbằng grep:grep -r "room-sync-register"tronglivestreamweb/ -
[ ] Thêm
@Deprecatedannotation 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-registervẫn trả response 200 (backward compatible) sau khi thêm deprecation header - [ ] Response header
Deprecation: truecó mặt trong response của v1 endpoint - [ ] Response header
Sunset: 2025-06-01có mặt trong response của v1 endpoint - [ ] Log
[DEPRECATION] /room-sync-registerxuất hiện trong server logs khi gọi v1 - [ ] v2 endpoint
POST /sync-registerkhông bị ảnh hưởng - [ ]
@Deprecatedannotation 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)