- Event-based triggers (Phase 1): - Trigger/TriggerLog models with field_change type - TriggerService for condition evaluation and action execution - Trigger CRUD API endpoints - Task integration (status, assignee, priority changes) - Frontend: TriggerList, TriggerForm components - Weekly reports (Phase 2): - ScheduledReport/ReportHistory models - ReportService for stats generation - APScheduler for Friday 16:00 job - Report preview/generate/history API - Frontend: WeeklyReportPreview, ReportHistory components - Tests: 23 new tests (14 triggers + 9 reports) - OpenSpec: add-automation change archived 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
3.2 KiB
3.2 KiB
Phase 1: Event-Based Triggers
1.1 Database Schema
- 1.1.1 建立 Trigger model (
pjctrl_triggers) - 1.1.2 建立 TriggerLog model (
pjctrl_trigger_logs) - 1.1.3 建立 Alembic migration
- 1.1.4 定義 TriggerType enum (field_change, schedule)
1.2 Trigger Service
- 1.2.1 建立 TriggerService 類別
- 1.2.2 實作 evaluate_triggers(task, old_values, new_values) 方法
- 1.2.3 實作 check_condition(condition, old_value, new_value) 方法
- 1.2.4 實作 execute_action(action, task, user) 方法
- 1.2.5 實作 log_execution(trigger, task, status, error) 方法
1.3 Trigger API
- 1.3.1 建立 Trigger schemas (request/response)
- 1.3.2 實作 POST
/api/projects/{project_id}/triggers- 建立 - 1.3.3 實作 GET
/api/projects/{project_id}/triggers- 列表 - 1.3.4 實作 GET
/api/triggers/{id}- 詳情 - 1.3.5 實作 PUT
/api/triggers/{id}- 更新 - 1.3.6 實作 DELETE
/api/triggers/{id}- 刪除 - 1.3.7 實作 GET
/api/triggers/{id}/logs- 執行日誌
1.4 Task Integration
- 1.4.1 修改 update_task endpoint 整合觸發器評估
- 1.4.2 修改 update_task_status endpoint 整合觸發器評估
- 1.4.3 修改 assign_task endpoint 整合觸發器評估
1.5 Frontend - Triggers
- 1.5.1 建立 triggers.ts service
- 1.5.2 建立 TriggerList 元件
- 1.5.3 建立 TriggerForm 元件(條件/動作設定)
- 1.5.4 整合至 Project 設定頁面
1.6 Testing - Phase 1
- 1.6.1 TriggerService 單元測試
- 1.6.2 Trigger API 端點測試
- 1.6.3 觸發器執行整合測試
Phase 2: Weekly Reports
2.1 Database Schema
- 2.1.1 建立 ScheduledReport model (
pjctrl_scheduled_reports) - 2.1.2 建立 ReportHistory model (
pjctrl_report_history) - 2.1.3 建立 Alembic migration
2.2 Report Service
- 2.2.1 建立 ReportService 類別
- 2.2.2 實作 generate_weekly_report(user_id) 方法
- 2.2.3 實作 get_weekly_stats(user_id, week_start) 方法
- 2.2.4 實作 send_report_notification(user_id, report) 方法
- 2.2.5 實作 save_report_history(report) 方法
2.3 Scheduler Setup
- 2.3.1 安裝 APScheduler
- 2.3.2 建立 scheduler.py 設定檔
- 2.3.3 設定週五 16:00 排程任務
- 2.3.4 整合至 main.py 啟動流程
2.4 Report API
- 2.4.1 建立 Report schemas
- 2.4.2 實作 GET
/api/reports/weekly/preview- 預覽 - 2.4.3 實作 POST
/api/reports/weekly/generate- 手動觸發 - 2.4.4 實作 GET
/api/reports/history- 歷史紀錄
2.5 Frontend - Reports
- 2.5.1 建立 reports.ts service
- 2.5.2 建立 WeeklyReportPreview 元件
- 2.5.3 建立 ReportHistory 元件
- 2.5.4 新增管理員報告頁面
2.6 Testing - Phase 2
- 2.6.1 ReportService 單元測試
- 2.6.2 週報生成測試
- 2.6.3 排程執行測試
Phase 3: Advanced Features (Optional)
3.1 Schedule Triggers
- 3.1.1 支援 cron 表達式觸發器
- 3.1.2 截止日期提醒觸發器
3.2 Additional Actions
- 3.2.1 更新欄位動作
- 3.2.2 自動指派動作
3.3 Complex Conditions
- 3.3.1 AND/OR 複合條件
- 3.3.2 多欄位條件