/** * 设备维度的 ONES 锚点解析:同品类不同型号(UI 相似)用同一脚本,按当前设备动态解析锚点, * 换 _DEVICE 环境变量重跑即可分别回写各型号的 ONES 用例。 * * 映射 key = DEVICE_CONFIG 里的设备名;值 = 该型号的 添加用例号 / 控制 step uuid(ble/wifi)。 * 控制步在两条协议超级用例里:ble→15975 / wifi→15974。 * 新型号:在此补一行即可被脚本识别。 */ export interface DeviceAnchor { add?: number; // 添加用例 ONES number ctrlBle?: string; // 15975 下的 step uuid ctrlWifi?: string; // 15974 下的 step uuid } const ANCHORS: Record> = { curtain: { 'Curtain 1A': { add: 15969, ctrlBle: '774V8bND', ctrlWifi: 'GPT3wJd9' }, 'Curtain3 2B': { add: 40955, ctrlBle: 'QqsnPMc3', ctrlWifi: 'GYtvdMTW' }, 'BlindTilt 3C': { add: 15946, ctrlBle: '3frMRDZj', ctrlWifi: '6gv1WLKE' }, // 'Roller Shade': { add: 191100, ctrlBle: 'SmzuHtWi', ctrlWifi: 'ScBpcSfJ' }, // 'Curtain3 2025': { add: 265933, ctrlBle: '3wM6fW8W', ctrlWifi: 'VbqWg59G' }, }, lock: { 'Lock 6F': { add: 15970, ctrlBle: '5YEfmpJz', ctrlWifi: '7cEkbh4Y' }, 'LockPro 7G': { add: 66694, ctrlBle: 'LnPNEJmS', ctrlWifi: 'Virku9zd' }, }, plug: { // base Plug 仅 WiFi 必测控制(BLE 无) 'Plug 4D': { add: 15966, ctrlWifi: 'Ay79Pj23' }, 'PlugMini 5E': { add: 15958, ctrlBle: '2jSFfY4k', ctrlWifi: '3nXsFW9n' }, }, sensor: { 'Contact Sensor 5O': { add: 15962, ctrlBle: 'A8C4BsCm', ctrlWifi: 'JKSgHHbC' }, 'Motion Sensor 6P': { add: 15963, ctrlBle: 'HrigrD2X', ctrlWifi: 'N7fSHmH3' }, }, humidifier: { 'Humidifier 1K': { add: 15964, ctrlBle: 'GkkrZpaC', ctrlWifi: '8tx3Rg76' }, // Humidifier2 控制必测是"绑定温湿度计",非简单开关 → 现有 control 用例不覆盖,仅锚添加 'Humidifier2 2L': { add: 74104 }, }, hub: { // hub 无控制必测,仅添加 'Hub2 8H': { add: 21787 }, 'HubMini 9I': { add: 15972 }, 'HubMiniMatter 0J': { add: 65336 }, }, meter: { // meter 控制必测(报警/校正)现有 control 未覆盖;仅锚添加。Outdoor Meter 暂无明确 ONES 对应,未映射 'Meter 3M': { add: 15965 }, }, robot: { // robot 控制必测(清扫/暂停/回充)为 WiFi,现有无 _control;仅锚添加 'Robot S1': { add: 15952 }, 'Robot S1P': { add: 15951 }, 'Robot K10+': { add: 40954 }, 'Robot S10': { add: 78369 }, }, }; const curProto = (): 'ble' | 'wifi' => (process.env.PROTO === 'wifi' ? 'wifi' : 'ble'); /** 当前设备的添加锚点前缀,如 `[P0][ONES:15969]`;无映射返回空串(不打锚点)。 */ export function onesAdd(cat: string, deviceName: string): string { const a = ANCHORS[cat]?.[deviceName]; return a?.add ? `[P0][ONES:${a.add}]` : ''; } /** 当前设备 + 当前协议的控制锚点前缀,如 `[P0][ONES:15975#774V8bND][ble]`;无对应返回空串。 */ export function onesCtrl(cat: string, deviceName: string): string { const a = ANCHORS[cat]?.[deviceName]; if (!a) return ''; if (curProto() === 'wifi') return a.ctrlWifi ? `[P0][ONES:15974#${a.ctrlWifi}][wifi]` : ''; return a.ctrlBle ? `[P0][ONES:15975#${a.ctrlBle}][ble]` : ''; }