diff --git a/src/app/(main)/comparison-records/page.tsx b/src/app/(main)/comparison-records/page.tsx index be8cd7f..4abd3c4 100644 --- a/src/app/(main)/comparison-records/page.tsx +++ b/src/app/(main)/comparison-records/page.tsx @@ -46,6 +46,41 @@ const fmtTok = (inTok: number | null, outTok: number | null) => inTok == null && outTok == null ? '-' : `${inTok ?? 0}/${outTok ?? 0}`; const fmtRate = (value: number | null) => (value == null ? '-' : `${(value * 100).toFixed(1)}%`); +function deviceName(record: ComparisonRecordListItem): string { + return record.device_model_name || record.device_model || '-'; +} + +function romName(record: ComparisonRecordListItem): string { + return [ + record.rom_vendor, + record.rom_name, + record.rom_version != null ? String(record.rom_version) : null, + ] + .filter(Boolean) + .join(' ') || '-'; +} + +function renderDevice(record: ComparisonRecordListItem): ReactNode { + const readableName = deviceName(record); + const showRawModel = + record.device_model_name + && record.device_model + && record.device_model_name !== record.device_model; + return ( + + {readableName} + {showRawModel ? ( + + {record.device_model} + + ) : null} + + {romName(record)} + + + ); +} + // LLM 价格快照只展示 prices 里各模型的单价(元/每百万 token),忽略 mode/_source 等元字段。 function llmPriceRows(snapshot: Record | null): string[] { const prices = snapshot?.prices; @@ -308,9 +343,9 @@ export default function ComparisonRecordsPage() { { title: '机型/ROM', key: 'device', - width: 150, + width: 180, ellipsis: true, - render: (_, r) => [r.device_model, r.rom_name].filter(Boolean).join(' / ') || '-', + render: (_, r) => renderDevice(r), }, { title: 'traceid', @@ -499,8 +534,15 @@ export default function ComparisonRecordsPage() { - {detail.device_model || '-'}({detail.device_manufacturer || '-'}) - {[detail.rom_vendor, detail.rom_name, detail.rom_version].filter(Boolean).join(' ') || '-'} + + {deviceName(detail)} + {detail.device_model_name && detail.device_model_name !== detail.device_model + ? `(${[detail.device_manufacturer, detail.device_model].filter(Boolean).join(' · ')})` + : detail.device_manufacturer + ? `(${detail.device_manufacturer})` + : ''} + + {romName(detail)} {detail.android_version || '-'}(SDK {detail.android_sdk ?? '-'}) {detail.app_version || '-'}({detail.app_version_code ?? '-'}) {detail.source_app_version || '-'} diff --git a/src/lib/types.ts b/src/lib/types.ts index 7d1c89a..aa213ba 100644 --- a/src/lib/types.ts +++ b/src/lib/types.ts @@ -465,8 +465,10 @@ export interface ComparisonRecordListItem { output_tokens: number | null; llm_cost_yuan: number | null; // 后端按「当时价」冻结的实际成本(元);旧记录 null → 「成本」列回退估算 device_model: string | null; + device_model_name: string | null; rom_vendor: string | null; rom_name: string | null; + rom_version: number | null; android_version: string | null; app_version: string | null; ad_revenue_yuan: number; // 本次比价看的信息流广告预估收益(元) @@ -517,7 +519,6 @@ export interface ComparisonRecordDetail extends ComparisonRecordListItem { comparison_results: Record[]; skipped_dish_names: string[]; device_manufacturer: string | null; - rom_version: number | null; android_sdk: number | null; app_version_code: number | null; source_app_version: string | null;