Weekly Report (fix-weekly-report): - Remove 5-task limit, show all tasks per category - Add blocked tasks with blocker_reason and blocked_since - Add next week tasks (due in coming week) - Add assignee_name, completed_at, days_overdue to task details - Frontend collapsible sections for each task category - 8 new tests for enhanced report content Realtime Notifications (fix-realtime-notifications): - SQLAlchemy event-based notification publishing - Redis Pub/Sub for multi-process broadcast - Fix soft rollback handler stacking issue - Fix ping scheduling drift (send immediately when interval expires) - Frontend NotificationContext with WebSocket reconnection Spec Fixes: - Add missing ## Purpose sections to 5 specs 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
1.7 KiB
1.7 KiB
Change: Fix Real-time Notifications Alignment
Why
現行實作與 collaboration spec 的 Real-time Notifications requirement 有以下差距:
- 通知僅寫入資料庫,未透過 WebSocket 即時推播
- 未使用 Redis Pub/Sub 處理多 process 推播
- 使用者連線時未補送未讀通知
What Changes
- WebSocket Manager - 建立 WebSocket 連線管理模組
- Redis Pub/Sub - 整合 Redis 處理跨 process 通知推播
- NotificationService - 新增即時推播呼叫
- API - 新增
/ws/notificationsWebSocket endpoint - Frontend - 整合 WebSocket 接收即時通知
Impact
- Affected specs:
collaboration - Affected code:
backend/app/core/websocket.py- 新增 WebSocket 管理backend/app/core/redis_pubsub.py- 新增 Redis Pub/Sub 服務backend/app/services/notification_service.py- 加入即時推播backend/app/api/notifications/router.py- 新增 WebSocket endpointfrontend/src/services/websocket.ts- 新增 WebSocket clientfrontend/src/contexts/NotificationContext.tsx- 整合即時通知
Implementation Phases
Phase 1: WebSocket Infrastructure
- WebSocket 連線管理器
- 使用者連線/斷線處理
- 連線時補送未讀通知
Phase 2: Redis Pub/Sub Integration
- Redis Pub/Sub 服務封裝
- 多 process 通知廣播
- 訊息序列化/反序列化
Phase 3: Service Integration
- NotificationService 加入推播
- 前端 WebSocket client
- 未讀數量即時更新
Dependencies
- collaboration (已完成)
- Redis 已在 user-auth 中使用
Technical Decisions
- 使用 FastAPI WebSocket 原生支援
- Redis Pub/Sub 處理多 worker 同步
- 使用者以 user_id 為 channel key