修复首页风险预告与实际发送的排序不一致问题

atRisk.js 之前只按 fireInDays 排序,同一天内多条提醒的先后完全未定义,
和 reminder.js 实际发送时「当天>提前、重要程度降序」的规则对不上,导致
额度卡在中间时首页提示的风险人名和定时任务实际跳过的人不一致。

- 把 importanceRank 从 reminder.js 抽到共享的 src/importance.js,两处复用
- atRisk.js 的 computeAtRisk 排序改为三段式:fireInDays 升序 →
  同天内 kind(当天优先于提前)→ 同 kind 内重要程度降序
- 补充 atRisk.test.js 用例覆盖「同一天多条事件、额度只够一部分」场景
This commit is contained in:
yuming
2026-08-16 09:21:09 +08:00
parent c7bdd3770a
commit d8573359a2
4 changed files with 73 additions and 9 deletions
+14
View File
@@ -0,0 +1,14 @@
/**
* 重要程度排序权重(纯函数)
*
* 从 reminder.js 抽出,供「定时发送」(reminder.js)与「风险预警」(atRisk.js
* 共用同一套排序权重,避免两处各写一套、后续改一处忘了改另一处导致排序不一致。
*/
// 重要程度排序权重,未知值排最后
const IMPORTANCE_RANK = { high: 0, medium: 1, low: 2 }
function importanceRank(v) {
return IMPORTANCE_RANK[v] === undefined ? 3 : IMPORTANCE_RANK[v]
}
module.exports = { importanceRank }