feat(consignment): 规格口径定案——互通通配 + 后台全量/发布端按物品展示
业务定案: - 操作后台全量:系统 苹果/安卓/通用,区服 微信区/QQ区/互通;提报审核与 库存编辑的系统/区服从自由文本改为受控下拉(单一来源 utils/consignment-spec.ts) - 打手端发布按物品类型展示:苏尔南系统二选一(必须区分端),区服唯一 「互通」选项且默认选中;后续其他品类在共享常量按品类加条目 - 匹配引擎通配符对称化:区服通配=互通(通用/全区/不限归一化为别名), 系统通配=通用(双端/全端同理);订单侧写通配同样放行,只增不减匹配面; 差异描述不把通配对当冲突 - 提报白名单校验(API 层):系统只收 苹果/安卓,区服只收 微信/QQ/互通, 旧页面缓存或直调接口绕不过 - 物品名拼接:区服为互通时不拼入(对买家无信息量),前后端同口径 后端 481(+互通双向匹配/通配不算差异/真冲突仍排除/白名单校验)、 前端 54(+选项口径/表单引用/默认值)测试全绿;typecheck/lint/format/check:sql 通过 docs/寄卖系统优化方案.md 记录批次 W
This commit is contained in:
@@ -41,6 +41,7 @@ import type { ConsignmentInventory, GiftEvidenceReviewStatus } from '@/types/con
|
||||
import { fetchAdminSession } from '@/services/admin/auth'
|
||||
import { resolveAdminPermission } from '@/utils/admin-auth'
|
||||
import { describeGiftEvidence, resolveGiftEvidenceBadge } from '@/utils/consignment-evidence'
|
||||
import { CONSIGNMENT_SYSTEM_OPTIONS, CONSIGNMENT_ZONE_OPTIONS } from '@/utils/consignment-spec'
|
||||
import { formatDateTime } from '@/utils/date-time'
|
||||
|
||||
const { Text } = Typography
|
||||
@@ -56,6 +57,7 @@ const ZONE_OPTIONS = [
|
||||
{ label: '全部区服', value: '' },
|
||||
{ label: '微信区', value: '微信区' },
|
||||
{ label: 'QQ区', value: 'QQ区' },
|
||||
{ label: '互通', value: '互通' },
|
||||
]
|
||||
|
||||
const SERIES_OPTIONS = [
|
||||
@@ -842,12 +844,13 @@ export default function ConsignmentInventoryPanel() {
|
||||
<Row gutter={16}>
|
||||
<Col span={5}>
|
||||
<Form.Item name="system" label="系统">
|
||||
<Input />
|
||||
{/* 后台全量选项:系统 苹果/安卓/通用,区服 微信/QQ/互通(互通=QQ/微信都能收) */}
|
||||
<Select options={[...CONSIGNMENT_SYSTEM_OPTIONS]} />
|
||||
</Form.Item>
|
||||
</Col>
|
||||
<Col span={5}>
|
||||
<Form.Item name="serverZone" label="区服">
|
||||
<Input />
|
||||
<Select options={[...CONSIGNMENT_ZONE_OPTIONS]} />
|
||||
</Form.Item>
|
||||
</Col>
|
||||
<Col span={5}>
|
||||
|
||||
@@ -40,6 +40,7 @@ import { fetchAdminWorkerUsers } from '@/services/admin/worker-platform'
|
||||
import type { ConsignmentSubmission, GiftEvidenceReviewStatus } from '@/types/consignment'
|
||||
import { resolveAdminPermission } from '@/utils/admin-auth'
|
||||
import { describeGiftEvidence, resolveGiftEvidenceBadge } from '@/utils/consignment-evidence'
|
||||
import { CONSIGNMENT_SYSTEM_OPTIONS, CONSIGNMENT_ZONE_OPTIONS } from '@/utils/consignment-spec'
|
||||
import { formatDateTime } from '@/utils/date-time'
|
||||
|
||||
const { Text } = Typography
|
||||
@@ -512,12 +513,13 @@ export default function ConsignmentSubmissionsPanel() {
|
||||
<Row gutter={16}>
|
||||
<Col span={5}>
|
||||
<Form.Item name="system" label="系统">
|
||||
<Input />
|
||||
{/* 审核可修正规格:与打手端发布同一套选项(苹果/安卓;微信/QQ/互通) */}
|
||||
<Select options={[...CONSIGNMENT_SYSTEM_OPTIONS]} />
|
||||
</Form.Item>
|
||||
</Col>
|
||||
<Col span={5}>
|
||||
<Form.Item name="serverZone" label="区服">
|
||||
<Input />
|
||||
<Select options={[...CONSIGNMENT_ZONE_OPTIONS]} />
|
||||
</Form.Item>
|
||||
</Col>
|
||||
<Col span={5}>
|
||||
|
||||
@@ -42,6 +42,11 @@ import {
|
||||
} from '@/services/worker'
|
||||
import type { WorkerConsignmentRecord } from '@/services/worker'
|
||||
import type { UploadedFile } from '@/types/worker-platform'
|
||||
import {
|
||||
SURNAN_DEFAULT_ZONE,
|
||||
SURNAN_PUBLISH_SYSTEM_OPTIONS,
|
||||
SURNAN_PUBLISH_ZONE_OPTIONS,
|
||||
} from '@/utils/consignment-spec'
|
||||
import { formatGiftCooldownRemaining } from '@/utils/consignment-cooldown'
|
||||
import { formatDateTime } from '@/utils/date-time'
|
||||
import { useIsMobile } from '@/utils/use-is-mobile'
|
||||
@@ -187,8 +192,10 @@ export default function WorkerConsignmentPage() {
|
||||
if (sys && zone && ser && dia != null && bri != null) {
|
||||
const briNum = Number(bri)
|
||||
const briStr = briNum > 0 ? `${briNum}璀璨` : ''
|
||||
// 区服是通配值(互通/通用)时不拼进物品名:对买家无信息量,"安卓互通暗潮…"读着也别扭
|
||||
const zoneLabel = zone === '互通' || zone === '通用' ? '' : zone
|
||||
form.setFieldsValue({
|
||||
itemName: `${sys}${zone}${ser}${dia}钻${briStr} 苏尔南`,
|
||||
itemName: `${sys}${zoneLabel}${ser}${dia}钻${briStr} 苏尔南`,
|
||||
})
|
||||
}
|
||||
}
|
||||
@@ -499,27 +506,22 @@ export default function WorkerConsignmentPage() {
|
||||
className="worker-consignment-chips"
|
||||
optionType="button"
|
||||
buttonStyle="solid"
|
||||
options={[
|
||||
{ label: '苹果', value: '苹果' },
|
||||
{ label: '安卓', value: '安卓' },
|
||||
{ label: '通用', value: '通用' },
|
||||
]}
|
||||
options={[...SURNAN_PUBLISH_SYSTEM_OPTIONS]}
|
||||
/>
|
||||
</Form.Item>
|
||||
<Form.Item
|
||||
name="serverZone"
|
||||
label="游戏区服"
|
||||
rules={[{ required: true, message: '请选择区服' }]}
|
||||
// 苏尔南区服固定「通用」(QQ/微信互通),唯一选项默认选中
|
||||
initialValue={SURNAN_DEFAULT_ZONE}
|
||||
className="worker-consignment-spec-card"
|
||||
>
|
||||
<Radio.Group
|
||||
className="worker-consignment-chips"
|
||||
optionType="button"
|
||||
buttonStyle="solid"
|
||||
options={[
|
||||
{ label: '微信区', value: '微信区' },
|
||||
{ label: 'QQ区', value: 'QQ区' },
|
||||
]}
|
||||
options={[...SURNAN_PUBLISH_ZONE_OPTIONS]}
|
||||
/>
|
||||
</Form.Item>
|
||||
<Form.Item
|
||||
|
||||
@@ -0,0 +1,36 @@
|
||||
/**
|
||||
* 寄卖规格选项(单一来源)。
|
||||
*
|
||||
* 两套口径:
|
||||
* 1. 后台全量(CONSIGNMENT_SYSTEM_OPTIONS / CONSIGNMENT_ZONE_OPTIONS):给客服端
|
||||
* 提报审核、库存编辑用 —— 系统 苹果/安卓/通用,区服 微信区/QQ区/互通。
|
||||
* 2. 发布端按物品类型展示(SURNAN_*):打手端「我要寄卖」按物品类型给选项 ——
|
||||
* 苏尔南必须区分 苹果/安卓(不给通用),区服固定「互通」(QQ/微信互通,默认选中)。
|
||||
*
|
||||
* 「互通」在匹配引擎里是区服通配值:互通现货 = 微信/QQ 订单都匹配,反之亦然;
|
||||
* 订单文案里的「通用/全区/不限」会归一化成通配(见后端 ZONE_WILDCARDS)。
|
||||
* 系统侧的「通用」同理是系统通配(订单文案里的「双端/全端」也归一化过来)。
|
||||
* 后续其他品类规则不同(有的不分端),在这里按品类加条目即可。
|
||||
*/
|
||||
export const CONSIGNMENT_SYSTEM_OPTIONS = [
|
||||
{ label: '苹果', value: '苹果' },
|
||||
{ label: '安卓', value: '安卓' },
|
||||
{ label: '通用', value: '通用' },
|
||||
] as const
|
||||
|
||||
export const CONSIGNMENT_ZONE_OPTIONS = [
|
||||
{ label: '微信区', value: '微信区' },
|
||||
{ label: 'QQ区', value: 'QQ区' },
|
||||
{ label: '互通(QQ/微信)', value: '互通' },
|
||||
] as const
|
||||
|
||||
/** 打手端发布 · 苏尔南:系统必须二选一,区服固定「互通」 */
|
||||
export const SURNAN_PUBLISH_SYSTEM_OPTIONS = [
|
||||
{ label: '苹果', value: '苹果' },
|
||||
{ label: '安卓', value: '安卓' },
|
||||
] as const
|
||||
|
||||
export const SURNAN_PUBLISH_ZONE_OPTIONS = [{ label: '互通(QQ/微信)', value: '互通' }] as const
|
||||
|
||||
/** 苏尔南发布时区服的默认值(唯一选项,自动选中) */
|
||||
export const SURNAN_DEFAULT_ZONE = '互通'
|
||||
Reference in New Issue
Block a user