Backend: - Add soft delete for spaces and projects (is_active flag) - Add status_id and assignee_id to TaskUpdate schema - Fix task PATCH endpoint to update status and assignee - Add validation for assignee_id and status_id in task updates - Fix health service to count tasks with "Blocked" status as blockers - Filter out deleted spaces/projects from health dashboard - Add workload cache invalidation on assignee changes Frontend: - Add delete confirmation dialogs for spaces and projects - Fix UserSelect to display selected user name (valueName prop) - Fix task detail modal to refresh data after save - Enforce 2-level subtask depth limit in UI - Fix timezone bug in date formatting (use local timezone) - Convert NotificationBell from Tailwind to inline styles - Add i18n translations for health, workload, settings pages - Add parent_task_id to Task interface across components OpenSpec: - Archive add-delete-capability change 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
107 lines
2.8 KiB
JSON
107 lines
2.8 KiB
JSON
{
|
||
"title": "專案健康度儀表板",
|
||
"subtitle": "監控所有專案的健康狀況與風險等級",
|
||
"overall": {
|
||
"title": "整體健康度",
|
||
"healthy": "健康",
|
||
"atRisk": "風險中",
|
||
"critical": "危急"
|
||
},
|
||
"summary": {
|
||
"totalProjects": "專案總數",
|
||
"healthy": "健康",
|
||
"atRisk": "風險中",
|
||
"highRisk": "高風險",
|
||
"critical": "危急",
|
||
"avgHealth": "平均健康度",
|
||
"withBlockers": "有阻擋問題",
|
||
"delayed": "延遲"
|
||
},
|
||
"calculation": {
|
||
"title": "健康度計算方式",
|
||
"formula": "起始分數 100 分,依據以下因素扣分:",
|
||
"blockers": "阻擋問題:每項 -10 分(最多 -30 分)",
|
||
"overdue": "逾期任務:每項 -5 分(最多 -30 分)",
|
||
"completion": "完成度不足:若低於 50%,最多 -20 分",
|
||
"thresholds": "風險等級閾值:",
|
||
"lowRisk": "低風險(健康):≥ 80 分",
|
||
"mediumRisk": "中風險:60-79 分",
|
||
"highRiskLevel": "高風險:40-59 分",
|
||
"criticalRisk": "危急:< 40 分"
|
||
},
|
||
"sort": {
|
||
"label": "排序方式",
|
||
"riskHigh": "風險:高到低",
|
||
"riskLow": "風險:低到高",
|
||
"healthHigh": "健康度:高到低",
|
||
"healthLow": "健康度:低到高",
|
||
"name": "名稱:A 到 Z"
|
||
},
|
||
"metrics": {
|
||
"schedule": "進度",
|
||
"budget": "預算",
|
||
"scope": "範圍",
|
||
"quality": "品質",
|
||
"resources": "資源"
|
||
},
|
||
"status": {
|
||
"onTrack": "正常進行",
|
||
"delayed": "延遲",
|
||
"ahead": "超前",
|
||
"overBudget": "超支",
|
||
"underBudget": "低於預算",
|
||
"atRisk": "有風險"
|
||
},
|
||
"resourceStatus": {
|
||
"adequate": "充足",
|
||
"constrained": "受限",
|
||
"overloaded": "超載"
|
||
},
|
||
"card": {
|
||
"health": "健康度",
|
||
"schedule": "進度",
|
||
"resources": "資源",
|
||
"owner": "負責人",
|
||
"taskProgress": "任務進度",
|
||
"blockers": "阻擋問題",
|
||
"overdue": "逾期",
|
||
"complete": "完成"
|
||
},
|
||
"riskLevel": {
|
||
"low": "低風險",
|
||
"medium": "中風險",
|
||
"high": "高風險",
|
||
"critical": "危急"
|
||
},
|
||
"indicators": {
|
||
"title": "健康指標",
|
||
"taskCompletion": "任務完成率",
|
||
"onTimeDelivery": "準時交付率",
|
||
"blockedTasks": "阻擋任務數",
|
||
"overdueRate": "逾期率",
|
||
"velocityTrend": "速度趨勢"
|
||
},
|
||
"risks": {
|
||
"title": "風險",
|
||
"high": "高風險",
|
||
"medium": "中風險",
|
||
"low": "低風險",
|
||
"critical": "危急",
|
||
"mitigated": "已緩解"
|
||
},
|
||
"actions": {
|
||
"viewDetails": "查看詳情",
|
||
"exportReport": "匯出報告",
|
||
"setAlert": "設定警示",
|
||
"retry": "重試"
|
||
},
|
||
"projectCount": "{{count}} 個專案",
|
||
"empty": {
|
||
"title": "沒有專案",
|
||
"description": "建立專案以開始追蹤健康狀態"
|
||
},
|
||
"error": {
|
||
"loadFailed": "載入專案健康度資料失敗,請重試。"
|
||
}
|
||
}
|