feat(consignment): 寄卖规格与价格动态配置重构

This commit is contained in:
2026-11-05 17:09:05 +08:00
parent 2ef16ddcc7
commit d41ec44679
22 changed files with 3761 additions and 621 deletions
@@ -61,3 +61,37 @@ test('工单页:必须挂载内部库存匹配弹窗,并支持状态 interna
assert.ok(shared.includes("internal_matching: '内部匹配中'"), '状态文案必须包含内部匹配中')
assert.ok(shared.includes("internal_matching: 'magenta'"), '状态配色必须包含内部匹配中')
})
test('寄卖配置面板:独立功能卡片、空字段初始状态与价格配置', () => {
const panel = read('../src/pages/admin/panels/ConsignmentConfigPanel.tsx')
for (const label of [
'规格字段',
'添加字段',
'基础信息',
'价格配置',
'履约保证金',
'服务费',
'库存数量限制',
'匹配设置',
'超时与降价提示',
'接单模板价打折',
'固定价格',
'模板折扣',
'物品名模板',
]) {
assert.ok(panel.includes(label), `寄卖配置面板缺少「${label}」`)
}
assert.ok(!panel.includes('DEFAULT_SPEC_FIELDS'), '面板不能预置任何内置字段')
assert.ok(panel.includes('useState<ConsignmentSpecField[]>([])'), '规格字段初始必须为空')
assert.ok(panel.includes('specDrafts.map'), '规格字段必须可动态增删/排序')
assert.ok(panel.includes('SPEC_FIELD_TYPE_OPTIONS'), '字段类型必须支持 6 种选项')
})
test('打手端:动态规格 + 系统建议价 + 改价不得高于建议价', () => {
const page = read('../src/pages/worker/WorkerConsignmentPage.tsx')
assert.ok(page.includes('selectedSpecs.map'), '规格必须按配置动态渲染')
assert.ok(page.includes('fetchWorkerConsignmentPricePreview'), '必须走动态价格预览')
assert.ok(page.includes('不能高于系统建议价'), '前端必须提示改价上限')
assert.ok(page.includes('specValues'), '发布必须提交动态规格值')
assert.ok(page.includes('config.pricing.allowWorkerPrice'), '改价能力必须按配置')
})