feat: implement soft delete, task editing fixes, and UI improvements

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>
This commit is contained in:
beabigegg
2026-01-10 01:32:13 +08:00
parent 2796cbb42d
commit 55f85d0d3c
44 changed files with 1854 additions and 297 deletions

View File

@@ -11,11 +11,24 @@
"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": "風險:高到低",
@@ -36,7 +49,29 @@
"delayed": "延遲",
"ahead": "超前",
"overBudget": "超支",
"underBudget": "低於預算"
"underBudget": "低於預算",
"atRisk": "有風險"
},
"resourceStatus": {
"adequate": "充足",
"constrained": "受限",
"overloaded": "超載"
},
"card": {
"health": "健康度",
"schedule": "進度",
"resources": "資源",
"owner": "負責人",
"taskProgress": "任務進度",
"blockers": "阻擋問題",
"overdue": "逾期",
"complete": "完成"
},
"riskLevel": {
"low": "低風險",
"medium": "中風險",
"high": "高風險",
"critical": "危急"
},
"indicators": {
"title": "健康指標",