任務牆 table schema.md
29 additions, 1 deletions
| ... | ... | @@ -68,7 +68,6 @@ |
| 68 | -| available (rule engine寫入) | boolean | 是否採取計分 (連續累積型的登入此值為null ) | true | | |
| 69 | 68 | } |
| 70 | 69 | ] |
| 70 | +``` | |
| 71 | + | |
| 72 | +# rule engine流程步驟: | |
| 73 | + | |
| 74 | +```scss | |
| 75 | +Step 1:檢索目標任務範圍 | |
| 76 | +獲取目前任務牆中所有「進行中」的母任務及其所屬的子任務清單。 | |
| 77 | + | |
| 78 | +Step 2:用戶任務資格過濾 | |
| 79 | +根據用戶身分與任務屬性,篩選出該用戶目前「可執行」的子任務: | |
| 80 | +權限檢查:判斷母任務是否為「封測限制」;若否,則開放給全體用戶。 | |
| 81 | +狀態過濾:比對用戶任務紀錄總計表 (UserSummaryRecord),排除該用戶已完成的子任務。 | |
| 82 | +目標鎖定:僅保留「進行中」以及「尚未有紀錄(新任務)」的子任務清單,作為本次判定的候選名單。 | |
| 83 | + | |
| 84 | +Step 3:載入子任務設定 | |
| 85 | +自 任務設定子表 (TaskSubSetting) 中,讀取 Step 2 篩選出的子任務詳細規則(Rule Conditions)與達成參數。 | |
| 86 | + | |
| 87 | +Step 4:事件規則匹配與寫入 | |
| 88 | +接收來自 用戶事件紀錄表 (UserEventLog) 的 Payload(事件內容),並與 Step 3 的規則進行比對: | |
| 89 | +符合規則:於 用戶任務紀錄表 (UserTaskLog) 新增一筆執行紀錄。 | |
| 90 | +不符合:結束本次觸發,不寫入任何紀錄。 | |
| 91 | + | |
| 92 | +Step 5:彙整進度更新 | |
| 93 | +依據 UserTaskLog 的最新變動,重新計算該用戶在該母任務下的各項進度指標,並同步更新至 用戶任務紀錄總計表 (UserSummaryRecord)。 | |
| 94 | + | |
| 95 | +Step 6:達成判定與獎勵派發 | |
| 96 | +檢查 UserSummaryRecord 中的子任務狀態: | |
| 97 | +若狀態更新為「已完成」,則於 用戶領獎紀錄表 (UserAwardRecord) 寫入一筆新資料。 | |
| 98 | +獎勵狀態預設標記為「未領取」。 |