需求:发布匹配成功后订单要停在待加好友,客服线下通知加好友、手动确认后才进赠送冷却。 - 新增 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 例)全绿。
27 lines
1.1 KiB
TypeScript
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')
|
|
})
|