Files
order_site/apps/frontend/tests/gift-phase.test.ts
T
yml2213 d6f6219fe9 feat(consignment): 内部现货履约改为停在「待加好友」,由客服确认后进赠送冷却
需求:发布匹配成功后订单要停在待加好友,客服线下通知加好友、手动确认后才进赠送冷却。

- 新增 parkWorkOrderWaitingFriendAddWithClient:占库落地时把工单停在
  acceptance_mode=friend_gift + gift_phase=material_required 的「待加好友」阶段,
  friend_added_at / gift_available_at / deadline_at 都留空(没有打手在跑,不该背时限),
  并把商品规则里的冷却时长落到工单上(两者都为 0 时补默认 72 小时,
  否则客服确认后会得到 0 秒冷却而立刻可赠送)。
- 履约服务不再传 forceFriendGift(该开关会直接把 friend_added_at 写成当前时间、
  跳过客服确认);同步删除这个已无调用方的开关,冷却起始事件里的
  skippedWorkerMaterial 改为按是否内部现货履约判断。
- 前端:内部现货单在该阶段显示「待加好友」(原为「待打手提交资料」),
  确认按钮统一为「确认加好友」,确认弹窗补上"先用库存账号加好友、通知进展记备注"的引导。
- 后台备注增加快捷项「已通知加好友」,一键追加「[已通知加好友] 操作人 时间」。
- 阶段文案抽到 utils/gift-phase.ts 以便单测覆盖这条口径。

验证:真实库跑通全链路(停阶段 → 确认加好友进冷却 → 重复确认被拒 → 事件流正确,临时单已清理);
后端 415 例(412 通过,新增 3 例)、前端 25 例(新增 4 例)全绿。
2026-09-16 21:02:50 +08:00

27 lines
1.1 KiB
TypeScript

import assert from 'node:assert/strict'
import test from 'node:test'
import { formatGiftPhase, resolveGiftPhaseColor } from '../src/utils/gift-phase.ts'
test('内部现货履约单停在 material_required 时显示待加好友', () => {
assert.equal(formatGiftPhase('material_required', true), '待加好友')
})
test('打手履约单的 material_required 仍是待打手提交资料', () => {
assert.equal(formatGiftPhase('material_required'), '待打手提交资料')
assert.equal(formatGiftPhase('material_required', false), '待打手提交资料')
})
test('其余阶段文案不受履约方式影响', () => {
assert.equal(formatGiftPhase('material_submitted', true), '待确认加好友')
assert.equal(formatGiftPhase('friend_countdown', true), '赠送冷却中')
assert.equal(formatGiftPhase('gift_ready', true), '可赠送')
assert.equal(formatGiftPhase('unknown_phase', true), 'unknown_phase')
})
test('阶段配色保持稳定', () => {
assert.equal(resolveGiftPhaseColor('material_required'), 'orange')
assert.equal(resolveGiftPhaseColor('friend_countdown'), 'gold')
assert.equal(resolveGiftPhaseColor('unknown_phase'), 'default')
})