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 格式,去掉逗号转为数字
|
3. 价格:¥xxx,xxx 格式,去掉逗号转为数字
|
||||||
4. 评级/包装:PC69/PMG68/爱藏67+/爱藏67 标十 标百 单张
|
4. 评级/包装:PC69/PMG68/爱藏67+/爱藏67 标十 标百 单张
|
||||||
5. 出售者:人名
|
5. 出售者:人名
|
||||||
6. 号码分类:根据冠字号数字特征判断(圆圆号/倒置号/金马王/金马号/金山王/天马王/金山号/天马号/朦胧王/朦胧号/如意号/钻石/永恒/无4/通货)
|
6. 号码分类:根据冠字号数字特征判断(圆圆号/倒置号/金马王/金马号/金山王/天马王/金山号/天马号/朦胧王/朦胧号/如意号/钻石号/永恒号/带7号/带4号)
|
||||||
|
|
||||||
【输出格式】
|
【输出格式】
|
||||||
返回JSON数组,每条记录包含:
|
返回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 ['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 ['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 ['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 ['3','4','7']): category = '钻石号'
|
||||||
elif not any(c in d for c in ['4','7']): category = '永恒'
|
elif not any(c in d for c in ['4','7']): category = '永恒号'
|
||||||
elif '4' not in d: category = '无4'
|
elif '4' not in d: category = '带7号'
|
||||||
|
|
||||||
# 提取评级机构 PCGS/PMG/ACG/爱藏
|
# 提取评级机构 PCGS/PMG/ACG/爱藏
|
||||||
grade = ''
|
grade = ''
|
||||||
|
|
|
||||||
|
|
@ -2,7 +2,7 @@
|
||||||
import React, { useState, useRef } from 'react'
|
import React, { useState, useRef } from 'react'
|
||||||
import { APP_VERSION } from '../config/version'
|
import { APP_VERSION } from '../config/version'
|
||||||
const API_BASE = localStorage.getItem('API_BASE') || ''
|
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) => {
|
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('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('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('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('3') && !d.includes('4') && !d.includes('7')) return '钻石号'
|
||||||
if (!d.includes('4') && !d.includes('7')) return '永恒'
|
if (!d.includes('4') && !d.includes('7')) return '永恒号'
|
||||||
if (!d.includes('4')) return '无4'
|
if (!d.includes('4')) return '带7号'
|
||||||
return '通货'
|
return '带4号'
|
||||||
}
|
}
|
||||||
|
|
||||||
// 根据 URL 参数确定默认标签
|
// 根据 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('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('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('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('7') && !digits.includes('4')) cat = '带7号'
|
||||||
else if (digits.includes('4')) cat = '带4'
|
else if (digits.includes('4')) cat = '带4号'
|
||||||
else cat = '其他'
|
else cat = '其他'
|
||||||
}
|
}
|
||||||
setForm(prev => ({ ...prev, numberCategory: 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('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('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('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('7') && !digits.includes('4')) cat = '带7号'
|
||||||
else if (digits.includes('4')) cat = '带4'
|
else if (digits.includes('4')) cat = '带4号'
|
||||||
else cat = '其他'
|
else cat = '其他'
|
||||||
formWithCategory.numberCategory = cat
|
formWithCategory.numberCategory = cat
|
||||||
}
|
}
|
||||||
|
|
@ -967,7 +967,7 @@ export default function Add() {
|
||||||
newResult[idx].category = e.target.value
|
newResult[idx].category = e.target.value
|
||||||
setBatchResult(newResult)
|
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' }}>
|
}} 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>
|
</select>
|
||||||
</div>
|
</div>
|
||||||
<div style={{ flex: '0 0 20%' }}>
|
<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="钻石">钻石</option>
|
<option value="钻石号">钻石号</option>
|
||||||
|
<option value="永恒号">永恒号</option>
|
||||||
|
<option value="带7号">带7号</option>
|
||||||
|
<option value="带4号">带4号</option>
|
||||||
</select>
|
</select>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -46,7 +46,7 @@ const categoryOptions = [
|
||||||
{ value: '其他', label: '其他' }
|
{ 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 = [
|
const rarityOptions = [
|
||||||
{ value: '通货', label: '通货' },
|
{ value: '通货', label: '通货' },
|
||||||
{ value: '特色', label: '特色' },
|
{ value: '特色', label: '特色' },
|
||||||
|
|
@ -157,8 +157,8 @@ export default function Edit() {
|
||||||
if (digits) {
|
if (digits) {
|
||||||
if (!digits.includes('2') && !digits.includes('3') && !digits.includes('4') && !digits.includes('7')) cat = '无2347'
|
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('3') && !digits.includes('4') && !digits.includes('7')) cat = '无347'
|
||||||
else if (digits.includes('4')) cat = '带4'
|
else if (digits.includes('4')) cat = '带4号'
|
||||||
else if (digits.includes('7')) cat = '无4'
|
else if (digits.includes('7')) cat = '带7号'
|
||||||
else if (!digits.includes('4') && !digits.includes('7')) cat = '无47'
|
else if (!digits.includes('4') && !digits.includes('7')) cat = '无47'
|
||||||
else if (!digits.includes('2') && !digits.includes('4') && !digits.includes('7')) cat = '无247'
|
else if (!digits.includes('2') && !digits.includes('4') && !digits.includes('7')) cat = '无247'
|
||||||
else cat = '其他'
|
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 style={{ color: '#fff', fontSize: '18px', fontWeight: '700', textAlign: 'center' }}>{(dragonStats.dai4?.deals || 0) + (dragonStats.dai4?.wants || 0)}</div>
|
||||||
</div>
|
</div>
|
||||||
<div style={{ display: 'grid', gridTemplateColumns: '60px 1fr 1fr 1fr', gap: '8px', marginBottom: '6px' }}>
|
<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: '#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: '#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>
|
<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
|
bVal = rarityOrder[bVal] || 0
|
||||||
} else if (sortField === 'numberCategory') {
|
} 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
|
aVal = numberCategoryOrder[aVal] || 99
|
||||||
bVal = numberCategoryOrder[bVal] || 99
|
bVal = numberCategoryOrder[bVal] || 99
|
||||||
}
|
}
|
||||||
|
|
@ -408,7 +408,7 @@ export default function List() {
|
||||||
}
|
}
|
||||||
|
|
||||||
const getNumberCategoryColor = (cat) => {
|
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';
|
return colors[cat] || '#64748b';
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
@ -520,7 +520,7 @@ export default function List() {
|
||||||
</button>
|
</button>
|
||||||
<button onClick={() => setActiveTab('deals')}
|
<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' }}>
|
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>
|
</button>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
@ -651,47 +651,6 @@ export default function List() {
|
||||||
{/* 行情tab内容 */}
|
{/* 行情tab内容 */}
|
||||||
{activeTab === 'deals' && (
|
{activeTab === 'deals' && (
|
||||||
<div>
|
<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 ? (
|
{dealsLoading ? (
|
||||||
<div style={{ textAlign: 'center', padding: '60px', color: '#64748b' }}>加载中...</div>
|
<div style={{ textAlign: 'center', padding: '60px', color: '#64748b' }}>加载中...</div>
|
||||||
) : filteredDeals.length === 0 ? (
|
) : 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' },
|
status: { 'in_collection': '#22c55e', 'selling': '#f59e0b', 'sold': '#ef4444', 'grading': '#8b5cf6', 'repairing': '#f97316', 'transit': '#06b6d4', 'seeking': '#ec4899' },
|
||||||
category: { '自持': '#22c55e', '寄存': '#3b82f6', '寄售': '#f59e0b', '共有': '#8b5cf6', '寻号': '#06b6d4', '生肖钞': '#22c55e', '其他': '#64748b' },
|
category: { '自持': '#22c55e', '寄存': '#3b82f6', '寄售': '#f59e0b', '共有': '#8b5cf6', '寻号': '#06b6d4', '生肖钞': '#22c55e', '其他': '#64748b' },
|
||||||
profitLoss: { 'profit': '#22c55e', 'loss': '#ef4444' },
|
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: {},
|
version: {},
|
||||||
gradingCompany: {},
|
gradingCompany: {},
|
||||||
gradingScore: {},
|
gradingScore: {},
|
||||||
|
|
@ -146,7 +146,7 @@ export default function Stats() {
|
||||||
return Number(val).toLocaleString('zh-CN')
|
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) => {
|
const getSortedData = (data, type) => {
|
||||||
if (type === 'numberCategory') {
|
if (type === 'numberCategory') {
|
||||||
return [...data].sort((a, b) => {
|
return [...data].sort((a, b) => {
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue