/* 数据层 — 机型 / 对比维度 / 场景权重 / 数据清单 / 工具库。导出到 window。
   机型实测值参考《LG 65 G5》《海信 85 E8S》两份评测报告，其余为代表性数值。 */

const TVS = [
  { id: 'g5',  name: 'LG 65 G5',           brand: 'LG',      panel: 'OLED evo',     size: 65, price: '¥21,999',
    attrs: { 亮度: 70, 黑位: 100, 色彩: 96, 抗反: 95, 游戏: 98, 音频: 72, HDR: 84, 系统: 90 } },
  { id: 'e8s', name: '海信 85 E8S',         brand: 'Hisense', panel: 'RGB-MiniLED',  size: 85, price: '¥14,999',
    attrs: { 亮度: 98, 黑位: 82, 色彩: 90, 抗反: 84, 游戏: 80, 音频: 90, HDR: 96, 系统: 86 } },
  { id: 'sny', name: 'Sony 65 BRAVIA 8 II', brand: 'Sony',    panel: 'QD-OLED',      size: 65, price: '¥21,999',
    attrs: { 亮度: 82, 黑位: 100, 色彩: 99, 抗反: 90, 游戏: 88, 音频: 84, HDR: 90, 系统: 82 } },
  { id: 'tcl', name: 'TCL 85 Q10K',        brand: 'TCL',     panel: 'Mini LED',     size: 85, price: '¥11,999',
    attrs: { 亮度: 94, 黑位: 80, 色彩: 88, 抗反: 74, 游戏: 86, 音频: 80, HDR: 92, 系统: 78 } },
];

// 对比维度 → 指标行。better: 'hi' 越大越好 / 'lo' 越小越好 / null 定性（不高亮）
const DIMS = [
  { key: 'pic', label: '画质', icon: 'gamut', metrics: [
    { name: '峰值亮度', unit: 'nit', better: 'hi', vals: { g5: 2480, e8s: 2630, sny: 2300, tcl: 4500 } },
    { name: '全屏亮度', unit: 'nit', better: 'hi', vals: { g5: 320, e8s: 1600, sny: 460, tcl: 1400 } },
    { name: '色域 DCI-P3', unit: '%', better: 'hi', vals: { g5: 99, e8s: 96, sny: 99.5, tcl: 96 } },
    { name: '色准', unit: 'ΔE', better: 'lo', vals: { g5: 1.2, e8s: 1.8, sny: 1.0, tcl: 2.2 } },
    { name: '控光分区', unit: '', better: null, vals: { g5: '逐像素', e8s: '2340 区', sny: '逐像素', tcl: '1500 区' } },
    { name: '反射率', unit: '%', better: 'lo', vals: { g5: 0.8, e8s: 1.7, sny: 1.3, tcl: 2.8 } },
  ] },
  { key: 'game', label: '游戏', icon: 'bolt', metrics: [
    { name: '输入延迟 4K120', unit: 'ms', better: 'lo', vals: { g5: 5.0, e8s: 11, sny: 8.5, tcl: 6.4 } },
    { name: '响应时间', unit: 'ms', better: 'lo', vals: { g5: 0.3, e8s: 8.8, sny: 0.3, tcl: 5.8 } },
    { name: '最高刷新率', unit: 'Hz', better: 'hi', vals: { g5: 120, e8s: 180, sny: 120, tcl: 144 } },
    { name: 'HDMI 2.1 口', unit: '个', better: 'hi', vals: { g5: 4, e8s: 4, sny: 2, tcl: 3 } },
    { name: 'VRR / ALLM', unit: '', better: null, vals: { g5: '支持', e8s: '支持', sny: '支持', tcl: '支持' } },
  ] },
  { key: 'hdr', label: 'HDR', icon: 'eotf', metrics: [
    { name: '峰值亮度', unit: 'nit', better: 'hi', vals: { g5: 2480, e8s: 2630, sny: 2300, tcl: 4500 } },
    { name: '杜比视界', unit: '', better: null, vals: { g5: '✓', e8s: '✓', sny: '✓', tcl: '✓' } },
    { name: 'HDR10+', unit: '', better: null, vals: { g5: '—', e8s: '✓', sny: '—', tcl: '✓' } },
    { name: 'EOTF 跟踪', unit: '', better: null, vals: { g5: '优', e8s: '优', sny: '优', tcl: '良' } },
    { name: '色域覆盖', unit: '%', better: 'hi', vals: { g5: 99, e8s: 96, sny: 99.5, tcl: 96 } },
  ] },
  { key: 'av', label: '影音·系统', icon: 'broadcast', metrics: [
    { name: '音频功率', unit: 'W', better: 'hi', vals: { g5: 60, e8s: 80, sny: 70, tcl: 60 } },
    { name: '杜比全景声', unit: '', better: null, vals: { g5: '✓', e8s: '✓', sny: '✓', tcl: '✓' } },
    { name: 'DTS-X', unit: '', better: null, vals: { g5: '—', e8s: '✓', sny: '—', tcl: '✓' } },
    { name: 'NAS 网盘', unit: '', better: null, vals: { g5: '✓', e8s: '✓', sny: '部分', tcl: '✓' } },
    { name: '运行内存', unit: 'GB', better: 'hi', vals: { g5: 3, e8s: 4, sny: 4, tcl: 3 } },
  ] },
  { key: 'io', label: '接口', icon: 'plug', metrics: [
    { name: 'HDMI 2.1 口', unit: '个', better: 'hi', vals: { g5: 4, e8s: 4, sny: 2, tcl: 3 } },
    { name: 'eARC', unit: '', better: null, vals: { g5: '✓', e8s: '✓', sny: '✓', tcl: '✓' } },
    { name: 'USB 口', unit: '个', better: 'hi', vals: { g5: 3, e8s: 2, sny: 2, tcl: 3 } },
    { name: '网口', unit: '', better: null, vals: { g5: '百兆', e8s: '百兆', sny: '千兆', tcl: '千兆' } },
    { name: '无线', unit: '', better: null, vals: { g5: 'WiFi 6', e8s: 'WiFi 6', sny: 'WiFi 6E', tcl: 'WiFi 6' } },
  ] },
];

