2.1 KiB
2.1 KiB
Context
需要支援 Trigger 複合條件(AND-only)、群組通知目標,以及「手動訂閱」的週報收件人規則,並同步更新前端操作介面。
Goals / Non-Goals
- Goals:
- 支援多條件 AND-only 觸發器條件
- 支援
due_date/start_date/custom_fields(含 formula)與before/after/in運算子 - 支援群組通知目標與去重、排除觸發者
- 週報改為手動訂閱且收件人為專案成員(含跨部門)
- 前端同版支援條件編輯與訂閱開關
- Non-Goals:
- 不實作 OR/巢狀條件樹
- 不新增 Email 通知通道
- 不改動排程時間(維持週五 16:00)
Decisions
- 條件結構
field_change觸發器支援兩種條件格式:- Legacy:
{ field, operator, value } - Composite:
{ logic: "and", rules: [ { field, operator, value, field_id? } ] }
- Legacy:
in在日期欄位採{ start, end },且包含邊界。in在文字/下拉/人員欄位採用陣列值。before/after用於日期欄位;before/after也可用於數值類(number/formula)。
- 觸發時機
- 觸發器於任務/自訂欄位更新時評估。
- 規則需同時滿足且至少有一個規則所屬欄位在此次更新中變更,避免無關更新重複觸發。
- 通知目標解析
- 支援
assignee/creator/project_owner/project_members/department:<id>/role:<name>/user:<id>。 project_members包含 owner。department/role解析為組織內所有符合的使用者。- 排除觸發者本人並對收件人去重。
- 支援
- 週報訂閱
- 使用
pjctrl_scheduled_reports作為訂閱資料;一位使用者一筆 weekly 訂閱。 - 週報僅發送給已訂閱使用者。
- 週報內容包含使用者為 owner 或 project member 的所有專案。
- 使用
Risks / Trade-offs
department/role可能觸及非專案成員,需確保用戶理解通知範圍。- 自訂欄位(formula)計算可能帶來額外成本,需避免 N+1 查詢。
Migration Plan
- 無資料庫 schema 變更。
Open Questions
- 無(已確認 AND-only、日期區間 inclusive、role 自由輸入)。