v3.5.11企业微信通知调整
CI / verify (pull_request) Waiting to run

This commit is contained in:
2026-08-26 09:55:19 +08:00
parent 632539e8dc
commit 3afbdfe6b9
17 changed files with 775 additions and 83 deletions
@@ -0,0 +1,36 @@
import { describe, expect, it } from 'vitest';
import {
WECOM_PUSH_CONDITION_GROUPS,
WECOM_PUSH_CONDITION_LABELS,
WECOM_PUSH_DEFAULT_SETTLEMENT_CONDITIONS,
WECOM_SETTLEMENT_PUSH_NAME,
parseWecomPushConditions,
} from './wecom-message-push';
describe('wecom-message-push', () => {
it('alert.settlement 展示为结算任务失败通知且在系统监控组', () => {
expect(WECOM_PUSH_CONDITION_LABELS['alert.settlement']).toBe('结算任务失败通知');
const system = WECOM_PUSH_CONDITION_GROUPS.find((g) => g.key === 'system');
expect(system?.conditions).toEqual(['alert.system', 'alert.settlement']);
});
it('默认结算通知群条件含任务失败与四账单', () => {
expect(WECOM_SETTLEMENT_PUSH_NAME).toBe('结算通知群');
expect(WECOM_PUSH_DEFAULT_SETTLEMENT_CONDITIONS).toEqual(
expect.arrayContaining([
'alert.settlement',
'store.withdraw_approved',
'finance.store_bill',
'finance.partner_bill',
'finance.winery_bill',
'finance.logistics_bill',
]),
);
});
it('解析新财务条件', () => {
expect(parseWecomPushConditions(['finance.store_bill', 'bogus'])).toEqual([
'finance.store_bill',
]);
});
});
+122 -6
View File
@@ -1,4 +1,4 @@
/** 企微群机器人 Webhook · 推送条件(v3.4.11 + v3.5.3 业务通知) */
/** 企微群机器人 Webhook · 推送条件(v3.4.11 + v3.5.3 业务通知 + v3.5.11 结算通知 */
export const WECOM_PUSH_CONDITIONS = [
'alert.ops',
'support_ticket.created',
@@ -11,9 +11,14 @@ export const WECOM_PUSH_CONDITIONS = [
'store.package_audit_pending',
'store.info_change_pending',
'store.withdraw_pending',
'store.withdraw_approved',
'order.paid',
'redeem.success',
'invoice.pending',
'finance.store_bill',
'finance.partner_bill',
'finance.winery_bill',
'finance.logistics_bill',
] as const;
export type WecomPushCondition = (typeof WECOM_PUSH_CONDITIONS)[number];
@@ -24,15 +29,20 @@ export const WECOM_PUSH_CONDITION_LABELS: Record<WecomPushCondition, string> = {
'alert.pay': '支付异常',
'alert.redeem': '核销异常',
'alert.system': '系统监控(5xx、回调、定时任务)',
'alert.settlement': '结算任务告警',
'alert.settlement': '结算任务失败通知',
'dev_plan.task_dispatch': '开发任务评审派发',
'store.audit_pending': '门店提交/重提待审',
'store.package_audit_pending': '套餐变更待审',
'store.info_change_pending': '门店信息变更待审',
'store.withdraw_pending': '门店手动提现待审',
'store.withdraw_approved': '门店手动提现已通过',
'order.paid': '订单支付成功',
'redeem.success': '门店核销成功',
'invoice.pending': '发票申请待开票',
'finance.store_bill': '门店日账单已生成',
'finance.partner_bill': '合伙人月账单已生成',
'finance.winery_bill': '酒厂日账单已生成',
'finance.logistics_bill': '物流月对账已生成',
};
export const WECOM_PUSH_CONDITION_GROUPS: Array<{
@@ -68,9 +78,20 @@ export const WECOM_PUSH_CONDITION_GROUPS: Array<{
},
{
key: 'system',
label: '系统与结算',
label: '系统监控',
conditions: ['alert.system', 'alert.settlement'],
},
{
key: 'settlement',
label: '结算通知',
conditions: [
'store.withdraw_approved',
'finance.store_bill',
'finance.partner_bill',
'finance.winery_bill',
'finance.logistics_bill',
],
},
{
key: 'dev_plan',
label: '开发计划',
@@ -115,9 +136,20 @@ export const WECOM_PUSH_DEFAULT_DEAL_BROADCAST_CONDITIONS: WecomPushCondition[]
'redeem.success',
];
/** 默认「结算通知群」 */
export const WECOM_PUSH_DEFAULT_SETTLEMENT_CONDITIONS: WecomPushCondition[] = [
'alert.settlement',
'store.withdraw_approved',
'finance.store_bill',
'finance.partner_bill',
'finance.winery_bill',
'finance.logistics_bill',
];
export const WECOM_STORE_AUDIT_PUSH_NAME = '门店审核通知群';
export const WECOM_BIZ_TODO_PUSH_NAME = '业务待办通知群';
export const WECOM_DEAL_BROADCAST_PUSH_NAME = '成交播报群';
export const WECOM_SETTLEMENT_PUSH_NAME = '结算通知群';
/** 占位 webhook(未配置真实 key 时禁用,避免误推) */
export const WECOM_STORE_AUDIT_PLACEHOLDER_WEBHOOK =
@@ -131,7 +163,12 @@ export const WECOM_TEMPLATE_EVENT_KEYS = [
'store.package_audit_pending',
'store.info_change_pending',
'store.withdraw_pending',
'store.withdraw_approved',
'invoice.pending',
'finance.store_bill',
'finance.partner_bill',
'finance.winery_bill',
'finance.logistics_bill',
] as const;
export type WecomTemplateEventKey = (typeof WECOM_TEMPLATE_EVENT_KEYS)[number];
@@ -143,14 +180,50 @@ export const WECOM_TEMPLATE_EVENT_LABELS: Record<WecomTemplateEventKey, string>
'store.package_audit_pending': '套餐变更待审',
'store.info_change_pending': '门店信息变更待审',
'store.withdraw_pending': '门店手动提现待审',
'store.withdraw_approved': '门店手动提现已通过',
'invoice.pending': '发票申请待开票',
'finance.store_bill': '门店日账单已生成',
'finance.partner_bill': '合伙人月账单已生成',
'finance.winery_bill': '酒厂日账单已生成',
'finance.logistics_bill': '物流月对账已生成',
};
/** 各事件可用占位符说明(HQ 模板编辑) */
export const WECOM_TEMPLATE_PLACEHOLDERS: Record<WecomTemplateEventKey, string[]> = {
'order.paid': ['orderNo', 'payAmount', 'cityName', 'skuSummary', 'phoneMasked', 'time', 'handleUrl', 'handleLabel'],
'redeem.success': ['redeemNo', 'amount', 'storeName', 'channel', 'time', 'handleUrl', 'handleLabel'],
'store.audit_pending': ['storeName', 'cityName', 'partnerLabel', 'action', 'time', 'handleUrl', 'handleLabel', 'storeId'],
'order.paid': [
'orderNo',
'payAmount',
'cityName',
'skuSummary',
'deliveryLabel',
'receiverInfo',
'phoneMasked',
'time',
'handleUrl',
'handleLabel',
],
'redeem.success': [
'redeemNo',
'amount',
'storeName',
'channel',
'userName',
'userPhone',
'time',
'handleUrl',
'handleLabel',
],
'store.audit_pending': [
'storeName',
'cityName',
'submitter',
'partnerLabel',
'action',
'time',
'handleUrl',
'handleLabel',
'storeId',
],
'store.package_audit_pending': [
'storeName',
'cityName',
@@ -181,6 +254,16 @@ export const WECOM_TEMPLATE_PLACEHOLDERS: Record<WecomTemplateEventKey, string[]
'handleLabel',
'storeId',
],
'store.withdraw_approved': [
'storeName',
'withdrawNo',
'amount',
'bankAccount',
'time',
'handleUrl',
'handleLabel',
'storeId',
],
'invoice.pending': [
'invoiceNo',
'orderNo',
@@ -191,6 +274,39 @@ export const WECOM_TEMPLATE_PLACEHOLDERS: Record<WecomTemplateEventKey, string[]
'handleUrl',
'handleLabel',
],
'finance.store_bill': [
'period',
'billCount',
'billSummary',
'time',
'handleUrl',
'handleLabel',
],
'finance.partner_bill': [
'period',
'billCount',
'billSummary',
'time',
'handleUrl',
'handleLabel',
],
'finance.winery_bill': [
'period',
'amount',
'orderCount',
'bankAccount',
'time',
'handleUrl',
'handleLabel',
],
'finance.logistics_bill': [
'period',
'billCount',
'billSummary',
'time',
'handleUrl',
'handleLabel',
],
};
export type WecomPushTemplateDto = {