好友赠送单确认加好友后取消扣押金覆盖撤单撤回取消指派撤单申请与超时问题单处置
This commit is contained in:
@@ -0,0 +1,60 @@
|
||||
import test from 'node:test'
|
||||
import assert from 'node:assert/strict'
|
||||
|
||||
import {
|
||||
isWorkOrderGiftDepositForfeitable,
|
||||
normalizeWorkOrderAcceptanceMode,
|
||||
resolveWorkOrderGiftPhase,
|
||||
WORK_ORDER_ACCEPTANCE_MODE,
|
||||
WORK_ORDER_GIFT_PHASE,
|
||||
} from './work-order-acceptance-mode.js'
|
||||
|
||||
test('好友赠送押金不可退判定收敛确认加好友标记', () => {
|
||||
assert.equal(
|
||||
isWorkOrderGiftDepositForfeitable({
|
||||
acceptance_mode: 'friend_gift',
|
||||
friend_added_at: '2026-08-01T00:00:00.000Z',
|
||||
}),
|
||||
true,
|
||||
)
|
||||
// 未确认加好友(待交资料/已交资料阶段):押金仍可退
|
||||
assert.equal(
|
||||
isWorkOrderGiftDepositForfeitable({
|
||||
acceptance_mode: 'friend_gift',
|
||||
friend_added_at: null,
|
||||
}),
|
||||
false,
|
||||
)
|
||||
// 标准模式不受影响
|
||||
assert.equal(
|
||||
isWorkOrderGiftDepositForfeitable({
|
||||
acceptance_mode: 'standard',
|
||||
friend_added_at: '2026-08-01T00:00:00.000Z',
|
||||
}),
|
||||
false,
|
||||
)
|
||||
assert.equal(isWorkOrderGiftDepositForfeitable({}), false)
|
||||
})
|
||||
|
||||
test('赠送阶段按冷却到点实时推导 gift_ready', () => {
|
||||
const past = new Date(Date.now() - 60_000).toISOString()
|
||||
const future = new Date(Date.now() + 60_000).toISOString()
|
||||
assert.equal(
|
||||
resolveWorkOrderGiftPhase({
|
||||
acceptance_mode: WORK_ORDER_ACCEPTANCE_MODE.FRIEND_GIFT,
|
||||
gift_phase: WORK_ORDER_GIFT_PHASE.FRIEND_COUNTDOWN,
|
||||
gift_available_at: past,
|
||||
}),
|
||||
WORK_ORDER_GIFT_PHASE.GIFT_READY,
|
||||
)
|
||||
assert.equal(
|
||||
resolveWorkOrderGiftPhase({
|
||||
acceptance_mode: WORK_ORDER_ACCEPTANCE_MODE.FRIEND_GIFT,
|
||||
gift_phase: WORK_ORDER_GIFT_PHASE.FRIEND_COUNTDOWN,
|
||||
gift_available_at: future,
|
||||
}),
|
||||
WORK_ORDER_GIFT_PHASE.FRIEND_COUNTDOWN,
|
||||
)
|
||||
assert.equal(normalizeWorkOrderAcceptanceMode('friend_gift'), 'friend_gift')
|
||||
assert.equal(normalizeWorkOrderAcceptanceMode(''), 'standard')
|
||||
})
|
||||
@@ -44,6 +44,7 @@ export type WorkOrderGiftSource = {
|
||||
acceptance_mode?: string | null
|
||||
gift_phase?: string | null
|
||||
gift_available_at?: string | null
|
||||
friend_added_at?: string | null
|
||||
}
|
||||
|
||||
export function isWorkOrderGiftAvailable(source: WorkOrderGiftSource): boolean {
|
||||
@@ -52,6 +53,11 @@ export function isWorkOrderGiftAvailable(source: WorkOrderGiftSource): boolean {
|
||||
return Number.isFinite(availableAt) && availableAt <= Date.now()
|
||||
}
|
||||
|
||||
/** 好友赠送单已由后台确认加好友后,取消/脱离打手不再退还押金,押金只能经验收结算。 */
|
||||
export function isWorkOrderGiftDepositForfeitable(source: WorkOrderGiftSource): boolean {
|
||||
return isFriendGiftAcceptanceMode(source.acceptance_mode) && Boolean(source.friend_added_at)
|
||||
}
|
||||
|
||||
/** 返回当前赠送阶段;冷却到点后返回实时计算的 gift_ready。 */
|
||||
export function resolveWorkOrderGiftPhase(source: WorkOrderGiftSource): string {
|
||||
if (!isFriendGiftAcceptanceMode(source.acceptance_mode)) return ''
|
||||
|
||||
Reference in New Issue
Block a user