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;