fix: 修复后端号码分类名称(通货→带4号,钻石→钻石号,永恒→永恒号,无4→带7号)
This commit is contained in:
parent
2b2b916f91
commit
e2c0765623
|
|
@ -1210,7 +1210,7 @@ async def batch_parse_deals(text: str = Body(..., embed=True)):
|
|||
3. 价格:¥xxx,xxx 格式,去掉逗号转为数字
|
||||
4. 评级/包装:PC69/PMG68/爱藏67+/爱藏67 标十 标百 单张
|
||||
5. 出售者:人名
|
||||
6. 号码分类:根据冠字号数字特征判断(圆圆号/倒置号/金马王/金马号/金山王/天马王/金山号/天马号/朦胧王/朦胧号/如意号/钻石/永恒/无4/通货)
|
||||
6. 号码分类:根据冠字号数字特征判断(圆圆号/倒置号/金马王/金马号/金山王/天马王/金山号/天马号/朦胧王/朦胧号/如意号/钻石号/永恒号/带7号/带4号)
|
||||
|
||||
【输出格式】
|
||||
返回JSON数组,每条记录包含:
|
||||
|
|
@ -1364,9 +1364,9 @@ def parse_deals_locally(text: str, default_packaging: str = '', default_date: st
|
|||
elif not any(c in d for c in ['1','3','4','5','7']): category = '朦胧王'
|
||||
elif not any(c in d for c in ['3','4','5','7']): category = '朦胧号'
|
||||
elif not any(c in d for c in ['1','3','4','7']): category = '如意号'
|
||||
elif not any(c in d for c in ['3','4','7']): category = '钻石'
|
||||
elif not any(c in d for c in ['4','7']): category = '永恒'
|
||||
elif '4' not in d: category = '无4'
|
||||
elif not any(c in d for c in ['3','4','7']): category = '钻石号'
|
||||
elif not any(c in d for c in ['4','7']): category = '永恒号'
|
||||
elif '4' not in d: category = '带7号'
|
||||
|
||||
# 提取评级机构 PCGS/PMG/ACG/爱藏
|
||||
grade = ''
|
||||
|
|
|
|||
|
|
@ -2,7 +2,7 @@
|
|||
import React, { useState, useRef } from 'react'
|
||||
import { APP_VERSION } from '../config/version'
|
||||
const API_BASE = localStorage.getItem('API_BASE') || ''
|
||||
const numberCategoryOptions = [{value:'无2347',label:'无2347'},{value:'无347',label:'无347'},{value:'无247',label:'无247'},{value:'无47',label:'无47'},{value:'无4',label:'无4'},{value:'带4',label:'带4'},{value:'其他',label:'其他'}];
|
||||
const numberCategoryOptions = [{value:'无2347',label:'无2347'},{value:'无347',label:'无347'},{value:'无247',label:'无247'},{value:'无47',label:'无47'},{value:'带7号',label:'带7号'},{value:'带4号',label:'带4号'},{value:'其他',label:'其他'}];
|
||||
|
||||
// 字段转换函数
|
||||
const convertField = (obj) => {
|
||||
|
|
@ -111,10 +111,10 @@ export default function Add() {
|
|||
if (!d.includes('1') && !d.includes('3') && !d.includes('4') && !d.includes('5') && !d.includes('7')) return '朦胧王'
|
||||
if (!d.includes('3') && !d.includes('4') && !d.includes('5') && !d.includes('7')) return '朦胧号'
|
||||
if (!d.includes('1') && !d.includes('3') && !d.includes('4') && !d.includes('7')) return '如意号'
|
||||
if (!d.includes('3') && !d.includes('4') && !d.includes('7')) return '钻石'
|
||||
if (!d.includes('4') && !d.includes('7')) return '永恒'
|
||||
if (!d.includes('4')) return '无4'
|
||||
return '通货'
|
||||
if (!d.includes('3') && !d.includes('4') && !d.includes('7')) return '钻石号'
|
||||
if (!d.includes('4') && !d.includes('7')) return '永恒号'
|
||||
if (!d.includes('4')) return '带7号'
|
||||
return '带4号'
|
||||
}
|
||||
|
||||
// 根据 URL 参数确定默认标签
|
||||
|
|
@ -204,8 +204,8 @@ export default function Add() {
|
|||
else if (!digits.includes('3') && !digits.includes('4') && !digits.includes('7')) cat = '无347'
|
||||
else if (!digits.includes('2') && !digits.includes('4') && !digits.includes('7')) cat = '无247'
|
||||
else if (!digits.includes('4') && !digits.includes('7') && digits.includes('2') && digits.includes('3')) cat = '无47'
|
||||
else if (digits.includes('7') && !digits.includes('4')) cat = '无4'
|
||||
else if (digits.includes('4')) cat = '带4'
|
||||
else if (digits.includes('7') && !digits.includes('4')) cat = '带7号'
|
||||
else if (digits.includes('4')) cat = '带4号'
|
||||
else cat = '其他'
|
||||
}
|
||||
setForm(prev => ({ ...prev, numberCategory: cat }))
|
||||
|
|
@ -320,8 +320,8 @@ export default function Add() {
|
|||
else if (!digits.includes('3') && !digits.includes('4') && !digits.includes('7')) cat = '无347'
|
||||
else if (!digits.includes('2') && !digits.includes('4') && !digits.includes('7')) cat = '无247'
|
||||
else if (!digits.includes('4') && !digits.includes('7') && digits.includes('2') && digits.includes('3')) cat = '无47'
|
||||
else if (digits.includes('7') && !digits.includes('4')) cat = '无4'
|
||||
else if (digits.includes('4')) cat = '带4'
|
||||
else if (digits.includes('7') && !digits.includes('4')) cat = '带7号'
|
||||
else if (digits.includes('4')) cat = '带4号'
|
||||
else cat = '其他'
|
||||
formWithCategory.numberCategory = cat
|
||||
}
|
||||
|
|
@ -967,7 +967,7 @@ export default function Add() {
|
|||
newResult[idx].category = e.target.value
|
||||
setBatchResult(newResult)
|
||||
}} style={{ width: '100%', padding: '4px', background: 'rgba(0,0,0,0.3)', border: '1px solid rgba(255,255,255,0.1)', borderRadius: '4px', color: '#fff', fontSize: '10px' }}>
|
||||
{['圆圆号','倒置号','金马王','金马号','金山王','天马王','金山号','天马号','朦胧王','朦胧号','如意号','钻石','永恒','无4','通货'].map(c => <option key={c} value={c}>{c}</option>)}
|
||||
{['圆圆号','倒置号','金马王','金马号','金山王','天马王','金山号','天马号','朦胧王','朦胧号','如意号','钻石号','永恒号','带7号','带4号'].map(c => <option key={c} value={c}>{c}</option>)}
|
||||
</select>
|
||||
</div>
|
||||
<div style={{ flex: '0 0 20%' }}>
|
||||
|
|
|
|||
|
|
@ -482,7 +482,10 @@ export default function Admin() {
|
|||
<option value="白银">白银</option>
|
||||
<option value="黄金">黄金</option>
|
||||
<option value="铂金">铂金</option>
|
||||
<option value="钻石">钻石</option>
|
||||
<option value="钻石号">钻石号</option>
|
||||
<option value="永恒号">永恒号</option>
|
||||
<option value="带7号">带7号</option>
|
||||
<option value="带4号">带4号</option>
|
||||
</select>
|
||||
</div>
|
||||
|
||||
|
|
|
|||
|
|
@ -46,7 +46,7 @@ const categoryOptions = [
|
|||
{ value: '其他', label: '其他' }
|
||||
]
|
||||
|
||||
const numberCategoryOptions = [{value:'无2347',label:'无2347'},{value:'无347',label:'无347'},{value:'无247',label:'无247'},{value:'无47',label:'无47'},{value:'无4',label:'无4'},{value:'带4',label:'带4'},{value:'其他',label:'其他'}];
|
||||
const numberCategoryOptions = [{value:'无2347',label:'无2347'},{value:'无347',label:'无347'},{value:'无247',label:'无247'},{value:'无47',label:'无47'},{value:'带7号',label:'带7号'},{value:'带4号',label:'带4号'},{value:'其他',label:'其他'}];
|
||||
const rarityOptions = [
|
||||
{ value: '通货', label: '通货' },
|
||||
{ value: '特色', label: '特色' },
|
||||
|
|
@ -157,8 +157,8 @@ export default function Edit() {
|
|||
if (digits) {
|
||||
if (!digits.includes('2') && !digits.includes('3') && !digits.includes('4') && !digits.includes('7')) cat = '无2347'
|
||||
else if (!digits.includes('3') && !digits.includes('4') && !digits.includes('7')) cat = '无347'
|
||||
else if (digits.includes('4')) cat = '带4'
|
||||
else if (digits.includes('7')) cat = '无4'
|
||||
else if (digits.includes('4')) cat = '带4号'
|
||||
else if (digits.includes('7')) cat = '带7号'
|
||||
else if (!digits.includes('4') && !digits.includes('7')) cat = '无47'
|
||||
else if (!digits.includes('2') && !digits.includes('4') && !digits.includes('7')) cat = '无247'
|
||||
else cat = '其他'
|
||||
|
|
|
|||
|
|
@ -282,7 +282,7 @@ export default function Home() {
|
|||
<div style={{ color: '#fff', fontSize: '18px', fontWeight: '700', textAlign: 'center' }}>{(dragonStats.dai4?.deals || 0) + (dragonStats.dai4?.wants || 0)}</div>
|
||||
</div>
|
||||
<div style={{ display: 'grid', gridTemplateColumns: '60px 1fr 1fr 1fr', gap: '8px', marginBottom: '6px' }}>
|
||||
<div style={{ color: '#22c55e', fontSize: '14px', fontWeight: '500' }}>无4</div>
|
||||
<div style={{ color: '#06b6d4', fontSize: '14px', fontWeight: '500' }}>带7号</div>
|
||||
<div style={{ color: '#22c55e', fontSize: '18px', fontWeight: '700', textAlign: 'center' }}>{dragonStats.wu4?.deals || 0}</div>
|
||||
<div style={{ color: '#f97316', fontSize: '18px', fontWeight: '700', textAlign: 'center' }}>{dragonStats.wu4?.wants || 0}</div>
|
||||
<div style={{ color: '#fff', fontSize: '18px', fontWeight: '700', textAlign: 'center' }}>{(dragonStats.wu4?.deals || 0) + (dragonStats.wu4?.wants || 0)}</div>
|
||||
|
|
|
|||
|
|
@ -365,7 +365,7 @@ export default function List() {
|
|||
bVal = rarityOrder[bVal] || 0
|
||||
} else if (sortField === 'numberCategory') {
|
||||
// 号码分类按自定义顺序排序
|
||||
const numberCategoryOrder = { '无2347': 1, '无347': 2, '无247': 3, '无47': 4, '无4': 5, '带4': 6, '其他': 7 }
|
||||
const numberCategoryOrder = { '无2347': 1, '无347': 2, '无247': 3, '无47': 4, '带7号': 5, '带4号': 6, '其他': 7 }
|
||||
aVal = numberCategoryOrder[aVal] || 99
|
||||
bVal = numberCategoryOrder[bVal] || 99
|
||||
}
|
||||
|
|
@ -408,7 +408,7 @@ export default function List() {
|
|||
}
|
||||
|
||||
const getNumberCategoryColor = (cat) => {
|
||||
const colors = { '无2347': '#8b5cf6', '无347': '#ef4444', '无247': '#fbbf24', '无47': '#3b82f6', '无4': '#06b6d4', '带4': '#22c55e', '其他': '#64748b' };
|
||||
const colors = { '无2347': '#8b5cf6', '无347': '#ef4444', '无247': '#fbbf24', '无47': '#3b82f6', '带7号': '#06b6d4', '带4号': '#22c55e', '其他': '#64748b' };
|
||||
return colors[cat] || '#64748b';
|
||||
};
|
||||
|
||||
|
|
@ -520,7 +520,7 @@ export default function List() {
|
|||
</button>
|
||||
<button onClick={() => setActiveTab('deals')}
|
||||
style={{ padding: '6px 16px', background: activeTab === 'deals' ? '#fbbf24' : 'rgba(255,255,255,0.05)', color: activeTab === 'deals' ? '#1e293b' : '#fff', border: 'none', borderRadius: '6px', fontSize: '13px', fontWeight: '600', cursor: 'pointer' }}>
|
||||
我的行情 ({myDeals.length})
|
||||
我的行情 ({filteredDeals.length})
|
||||
</button>
|
||||
</div>
|
||||
</div>
|
||||
|
|
@ -651,47 +651,6 @@ export default function List() {
|
|||
{/* 行情tab内容 */}
|
||||
{activeTab === 'deals' && (
|
||||
<div>
|
||||
{/* 行情搜索和排序 */}
|
||||
<div style={{ display: 'flex', gap: '8px', marginBottom: '12px' }}>
|
||||
<input type="text"
|
||||
placeholder="🔍 搜索行情..."
|
||||
value={dealSearch}
|
||||
onChange={e => setDealSearch(e.target.value)}
|
||||
style={{
|
||||
flex: 1,
|
||||
background: 'rgba(255,255,255,0.05)',
|
||||
border: '1px solid rgba(255,255,255,0.1)',
|
||||
color: '#fff',
|
||||
padding: '8px 12px',
|
||||
borderRadius: '8px',
|
||||
fontSize: '14px',
|
||||
outline: 'none'
|
||||
}}
|
||||
/>
|
||||
<select
|
||||
value={dealSortField + '-' + dealSortOrder}
|
||||
onChange={e => {
|
||||
const [field, order] = e.target.value.split('-')
|
||||
setDealSortField(field)
|
||||
setDealSortOrder(order)
|
||||
}}
|
||||
style={{
|
||||
background: 'rgba(255,255,255,0.1)',
|
||||
border: '1px solid rgba(255,255,255,0.2)',
|
||||
color: '#fff',
|
||||
padding: '8px 12px',
|
||||
borderRadius: '8px',
|
||||
fontSize: '14px',
|
||||
cursor: 'pointer'
|
||||
}}
|
||||
>
|
||||
<option value="created_at-desc">最新</option>
|
||||
<option value="created_at-asc">最早</option>
|
||||
<option value="deal_price-desc">价格高</option>
|
||||
<option value="deal_price-asc">价格低</option>
|
||||
</select>
|
||||
</div>
|
||||
|
||||
{dealsLoading ? (
|
||||
<div style={{ textAlign: 'center', padding: '60px', color: '#64748b' }}>加载中...</div>
|
||||
) : filteredDeals.length === 0 ? (
|
||||
|
|
|
|||
|
|
@ -103,7 +103,7 @@ export default function Stats() {
|
|||
status: { 'in_collection': '#22c55e', 'selling': '#f59e0b', 'sold': '#ef4444', 'grading': '#8b5cf6', 'repairing': '#f97316', 'transit': '#06b6d4', 'seeking': '#ec4899' },
|
||||
category: { '自持': '#22c55e', '寄存': '#3b82f6', '寄售': '#f59e0b', '共有': '#8b5cf6', '寻号': '#06b6d4', '生肖钞': '#22c55e', '其他': '#64748b' },
|
||||
profitLoss: { 'profit': '#22c55e', 'loss': '#ef4444' },
|
||||
numberCategory: { '无2347': '#8b5cf6', '无347': '#ef4444', '无247': '#fbbf24', '无47': '#3b82f6', '无4': '#06b6d4', '带4': '#22c55e', '其他': '#64748b' },
|
||||
numberCategory: { '无2347': '#8b5cf6', '无347': '#ef4444', '无247': '#fbbf24', '无47': '#3b82f6', '带7号': '#06b6d4', '带4号': '#22c55e', '其他': '#64748b' },
|
||||
version: {},
|
||||
gradingCompany: {},
|
||||
gradingScore: {},
|
||||
|
|
@ -146,7 +146,7 @@ export default function Stats() {
|
|||
return Number(val).toLocaleString('zh-CN')
|
||||
}
|
||||
|
||||
const numberCategoryOrder = ['无2347', '无347', '无247', '无47', '无4', '带4', '其他']
|
||||
const numberCategoryOrder = ['无2347', '无347', '无247', '无47', '带7号', '带4号', '其他']
|
||||
const getSortedData = (data, type) => {
|
||||
if (type === 'numberCategory') {
|
||||
return [...data].sort((a, b) => {
|
||||
|
|
|
|||
Loading…
Reference in New Issue