// 场景 → 属性权重（用于推荐）。sum≈1
const SCENES = [
  { key: 'living', label: '客厅·亮', blurb: '强环境光、白天看',
    w: { 亮度: .30, 抗反: .25, HDR: .15, 色彩: .15, 游戏: .05, 音频: .05, 黑位: .05 } },
  { key: 'bedroom', label: '卧室·暗', blurb: '暗房、夜里看',
    w: { 黑位: .35, 色彩: .20, 音频: .10, 游戏: .10, HDR: .10, 亮度: .05, 抗反: .05 } },
  { key: 'game', label: '游戏', blurb: '主机 / PC 高刷',
    w: { 游戏: .40, 黑位: .15, 亮度: .10, 色彩: .10, HDR: .10, 系统: .10, 音频: .05 } },
  { key: 'movie', label: '影音', blurb: '电影 / 流媒体',
    w: { 音频: .30, HDR: .20, 色彩: .15, 系统: .15, 亮度: .10, 黑位: .05, 游戏: .05 } },
];

const ATTR_KEYS = ['亮度', '黑位', '色彩', '抗反', '游戏', '音频', 'HDR', '系统'];

// ============ 数据清单（去重 55 项：done 17 / todo 11 / ext 27）============
const DATA_ITEMS = [
  { name: '整机三维·重量·厚度·底座', tier: 'done', n: 15 },
  { name: '面板规格·分区·刷新·芯片·内存', tier: 'done', n: 12 },
  { name: '峰值·全屏亮度', tier: 'done', n: 11 },
  { name: '安装·安全·防倾倒规则', tier: 'ext', src: '规则', n: 10 },
  { name: '历史价·到手价·库存', tier: 'ext', src: '市场', n: 8 },
  { name: '色域·色准·色温·灰阶·光谱', tier: 'done', n: 7 },
  { name: '视频播放·NAS网盘·格式·字幕·语音', tier: 'done', n: 7 },
  { name: 'App安装·投屏·HDMI-CEC·生态联动', tier: 'todo', n: 7 },
  { name: '电视墙净宽·插座·障碍·墙体', tier: 'ext', src: '空间', n: 7 },
  { name: '反射率·抗反光', tier: 'done', n: 6 },
  { name: '对比度·黑位·控光分区·暗场', tier: 'done', n: 6 },
  { name: 'HDMI·eARC·USB·网口', tier: 'done', n: 6 },
  { name: '场景评分·推荐权重', tier: 'done', n: 6 },
  { name: 'VESA·支架承重', tier: 'todo', n: 6 },
  { name: '观看距离·眼高·沙发布局', tier: 'ext', src: '空间', n: 6 },
  { name: '用户设备·旧机·使用画像', tier: 'ext', src: '空间', n: 6 },
  { name: '去广告/直播/片源/校准 知识', tier: 'ext', src: '规则', n: 6 },
  { name: '可视角·离轴色偏', tier: 'done', n: 5 },
  { name: '耐久·烧屏·亮度/背光衰减', tier: 'todo', n: 5 },
  { name: '二手行情·回收·以旧换新', tier: 'ext', src: '市场', n: 5 },
  { name: '送装/搬家/维修/延保 费', tier: 'ext', src: '市场', n: 5 },
  { name: '户型图·朝向·楼层·面积', tier: 'ext', src: '空间', n: 5 },
  { name: '家庭网络·带宽·WiFi', tier: 'ext', src: '空间', n: 5 },
  { name: '入户门·楼道·转角·台阶', tier: 'ext', src: '小区', n: 5 },
  { name: '售后·保修·验机·故障树', tier: 'ext', src: '规则', n: 5 },
  { name: '系统体验·开机广告·启动·纯净度', tier: 'done', n: 4 },
  { name: '遥控器·配件形态', tier: 'done', n: 4 },
  { name: '交付成败·可信度', tier: 'ext', src: '小区', n: 4 },
  { name: '运动响应·拖影·刷新率', tier: 'done', n: 3 },
  { name: '输入延迟·VRR·ALLM·游戏兼容', tier: 'done', n: 3 },
  { name: '频闪 SVM', tier: 'done', n: 3 },
  { name: '包装箱三维·重量', tier: 'todo', n: 3 },
  { name: '低蓝光占比〔可由光谱算〕', tier: 'todo', n: 3 },
  { name: '满载发热·表面温度', tier: 'todo', n: 3 },
  { name: '国补·地区补贴·名额', tier: 'ext', src: '市场', n: 3 },
  { name: 'SKU-渠道-马甲·保修差异', tier: 'ext', src: '市场', n: 3 },
  { name: '故障率·失效统计', tier: 'ext', src: '市场', n: 3 },
  { name: '窗户朝向·采光·遮光', tier: 'ext', src: '空间', n: 3 },
  { name: '小区·楼栋·电梯尺寸', tier: 'ext', src: '小区', n: 3 },
  { name: '视距·尺寸推荐规则', tier: 'ext', src: '规则', n: 3 },
  { name: '朝向反光·采光风险规则', tier: 'ext', src: '规则', n: 3 },
  { name: '屏幕均匀性', tier: 'done', n: 2 },
  { name: '外观·做工·颜值评分', tier: 'done', n: 2 },
  { name: '音质实测·音量·低频·声场', tier: 'todo', n: 2 },
  { name: '音画同步 lip-sync 延迟', tier: 'todo', n: 2 },
  { name: '高码率解码·流媒体流畅度', tier: 'todo', n: 2 },
  { name: '自动亮度限制 ABL 行为', tier: 'todo', n: 2 },
  { name: '促销日历·平台券', tier: 'ext', src: '市场', n: 2 },
  { name: '会员价·内容目录·平台码率', tier: 'ext', src: '市场', n: 2 },
  { name: '功耗·SDR/HDR/待机', tier: 'todo', n: 1 },
  { name: '新品周期·代际差异·清仓', tier: 'ext', src: '市场', n: 1 },
  { name: '各地电价', tier: 'ext', src: '市场', n: 1 },
  { name: '电视柜尺寸', tier: 'ext', src: '空间', n: 1 },
  { name: '使用环境·温湿度·油烟·盐雾', tier: 'ext', src: '空间', n: 1 },
  { name: '低价陷阱·配置缩水识别规则', tier: 'ext', src: '规则', n: 1 },
];

