补齐审批退回结果通知 [09-04-approval-return-notification-gap]

这个提交包含在:
2026-09-04 16:22:27 +08:00
父节点 a6ffb7fc3c
当前提交 2e69fe4edb
共修改 19 个文件,包含 857 行新增和 14 行删除
@@ -85,7 +85,7 @@ describe("workflow travel helpers", () => {
});
expect(buildReturnedCopy(reimbursementMeta, "请补发票")).toEqual({
title: "【已退回】报销单 BX-20260325-001",
body: "申请人:刘报销\n金额:880.00\n单号:BX-20260325-001\n结果:已退回:请补发票",
body: "申请人:刘报销\n金额:880.00\n单号:BX-20260325-001\n结果:已退回,可修改后重新提交:请补发票",
});
expect(buildRemindedTaskCopy(reimbursementMeta)).toEqual({
title: "【催办】报销单 BX-20260325-001 待审批",
@@ -97,14 +97,20 @@ describe("workflow travel helpers", () => {
});
});
it("resolves approved and rejected notification types for travel workflows", () => {
expect(resolveWorkflowOutcomeNotificationType("travel_request", "approved")).toBe(
NOTIFICATION_TYPES.travelRequestApproved,
);
expect(resolveWorkflowOutcomeNotificationType("travel_request", "rejected")).toBe(
NOTIFICATION_TYPES.travelRequestRejected,
);
expect(resolveWorkflowOutcomeNotificationType("travel_request", "returned")).toBeNull();
it.each([
["reimbursement", NOTIFICATION_TYPES.reimbursementReturned],
["leave", NOTIFICATION_TYPES.leaveReturned],
["purchase_request", NOTIFICATION_TYPES.purchaseRequestReturned],
["procurement", NOTIFICATION_TYPES.purchaseRequestReturned],
["travel_request", NOTIFICATION_TYPES.travelRequestReturned],
])("resolves returned notification type for %s workflows", (entityType, expectedType) => {
expect(resolveWorkflowOutcomeNotificationType(entityType, "returned")).toBe(expectedType);
});
it("keeps travel approved/rejected and attendance returned outcome mappings unchanged", () => {
expect(resolveWorkflowOutcomeNotificationType("travel_request", "approved")).toBe(NOTIFICATION_TYPES.travelRequestApproved);
expect(resolveWorkflowOutcomeNotificationType("travel_request", "rejected")).toBe(NOTIFICATION_TYPES.travelRequestRejected);
expect(resolveWorkflowOutcomeNotificationType("attendance_correction", "returned")).toBeNull();
});
it("builds pending task productivity summary with overdue buckets", () => {