feat: enhance weekly report and realtime notifications

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>
This commit is contained in:
beabigegg
2025-12-30 20:52:08 +08:00
parent 10db2c9d1f
commit 64874d5425
25 changed files with 1034 additions and 140 deletions

View File

@@ -85,7 +85,7 @@ async def create_blocker(
# Update task blocker_flag
task.blocker_flag = True
# Notify project owner
# Notify project owner (auto-publishes after commit)
NotificationService.notify_blocker(db, task, current_user, blocker_data.reason)
# Audit log
@@ -150,7 +150,7 @@ async def resolve_blocker(
if other_blockers == 0:
task.blocker_flag = False
# Notify reporter that blocker is resolved
# Notify reporter that blocker is resolved (auto-publishes after commit)
NotificationService.notify_blocker_resolved(db, task, current_user, blocker.reported_by)
db.commit()