// ============ 工具库 ============
// k：工具 id，与主页壳 ?tool= / 评审页 ?app= 深链一致；主页卡片(home.jsx)按 k 派生，避免文案两处漂移。
const TOOLS_FRONT = [
  { k: 'room', n: '在我家试电视', icon: 'cube', tool: 'evaluate_room_and_size', toolName: '房间与尺寸评估', mode: 'room_preview', modeName: '空间预览', act: '一次扫描建立房间尺度；实时摆放 3D 电视、切换尺寸与安装方式，确认后生成受 AR 尺度约束的 AI 精细效果。', ret: ['电视墙净宽', '观看距离/推荐尺寸', '意向机型', '摆放/尺寸偏好', '背景墙条件'] },
  { k: 'light', n: '采光 · 环境光检测', icon: 'sun', tool: 'evaluate_room_and_size', toolName: '房间与尺寸评估', mode: 'ambient_light', modeName: '环境光检测', act: '手机拍照测光，分时段采样估客厅照度区间，反推抗反与亮度需求。', ret: ['环境光照度区间', '强光/直射朝向', '抗反需求', '亮度余量/护眼'] },
  { k: 'inspect', n: '一键验机', icon: 'scan', tool: 'diagnose_tv_problem', toolName: '验机与故障诊断', mode: 'delivery_inspection', modeName: '到货验机', act: '一次拍摄完成外观、屏幕、接口与开机检查，直接给出是否签收。', ret: ['验机结论', '验机报告', '故障样本'] },
  { k: 'setup', n: '一键最佳设置', icon: 'sliders', tool: 'plan_device_setup', toolName: '设备与最佳设置', mode: 'best_settings', modeName: '最佳设置', act: '按机型、连接设备和观看场景生成设置卡，同时判断线材是否需要购买。', ret: ['画质设置', '设备场景', '线材购买清单'] },
];

