feat: implement collaboration module

- Backend (FastAPI):
  - Task comments with nested replies and soft delete
  - @mention parsing with 10-mention limit per comment
  - Notification system with read/unread tracking
  - Blocker management with project owner notification
  - WebSocket endpoint with JWT auth and keepalive
  - User search API for @mention autocomplete
  - Alembic migration for 4 new tables

- Frontend (React + Vite):
  - Comments component with @mention autocomplete
  - NotificationBell with real-time WebSocket updates
  - BlockerDialog for task blocking workflow
  - NotificationContext for state management

- OpenSpec:
  - 4 requirements with scenarios defined
  - add-collaboration change archived

🤖 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-29 20:45:07 +08:00
parent 61fe01cb6b
commit 3470428411
38 changed files with 3088 additions and 4 deletions

View File

@@ -11,6 +11,15 @@ from app.schemas.task import (
TaskCreate, TaskUpdate, TaskResponse, TaskWithDetails, TaskListResponse,
TaskStatusUpdate as TaskStatusChangeUpdate, TaskAssignUpdate, Priority
)
from app.schemas.comment import (
CommentCreate, CommentUpdate, CommentResponse, CommentListResponse
)
from app.schemas.notification import (
NotificationResponse, NotificationListResponse, UnreadCountResponse
)
from app.schemas.blocker import (
BlockerCreate, BlockerResolve, BlockerResponse, BlockerListResponse
)
__all__ = [
"LoginRequest",
@@ -44,4 +53,15 @@ __all__ = [
"TaskStatusChangeUpdate",
"TaskAssignUpdate",
"Priority",
"CommentCreate",
"CommentUpdate",
"CommentResponse",
"CommentListResponse",
"NotificationResponse",
"NotificationListResponse",
"UnreadCountResponse",
"BlockerCreate",
"BlockerResolve",
"BlockerResponse",
"BlockerListResponse",
]