From 1f3c98c071a9173151029c474e277201c22c0d83 Mon Sep 17 00:00:00 2001 From: zhaoxing <2558691827@qq.com> Date: Fri, 13 Nov 2026 14:20:49 +0800 Subject: [PATCH] =?UTF-8?q?fix(consignment):=20=E4=BB=85=E8=87=AA=E5=8A=A8?= =?UTF-8?q?=E5=8C=B9=E9=85=8D=E5=91=BD=E4=B8=AD=E6=97=B6=E5=8F=91=E9=80=81?= =?UTF-8?q?=E7=9F=AD=E4=BF=A1?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 后台手动匹配与手动拼单不再发送短信;同步更新后台提示文案与集成测试断言。 --- .../consignment-matching.integration.test.ts | 18 ++---------------- .../worker-platform/consignment-sms-service.ts | 6 +++++- .../pages/admin/panels/NotificationsPanel.tsx | 4 ++-- 3 files changed, 9 insertions(+), 19 deletions(-) diff --git a/apps/backend/src/services/worker-platform/consignment-matching.integration.test.ts b/apps/backend/src/services/worker-platform/consignment-matching.integration.test.ts index b4ed3aa7..cb9852b0 100644 --- a/apps/backend/src/services/worker-platform/consignment-matching.integration.test.ts +++ b/apps/backend/src/services/worker-platform/consignment-matching.integration.test.ts @@ -818,13 +818,7 @@ async function main() { 'SELECT * FROM consignment_sms_logs WHERE work_order_id = $1 AND inventory_id = $2', [Number(exactWo.id), Number(invARow.id)], ) - const smsRow = sms.rows[0] - assert(smsRow, '手动匹配没有生成短信记录') - assert(smsRow.status === 'sent', `短信状态=${smsRow.status}`) - assert(smsRow.phone === '13800138000', `短信手机号=${smsRow.phone}`) - assert(smsRow.match_type === 'manual', `短信 match_type=${smsRow.match_type}`) - assert(String(smsRow.content).includes('【CTEST】'), `短信内容=${smsRow.content}`) - assert(String(smsRow.content).includes('CT-WO-EXACT-'), `短信内容=${smsRow.content}`) + assert(sms.rows.length === 0, '手动匹配不得发送短信') }, ) @@ -1064,15 +1058,7 @@ async function main() { 'SELECT * FROM consignment_sms_logs WHERE work_order_id = $1 ORDER BY id', [Number(shareWo.id)], ) - assert(sms.rows.length === 2, `拼单短信=${sms.rows.length}`) - assert( - sms.rows.every((row) => row.status === 'sent'), - '拼单短信必须全部发送成功', - ) - assert( - sms.rows.every((row) => row.match_type === 'manual'), - '拼单短信 match_type 必须 manual', - ) + assert(sms.rows.length === 0, '手动拼单不得发送短信') const wo = await query>('SELECT * FROM work_orders WHERE id = $1', [ Number(shareWo.id), ]) diff --git a/apps/backend/src/services/worker-platform/consignment-sms-service.ts b/apps/backend/src/services/worker-platform/consignment-sms-service.ts index e8a490f6..b62810ca 100644 --- a/apps/backend/src/services/worker-platform/consignment-sms-service.ts +++ b/apps/backend/src/services/worker-platform/consignment-sms-service.ts @@ -54,8 +54,9 @@ function resolveSellerPhone(inventory: ConsignmentInventoryRow): string { } /** - * 寄卖匹配成功短信:自动匹配、后台手动匹配、拼单份额匹配都会走这里。 + * 寄卖匹配成功短信:只在自动匹配命中后发送。 * + * 业务口径:后台手动匹配、手动拼单不发送短信;只有分类开启自动匹配并实际命中时才发。 * 发送记录以「工单 + 库存」为幂等键:同一工单同一库存只发一次; * 短信失败不回滚匹配事务,只记录 failed 便于后台排查/补发。 */ @@ -63,6 +64,9 @@ export async function sendConsignmentMatchSuccessSms( payload: ConsignmentMatchSmsPayload, ): Promise { try { + if (payload.matchType !== 'auto') { + return 'skipped' + } const config = getWorkerPlatformNotificationConfig().consignmentMatchSms if (!config.enabled) { return 'skipped' diff --git a/apps/frontend/src/pages/admin/panels/NotificationsPanel.tsx b/apps/frontend/src/pages/admin/panels/NotificationsPanel.tsx index a06bd7c4..5389c838 100644 --- a/apps/frontend/src/pages/admin/panels/NotificationsPanel.tsx +++ b/apps/frontend/src/pages/admin/panels/NotificationsPanel.tsx @@ -175,8 +175,8 @@ export default function NotificationsPanel() {