## Security Enhancements (P0) - Add input validation with max_length and numeric range constraints - Implement WebSocket token authentication via first message - Add path traversal prevention in file storage service ## Permission Enhancements (P0) - Add project member management for cross-department access - Implement is_department_manager flag for workload visibility ## Cycle Detection (P0) - Add DFS-based cycle detection for task dependencies - Add formula field circular reference detection - Display user-friendly cycle path visualization ## Concurrency & Reliability (P1) - Implement optimistic locking with version field (409 Conflict on mismatch) - Add trigger retry mechanism with exponential backoff (1s, 2s, 4s) - Implement cascade restore for soft-deleted tasks ## Rate Limiting (P1) - Add tiered rate limits: standard (60/min), sensitive (20/min), heavy (5/min) - Apply rate limits to tasks, reports, attachments, and comments ## Frontend Improvements (P1) - Add responsive sidebar with hamburger menu for mobile - Improve touch-friendly UI with proper tap target sizes - Complete i18n translations for all components ## Backend Reliability (P2) - Configure database connection pool (size=10, overflow=20) - Add Redis fallback mechanism with message queue - Add blocker check before task deletion ## API Enhancements (P3) - Add standardized response wrapper utility - Add /health/ready and /health/live endpoints - Implement project templates with status/field copying ## Tests Added - test_input_validation.py - Schema and path traversal tests - test_concurrency_reliability.py - Optimistic locking and retry tests - test_backend_reliability.py - Connection pool and Redis tests - test_api_enhancements.py - Health check and template tests Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
214 lines
6.3 KiB
JSON
214 lines
6.3 KiB
JSON
{
|
|
"title": "任務",
|
|
"createTask": "建立任務",
|
|
"editTask": "編輯任務",
|
|
"deleteTask": "刪除任務",
|
|
"taskDetails": "任務詳情",
|
|
"fields": {
|
|
"title": "標題",
|
|
"titlePlaceholder": "輸入任務標題",
|
|
"description": "描述",
|
|
"descriptionPlaceholder": "輸入任務描述",
|
|
"status": "狀態",
|
|
"priority": "優先順序",
|
|
"assignee": "負責人",
|
|
"dueDate": "截止日期",
|
|
"startDate": "開始日期",
|
|
"estimatedHours": "預估工時",
|
|
"actualHours": "實際工時",
|
|
"progress": "進度",
|
|
"tags": "標籤",
|
|
"parent": "父任務",
|
|
"subtasks": "子任務",
|
|
"attachments": "附件",
|
|
"comments": "留言",
|
|
"watchers": "關注者",
|
|
"blockers": "阻擋項目",
|
|
"hours": "{{count}} 小時"
|
|
},
|
|
"status": {
|
|
"todo": "待處理",
|
|
"in_progress": "進行中",
|
|
"review": "審核中",
|
|
"done": "已完成",
|
|
"cancelled": "已取消",
|
|
"blocked": "被阻擋",
|
|
"noStatus": "無狀態",
|
|
"unassigned": "未指派",
|
|
"noDueDate": "無截止日期",
|
|
"notEstimated": "未預估"
|
|
},
|
|
"priority": {
|
|
"low": "低",
|
|
"medium": "中",
|
|
"high": "高",
|
|
"urgent": "緊急"
|
|
},
|
|
"views": {
|
|
"list": "列表",
|
|
"kanban": "看板",
|
|
"calendar": "日曆",
|
|
"gantt": "甘特圖",
|
|
"timeline": "時間軸"
|
|
},
|
|
"filters": {
|
|
"all": "全部任務",
|
|
"myTasks": "我的任務",
|
|
"unassigned": "未指派",
|
|
"overdue": "逾期",
|
|
"dueThisWeek": "本週到期",
|
|
"highPriority": "高優先順序",
|
|
"recentlyUpdated": "最近更新"
|
|
},
|
|
"sort": {
|
|
"sortBy": "排序方式",
|
|
"dueDate": "截止日期",
|
|
"priority": "優先順序",
|
|
"status": "狀態",
|
|
"title": "標題",
|
|
"createdAt": "建立時間",
|
|
"updatedAt": "更新時間",
|
|
"ascending": "升序",
|
|
"descending": "降序"
|
|
},
|
|
"actions": {
|
|
"assign": "指派",
|
|
"reassign": "重新指派",
|
|
"changeStatus": "變更狀態",
|
|
"changePriority": "變更優先順序",
|
|
"addSubtask": "新增子任務",
|
|
"addComment": "新增留言",
|
|
"addAttachment": "新增附件",
|
|
"addWatcher": "新增關注者",
|
|
"removeWatcher": "移除關注者",
|
|
"duplicate": "複製任務",
|
|
"archive": "封存",
|
|
"restore": "還原",
|
|
"moveToProject": "移至專案"
|
|
},
|
|
"subtasks": {
|
|
"title": "子任務",
|
|
"add": "新增子任務",
|
|
"placeholder": "輸入子任務標題",
|
|
"completed": "已完成 {{count}} / {{total}}",
|
|
"count": "{{count}} 個子任務",
|
|
"empty": "沒有子任務",
|
|
"adding": "新增中...",
|
|
"error": {
|
|
"load": "載入子任務失敗",
|
|
"create": "建立子任務失敗"
|
|
}
|
|
},
|
|
"comments": {
|
|
"title": "留言",
|
|
"add": "發表留言",
|
|
"placeholder": "新增留言... 使用 @name 來提及某人",
|
|
"edited": "已編輯",
|
|
"delete": "刪除留言",
|
|
"confirmDelete": "確定要刪除此留言嗎?此操作無法復原。",
|
|
"empty": "還沒有留言",
|
|
"reply": "回覆",
|
|
"mentioned": "提及",
|
|
"replyingTo": "回覆留言中",
|
|
"posting": "發送中...",
|
|
"error": {
|
|
"load": "載入留言失敗",
|
|
"post": "發表留言失敗",
|
|
"update": "更新留言失敗",
|
|
"delete": "刪除留言失敗"
|
|
}
|
|
},
|
|
"attachments": {
|
|
"title": "附件",
|
|
"add": "新增附件",
|
|
"upload": "上傳檔案",
|
|
"dragDrop": "拖放檔案至此或點擊上傳",
|
|
"maxSize": "最大檔案大小:{{size}}MB",
|
|
"downloading": "下載中...",
|
|
"empty": "沒有附件"
|
|
},
|
|
"blockers": {
|
|
"title": "阻擋項目",
|
|
"add": "新增阻擋項目",
|
|
"blockedBy": "被以下任務阻擋",
|
|
"blocking": "正在阻擋以下任務",
|
|
"remove": "移除阻擋關係",
|
|
"empty": "沒有阻擋項目",
|
|
"taskBlocked": "任務被阻擋",
|
|
"markAsBlocked": "標記為阻擋",
|
|
"activeBlocker": "進行中的阻擋",
|
|
"reportedBy": "回報者",
|
|
"on": "於",
|
|
"resolutionNote": "解決說明",
|
|
"resolutionPlaceholder": "描述如何解決阻擋問題...",
|
|
"resolving": "解決中...",
|
|
"resolveBlocker": "解決阻擋",
|
|
"blockerReason": "阻擋原因",
|
|
"reasonPlaceholder": "描述阻擋此任務的原因...",
|
|
"history": "阻擋歷史",
|
|
"reported": "回報",
|
|
"resolved": "已解決",
|
|
"error": {
|
|
"load": "載入阻擋項目失敗",
|
|
"create": "建立阻擋項目失敗",
|
|
"resolve": "解決阻擋項目失敗"
|
|
}
|
|
},
|
|
"messages": {
|
|
"created": "任務已建立",
|
|
"updated": "任務已更新",
|
|
"deleted": "任務已刪除",
|
|
"statusChanged": "狀態已變更為「{{status}}」",
|
|
"assigned": "已指派給 {{assignee}}",
|
|
"unassigned": "已取消指派",
|
|
"commentAdded": "留言已新增",
|
|
"attachmentUploaded": "附件已上傳",
|
|
"confirmDelete": "確定要刪除此任務嗎?此操作無法復原。"
|
|
},
|
|
"kanban": {
|
|
"dropHere": "將任務拖放至此"
|
|
},
|
|
"calendar": {
|
|
"allAssignees": "所有負責人",
|
|
"allPriorities": "所有優先順序",
|
|
"activeOnly": "僅進行中",
|
|
"completedOnly": "僅已完成",
|
|
"clearFilters": "清除篩選",
|
|
"overdue": "逾期",
|
|
"completed": "已完成"
|
|
},
|
|
"empty": {
|
|
"title": "沒有任務",
|
|
"description": "目前沒有任務。建立您的第一個任務開始吧!",
|
|
"filtered": "沒有符合篩選條件的任務"
|
|
},
|
|
"dependencies": {
|
|
"title": "任務相依性",
|
|
"add": "新增相依性",
|
|
"remove": "移除相依性",
|
|
"predecessor": "前置任務",
|
|
"successor": "後續任務",
|
|
"type": "相依性類型",
|
|
"types": {
|
|
"FS": "完成後開始",
|
|
"SS": "同時開始",
|
|
"FF": "同時完成",
|
|
"SF": "開始後完成"
|
|
},
|
|
"circularError": {
|
|
"title": "偵測到循環相依",
|
|
"description": "新增此相依性會產生循環參照,這是不被允許的。",
|
|
"cyclePath": "相依性循環路徑",
|
|
"helpText": "要解決此問題,請選擇不同的任務作為相依項,或移除循環中現有的某個相依關係。"
|
|
},
|
|
"error": {
|
|
"addFailed": "新增相依性失敗",
|
|
"removeFailed": "移除相依性失敗"
|
|
}
|
|
},
|
|
"conflict": {
|
|
"title": "更新衝突",
|
|
"message": "此任務已被其他使用者修改。請重新整理頁面以取得最新版本,然後再試一次。"
|
|
}
|
|
}
|