// 9 个统一 Agent 工具。旧能力继续作为内部模块存在，不再以工具名暴露给 Agent。
// icon 随组定义（home.jsx / app.jsx 直接读取），保持移动端与看板页同源。
const TOOLS_BACK = [
  { t: '产品事实', icon: 'database', d: '建立候选与同口径比较', tools: ['产品研究', '电视对比'] },
  { t: '购买检查', icon: 'search', d: '确认型号、店铺与优惠是否一致', tools: ['购买信息检查'] },
  { t: '空间与设备', icon: 'ruler', d: '房间、配件、连接、安装与交付', tools: ['房间与尺寸评估', '电视配件推荐', '设备与最佳设置', '安装与入户规划'] },
  { t: '全生命周期', icon: 'gear', d: '长期成本、处置、验机与故障', tools: ['长期成本与处置', '验机与故障诊断'] },
];

// ============ 首页演示精选（源：db dump 评测报告；全量品牌/机型见 dbdata.jsx，_mkdb.py 生成）============
// DBTV 挑 6 台跨品牌跨价位，价格/面板/亮点均出自对应评测报告；id 对应报告 id（dbview 用它补详情）。
const DBTV = [
  { id: 10000788, brand: '海信', model: '85 E8S',           panel: 'RGB-MiniLED', size: 85, price: 14999, hl: 'RGB 光晕控制出色' },
  { id: 10000735, brand: 'LG',   model: '65 G5',            panel: 'OLED',        size: 65, price: 21999, hl: 'HDR 影院实测 · 2484nit' },
  { id: 10000225, brand: 'TCL',  model: '85 Q10L',          panel: 'QD-MiniLED',  size: 85, price: 11999, hl: '万象分区 · 超窄金属边' },
  { id: 10000219, brand: '雷鸟', model: '85 鹤7 PRO',        panel: 'QD-MiniLED',  size: 85, price: 9799,  hl: '同价位控光标杆' },
  { id: 10000220, brand: '三星', model: '85LS03D',          panel: 'QLED',        size: 85, price: 23999, hl: 'The Frame 画壁电视' },
  { id: 10000228, brand: '华为', model: 'Vision 5 75',      panel: 'MiniLED',     size: 75, price: 5647,  hl: 'HDR 标准实测 · 1080nit' },
];

// ============ 锁定实测（id → 详情页/Agent 卡片共用口径，压过 dbview 的价位档演示值）============
// nits / full 为 db brightness_plot 对应模式实测；G5 / E8S 来自仓库内完整评测报告。未有实测的机型不写入此表。
const SPEC_REAL = {
  10000735: { nits: 2484, mode: 'HDR 影院', source: '本地报告实测', hz: 120, de: 1.2 }, // LG 65 G5
  10000788: { nits: 2631, mode: 'HDR 鲜艳', source: '本地报告实测', hz: 180, de: 1.8 }, // 海信 85 E8S
  10000219: { nits: 4016, full: 708, mode: 'HDR 标准', source: 'DB 实测' }, // 雷鸟 85 鹤7 PRO
  10000220: { nits: 570, full: 558, mode: 'HDR 标准', source: 'DB 实测' },  // 三星 85LS03D
  10000222: { nits: 1883, full: 721, mode: 'HDR 标准', source: 'DB 实测' }, // VIDDA 发现X Pro 2026款 85
  10000223: { panel: 'QD-MiniLED', nits: 2428, full: 685, mode: 'HDR 标准', source: 'DB 实测' }, // 雷鸟 85 鹤6 Ultra 25款
  10000225: { nits: 4728, full: 835, mode: 'HDR 标准', source: 'DB 实测' }, // TCL 85 Q10L
  10000228: { nits: 1080, full: 592, mode: 'HDR 标准', source: 'DB 实测' }, // 华为 Vision 5 75
  10000229: { nits: 1761, full: 658, mode: 'HDR 标准', source: 'DB 实测' }, // 海信 85 E7N PRO
  10000230: { nits: 2887, full: 737, mode: 'HDR 标准', source: 'DB 实测' }, // 海信 100 E8Q PRO
  10000231: { nits: 1424, full: 500, mode: 'HDR 标准', source: 'DB 实测' }, // VIDDA 发现X 2026款 85
  10000233: { panel: 'MiniLED', nits: 1088, full: 446, mode: 'HDR 标准', source: 'DB 实测' }, // 华为 Vision 5 SE 75
  10000346: { panel: 'QD-MiniLED', nits: 7810, full: 826, mode: 'HDR 标准', source: 'DB 实测' }, // TCL 98 Q10L PRO
};

Object.assign(window, { TVS, DIMS, SCENES, ATTR_KEYS, DATA_ITEMS, TOOLS_FRONT, TOOLS_BACK, DBTV, SPEC_REAL });
