feat: implement audit trail alignment (soft delete & permission audit)
- Task Soft Delete:
- Add is_deleted, deleted_at, deleted_by fields to Task model
- Convert DELETE to soft delete with cascade to subtasks
- Add include_deleted query param (admin only)
- Add POST /api/tasks/{id}/restore endpoint
- Exclude deleted tasks from subtask_count
- Permission Change Audit:
- Add user.role_change event (high sensitivity)
- Add user.admin_change event (critical, triggers alert)
- Add PATCH /api/users/{id}/admin endpoint
- Add role.permission_change event type
- Append-Only Enforcement:
- Add DB triggers for audit_logs immutability (manual for production)
- Migration 008 with graceful trigger failure handling
- Tests: 11 new soft delete tests (153 total passing)
- OpenSpec: fix-audit-trail archived, fix-realtime-notifications & fix-weekly-report proposals added
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
This commit is contained in:
38
openspec/changes/fix-weekly-report/specs/automation/spec.md
Normal file
38
openspec/changes/fix-weekly-report/specs/automation/spec.md
Normal file
@@ -0,0 +1,38 @@
|
||||
## MODIFIED Requirements
|
||||
|
||||
### Requirement: Automated Weekly Report
|
||||
系統 SHALL 每週五下午 4:00 自動彙整完整任務清單發送給主管。
|
||||
|
||||
#### Scenario: 週報內容完整清單
|
||||
- **GIVEN** 週報生成中
|
||||
- **WHEN** 系統彙整資料
|
||||
- **THEN** 週報包含各專案的:
|
||||
- 本週已完成任務清單(含 completed_at, assignee_name)
|
||||
- 進行中任務清單(含 assignee_name, due_date)
|
||||
- 逾期任務警示(含 due_date, days_overdue)
|
||||
- 阻礙中任務清單(含 blocker_reason, blocked_since)
|
||||
- 下週預計完成任務(含 due_date, assignee_name)
|
||||
- **AND** 不設任務數量上限
|
||||
|
||||
#### Scenario: 阻礙任務識別
|
||||
- **GIVEN** 任務有未解除的 Blocker 記錄
|
||||
- **WHEN** 週報查詢阻礙任務
|
||||
- **THEN** 系統查詢 Blocker 表 resolved_at IS NULL 的任務
|
||||
- **AND** 顯示阻礙原因與開始時間
|
||||
|
||||
#### Scenario: 下週預計任務
|
||||
- **GIVEN** 任務的 due_date 在下週範圍內
|
||||
- **WHEN** 週報查詢下週預計任務
|
||||
- **THEN** 系統篩選 due_date >= 下週一 且 < 下週日
|
||||
- **AND** 排除已完成狀態的任務
|
||||
|
||||
## MODIFIED Technical Notes
|
||||
|
||||
- 週報 content JSON 結構擴充:
|
||||
- summary: 包含 blocked_count, next_week_count
|
||||
- projects[].completed_tasks: 無數量限制,含 completed_at, assignee_name
|
||||
- projects[].in_progress_tasks: 新增欄位
|
||||
- projects[].blocked_tasks: 新增欄位,含 blocker_reason, blocked_since
|
||||
- projects[].next_week_tasks: 新增欄位,含 due_date, assignee_name
|
||||
- 阻礙任務透過 Blocker 表 subquery 查詢
|
||||
- 下週計算以本週結束後 7 天為範圍
|
||||
Reference in New Issue
Block a user