feat(consignment): 自动匹配改为进入待抢单前一次性匹配
1) 配置改为开启自动匹配 + 匹配订单生效时间,移除内部匹配等待与定时轮询;2) 所有进入待抢单的路径统一先自动匹配一次,未命中进大厅;3) 手动匹配仅允许待抢单;4) 新增迁移 160 回填配置并迁移存量 internal_matching。
This commit is contained in:
@@ -10,15 +10,19 @@ function readPanelSource() {
|
||||
).replace(/\r\n/g, '\n')
|
||||
}
|
||||
|
||||
test('手动匹配:只保留等待时长,不再提供「超时后回大厅」开关', () => {
|
||||
test('自动匹配:开关 + 生效时间,不再有内部匹配等待与后台定时补配', () => {
|
||||
const source = readPanelSource()
|
||||
assert.ok(source.includes('label="手动匹配等待(分钟)"'), '等待时长文案必须明确只作用于手动匹配')
|
||||
assert.ok(source.includes("matchingMode === 'manual' ? ("), '等待时长必须只在手动匹配下展示')
|
||||
assert.ok(!source.includes('超时后回大厅'), '回大厅是固定行为,不应再有开关')
|
||||
assert.ok(!source.includes('fallbackToHall'), '配置与表单必须移除 fallbackToHall')
|
||||
assert.ok(source.includes('label="开启自动匹配"'), '必须提供自动匹配开关')
|
||||
assert.ok(source.includes('label="匹配订单生效时间"'), '必须提供匹配订单生效时间')
|
||||
assert.ok(
|
||||
source.includes('自动匹配:发布/补资料时立即匹配,未命中直接进大厅,不使用内部等待窗口。'),
|
||||
'auto 模式必须说明不使用等待窗口',
|
||||
source.includes("name={['matching', 'orderEffectiveFrom']}"),
|
||||
'生效时间必须绑定配置字段',
|
||||
)
|
||||
assert.ok(source.includes('showTime'), '生效时间必须支持精确到时分秒')
|
||||
assert.ok(source.includes('只自动匹配该时间之后创建的订单'), '必须说明生效时间作用范围')
|
||||
assert.ok(!source.includes('匹配模式'), '旧的匹配模式选项必须移除')
|
||||
assert.ok(!source.includes('手动匹配等待'), '内部匹配等待窗口必须移除')
|
||||
assert.ok(!source.includes('label="内部匹配等待(分钟)"'), '旧文案必须移除')
|
||||
assert.ok(!source.includes('fallbackToHall'), '配置与表单必须移除 fallbackToHall')
|
||||
assert.ok(source.includes('不再后台定时补配'), '必须说明已取消后台定时补配')
|
||||
})
|
||||
|
||||
@@ -25,7 +25,7 @@ test('管理端:订单服务之后必须存在寄卖配置 tab', () => {
|
||||
)
|
||||
})
|
||||
|
||||
test('寄卖配置面板:必须覆盖保证金/服务费/数量限制/匹配/内部匹配/超时/降价', () => {
|
||||
test('寄卖配置面板:必须覆盖保证金/服务费/数量限制/匹配/超时/降价', () => {
|
||||
const panel = read('../src/pages/admin/panels/ConsignmentConfigPanel.tsx')
|
||||
for (const label of [
|
||||
'打手端 tab 名称',
|
||||
@@ -33,9 +33,9 @@ test('寄卖配置面板:必须覆盖保证金/服务费/数量限制/匹配/
|
||||
'按数量',
|
||||
'开启服务费',
|
||||
'开启单人寄售上限',
|
||||
'匹配模式',
|
||||
'关闭匹配',
|
||||
'手动匹配等待(分钟)',
|
||||
'开启自动匹配',
|
||||
'匹配订单生效时间',
|
||||
'仅精确匹配',
|
||||
'代练超时(小时)',
|
||||
'重新匹配并退还押金',
|
||||
'开启降价提示',
|
||||
@@ -44,10 +44,20 @@ test('寄卖配置面板:必须覆盖保证金/服务费/数量限制/匹配/
|
||||
}
|
||||
})
|
||||
|
||||
test('寄卖配置:旧配置缺少 internalMatch 时不能崩溃', () => {
|
||||
test('寄卖配置:旧配置缺少 autoMatchEnabled / orderEffectiveFrom 时不能崩溃', () => {
|
||||
const panel = read('../src/pages/admin/panels/ConsignmentConfigPanel.tsx')
|
||||
assert.ok(panel.includes('config.internalMatch?.delayMinutes'), '读取旧配置必须使用可选链')
|
||||
assert.ok(panel.includes('values.internalMatch?.delayMinutes'), '保存旧配置必须使用可选链')
|
||||
assert.ok(
|
||||
panel.includes('Boolean(config.matching.autoMatchEnabled)'),
|
||||
'缺少 autoMatchEnabled 时必须用 Boolean 容错',
|
||||
)
|
||||
assert.ok(
|
||||
panel.includes('dayjs(config.matching.orderEffectiveFrom || undefined)'),
|
||||
'缺少 orderEffectiveFrom 时必须回退到当前时间',
|
||||
)
|
||||
assert.ok(
|
||||
panel.includes('values.matching.orderEffectiveFrom?.toISOString()'),
|
||||
'保存时生效时间必须使用可选链',
|
||||
)
|
||||
assert.ok(panel.includes('staleTime: 0'), '配置查询必须每次重拉,避免旧缓存缺字段')
|
||||
})
|
||||
|
||||
|
||||
Reference in New Issue
Block a user