feat(consignment): 收敛寄卖迁移并调整发布页价格区布局
- 142–148 收敛为 142_consignment_platform,旧账本自动清理 - 价格三卡保持一行等宽,其余发布页布局回退 - 修复发布 tab 空白并统一价格文案为系统建议价
This commit is contained in:
@@ -89,9 +89,9 @@ test('降价提示:未到时长不提示,到点后按比例给出建议售
|
||||
assert.equal(suggestion?.dropHours, 24)
|
||||
})
|
||||
|
||||
test('迁移 142 必须包含寄卖配置、库存数量/售价与分配表', async () => {
|
||||
test('合并迁移 142 必须包含寄卖配置、库存数量/售价与分配表', async () => {
|
||||
const source = await readFile(
|
||||
new URL('../../db/migrations/142_consignment_matching.sql', import.meta.url),
|
||||
new URL('../../db/migrations/142_consignment_platform.sql', import.meta.url),
|
||||
'utf8',
|
||||
)
|
||||
for (const fragment of [
|
||||
@@ -103,6 +103,6 @@ test('迁移 142 必须包含寄卖配置、库存数量/售价与分配表', as
|
||||
'internal_match_deadline_at',
|
||||
'consignment_inventory_id',
|
||||
]) {
|
||||
assert.ok(source.includes(fragment), `迁移 142 缺少 ${fragment}`)
|
||||
assert.ok(source.includes(fragment), `合并迁移 142 缺少 ${fragment}`)
|
||||
}
|
||||
})
|
||||
|
||||
@@ -35,7 +35,7 @@ function option(label: string, value: string) {
|
||||
return { label, value, enabled: true }
|
||||
}
|
||||
|
||||
/** 苏尔南手枪种子配置的五个字段(与迁移 144 一致)。 */
|
||||
/** 苏尔南手枪种子配置的五个字段(与合并迁移 142 一致)。 */
|
||||
function surnanSpecs(): ConsignmentSpecField[] {
|
||||
return [
|
||||
{
|
||||
@@ -457,9 +457,9 @@ test('动态规格:旧列仍由兼容 key 同步', () => {
|
||||
})
|
||||
})
|
||||
|
||||
test('迁移 143 必须包含 JSON、匹配 key、文本与改价上限', async () => {
|
||||
test('合并迁移 142 必须包含动态规格的 JSON、匹配 key、文本与改价上限', async () => {
|
||||
const sql = await readFile(
|
||||
new URL('../../db/migrations/143_consignment_dynamic_specs.sql', import.meta.url),
|
||||
new URL('../../db/migrations/142_consignment_platform.sql', import.meta.url),
|
||||
'utf8',
|
||||
)
|
||||
for (const fragment of [
|
||||
@@ -469,13 +469,13 @@ test('迁移 143 必须包含 JSON、匹配 key、文本与改价上限', async
|
||||
'price_cap_fen',
|
||||
'CREATE INDEX IF NOT EXISTS idx_consignment_inventories_spec_key',
|
||||
]) {
|
||||
assert.ok(sql.includes(fragment), `迁移 143 缺少 ${fragment}`)
|
||||
assert.ok(sql.includes(fragment), `合并迁移 142 缺少 ${fragment}`)
|
||||
}
|
||||
})
|
||||
|
||||
test('迁移 144 必须为苏尔南手枪写入已发布的五个单选字段配置', async () => {
|
||||
test('合并迁移 142 必须为苏尔南手枪写入已发布的五个单选字段配置', async () => {
|
||||
const sql = await readFile(
|
||||
new URL('../../db/migrations/144_consignment_surnan_default_profile.sql', import.meta.url),
|
||||
new URL('../../db/migrations/142_consignment_platform.sql', import.meta.url),
|
||||
'utf8',
|
||||
)
|
||||
for (const fragment of [
|
||||
@@ -485,6 +485,6 @@ test('迁移 144 必须为苏尔南手枪写入已发布的五个单选字段配
|
||||
"'published'",
|
||||
'"key": "brillianceCount"',
|
||||
]) {
|
||||
assert.ok(sql.includes(fragment), `迁移 144 缺少 ${fragment}`)
|
||||
assert.ok(sql.includes(fragment), `合并迁移 142 缺少 ${fragment}`)
|
||||
}
|
||||
})
|
||||
|
||||
@@ -3,9 +3,9 @@
|
||||
*
|
||||
* 设计约定:
|
||||
* - 没有任何「内置字段」:配置初始 specs 为空,字段全部由运营在寄卖配置里维护;
|
||||
* 苏尔南手枪的五个字段由迁移 131 作为种子配置写入;
|
||||
* 苏尔南手枪的五个字段由迁移 142 作为种子配置写入;
|
||||
* - 字段类型支持:文本 / 长文本 / 下拉 / 单选 / 数字 / 日期;
|
||||
* - 价格只有两种:接单模板价打折、模板价固定下调;打手只能按系统建议价往下调;
|
||||
* - 价格只有两种:接单模板价打折、模板价固定下调;打手只能按系统建议价格往下调;
|
||||
* - 旧列兼容:字段 key 仍为 system/serverZone/series/diamondLevel/brillianceCount 时,
|
||||
* 继续同步旧列并沿用旧匹配器,保证存量库存与工单不回归。
|
||||
*/
|
||||
|
||||
@@ -1045,7 +1045,7 @@ export async function submitWorkerConsignmentGiftEvidence(
|
||||
/**
|
||||
* 发布寄卖的建议价:
|
||||
* - 模板折扣:接单模板价 × 折扣;
|
||||
* - 固定价格:直接使用固定价,有模板价时校验不得高于模板价;
|
||||
* - 模板价固定下调:接单模板价 − 固定下调金额,有模板价才允许发布;
|
||||
* - 同时返回改价上限(等于建议价,打手只能往下调)。
|
||||
*/
|
||||
export async function getWorkerConsignmentPriceSuggestion(payload: {
|
||||
|
||||
Reference in New Issue
Block a user