--- name: dqb-xuanxing description: 成套报价软件选型页断路器筛选修正与替换技能。当用户要求"检查/筛选选型页异常的断路器规格""把异常型号修正/替换成规范型号""用XX系列替换断路器""帮我选型"等时使用。工作方式=一次拉清单+一次 LLM 批量判断→**确定性引擎(xuanxing.js)按《规格完全解析知识库》全维度匹配定价**→一次批量接口替换。只处理塑壳断路器和微型断路器;数量列绝对不许改动;**匹配不上就不替换**。 --- # 成套报价选型页断路器筛选修正(解析走知识库、匹配定价走确定性脚本) ## ★★塑壳断路器规格完全解析知识库(解析/纠错/匹配前必须逐位读懂) ### 型号语法总图(以 NXM-63S/33002 63A 板后接线 为例,从左到右) | 段 | 实例 | 含义 | 说明 | |---|---|---|---| | 系列前缀 | NXM | 系列 | 与品牌共同定位目标系列 | | 壳架 | -63 | 壳架等级电流 | 标准档 16/20/32/63/100/125/140/160/250/400/630/800/1250/1600 | | 分断代号 | S | 分断能力等级字母 | S/H/J/C…(紧贴壳架数字后),基准价主要决定项 | | 附件码 | /33002 | 极数+脱扣+附件+用途 | 逐位见下表,**位数因系列而异** | | 额定电流 | 63A | 整定电流 | 必须 ≤ 壳架 | | 接线后缀 | 板后接线 | 接线方式 | 板前=无后缀(默认);**价差大**,见接线附件表 | ### 附件码逐位语义表(★用户 2026-09-25 确认:**第 5 位是用途代号,不是脱扣方式**) | 位数 | 名称 | 取值域 | 含义 | |---|---|---|---| | 第1位 | 极数 | 2/3/4 | 2P/3P/4P(进码不打印"P"字) | | 第2位 | 脱扣器方式 | 2=电磁式 / 3=热磁(NM1B 叫复式脱扣器) | 电子式**不进码**=独立系列名(NXMS/NXMSF 等电子式塑壳) | | 第3位 | 附件·十位 | 0无 / 1分励脱扣器 / 2辅助触头 / 3欠压脱扣器 / 4分励+辅助 / 5分励+欠压 / 6二组辅助触头 / 7辅助+欠压 | 附件代号主体 | | 第4位 | 附件·个位 | 0无 / 8=叠报警触头 | Y=预付费电表专用变体(10Y/48Y…) | | 第5位 | **用途代号** | **空(不写)=配电保护 / 2=电动机保护——仅此两种,不加价** | ★第5位出现 0/1/3~9 均为**不存在的型号** | ### 各系列附件码位数制(先判系列再用对应制解读) | 位数制 | 代表系列 | 结构 | |---|---|---| | 4 位(主流) | NXM/NM1/CDM/DZ20 | 极数+脱扣+附件十位+附件个位(3300/2300/3200/3320/3308/4300…) | | 5 位 | 同上带用途 | 4 位+用途代号(实证存在:33002/23002=…电动机保护) | | 1 位 | 老 NM10/NM1 | 0~8 附件码(极数脱扣另见规格他处) | | 3 位 | NM2 | 300/308/320/328 = 极数+附件十位+附件个位 | | 字母码 | NM8/NM3DC/NM3FC/NXA | AX辅助 AL报警 AXL辅助报警 SHT分励 SHTA分励+辅助 SHTB分励+辅助报警 UVT欠压 UVTD助吸欠压延时 ASUVT自吸欠压瞬时 MO电操机构 OF辅助 CC闭合电磁铁 KL钥匙锁——**整串比对,不拆位** | ### 操作附件 / 接线附件 / 电压类附件(都在价格维度里,必须核对) - **操作附件**:手柄直接操作=无后缀(默认)|Z=转动手柄操作|P=电动操作(另有"电操电压"独立维度,选 P 才有意义)。 - **接线附件**:板前接线=无后缀(默认)|板后接线(后缀"板后接线")|插入式(后缀"插入式")。**价差大**:NXM-63S/3300 63A 板前322 / 板后555 / 插入式821。 - **电压类附件**:分励电压/欠压电压/分励欠压电压=独立选型维度,影响组合价格但**不进型号串**(附件码含 1/3/5/7 分励欠压时才有意义)。 - **附件变价实例**:3300→3320(辅助触头)+41元;3300→3308(报警触头)+41元;**用途位不加价**(3300 与 33002 同价)。 ### 实例判读库(正反例,匹配时就照这样判) | 码 | 判读 | 结论 | |---|---|---| | 33002 | 3P+热磁+无附件+**电动机保护** | ✓ 真实型号 | | 32008 | 第5位=8,用途代号仅可为空/2 | ✗ **型号不存在** | | 3300 | 3P+热磁+无附件(配电保护) | ✓ | | 3320 | 3P+热磁+辅助触头 | ✓ | | 3308 | 3P+热磁+报警触头 | ✓ | | 3200 | 3P+电磁式脱扣 | ✓ | | 23002 | 2P+热磁+无附件+电动机保护 | ✓ | ### 各品牌型号语法速查(纠错识别通吃塑壳+微型,不局限于德力西/正泰) | 品牌系 | 型号形态 | 识别要点 | |---|---|---| | 国标码系(正泰 NM/NXM/NM8、德力西 CDM/CDK、常熟 CM、人民 RMM、良信 NDM、天正 TGM、环宇 HUM、DZ20) | `NM8-125S/33002 100A` | 数字附件码 1~5 位;壳架在 `-` 后;引擎原生支持 | | ABB Tmax XT | `XT4N250/3340 200A`、`XT2N160 TMA 160 3p` | `/3340` 同国标码位语义;壳架在型号尾部(XT4N**250**,引擎通用兜底已认);TMA/TMD=热磁脱扣单元 | | 施耐德 NSX/Compact、iC65/EA9 | `NSX100F TMD 100A 3P3D`、`iC65N B16 1P` | 壳架 NSX**100**F;TMD/MP=热磁、ETU/EtP=电子;3P3D=3极3保护(中性线带保护);微型曲线 B/C/D(B=照明防护) | | 西门子 3VA/3VL、5SU | `3VA1113-4EE32-0AA0` | 订单号式:`3VA1`+框架规格码+`-`+结构码(极数/附件)+`-`+电压码——纠错时按西门样本翻译成 极数/电流/附件 再喂引擎 | | 微型全系(DZ47 家族/NB/NXB/SH/iC65/5SJ/TXB…) | `DZ47sLE 1P+N C16 30mA` | 极数(含1P+N/3P+N)、曲线 C/D(施耐德系加 B)、电流、漏电 mA——引擎 v3 原生全维度匹配 | **纠错翻译规则(阶段① LLM 把非国标格式译成标准形再喂 --fix)**: - TMD/TMA/TM/D→热磁脱扣;ETU/EtP/E/Micrologic/电子→电子式脱扣(电子式≠附件码,进系列名) - 3P3D/4P4D=极数+中性线带保护→译成 3P/4P(若目标系列有 N 极可开闭选项,译 3P+N 由用户确认) - 订单号(西门子/ABB 老式)→查样本取 极数/In/附件,译成 `系列-壳架/码 电流` 形式;译不出把握的项**留空不要编** - OCR 噪声(D747s/e30mA/*/斜杠粘连)→按特征还原(引擎已内建噪声容忍,--fix 仅需处理品牌级错误) ## ★多型号批量编排(快速替换的通用形态,不局限一两种) 一键/批量任务的标准编排(AI 负责,引擎逐组跑): 1. 拉清单 → 按行的**品牌+类型**分组(ABB 塑壳一组、德力西漏电微型一组、正泰普通微型一组…) 2. 每组选目标系列:同品牌优先(元件库 `get_data_search2` 搜系列名,德力西=factId 1/正泰=2);库里没有的品牌组 → 默认问用户替换成哪家(会话里已指定则直接用) 3. 逐组 `node xuanxing.js <品牌> <系列> --dry`(几秒一组)→ **合并各组方案表**给用户(含组名=目标系列) 4. 用户确认后逐组 `--exec`;跨品牌替换(ABB→德力西等)按知识库映射分断等级(N 36kA≈S 35kA 同级),映射不确定的行标注请用户确认 5. 库里搜不到的系列/未定价系列:该组列"未定价"跳过,不阻塞其他组 ### 粘连串拆分(CAD 扒图常见:码与电流无空格粘连) 规则:`/` 后整段数字,**枚举全部切分**,电流段必须 ∈ 标准档位表 且 ≤ 壳架,码段必须通过上表语法域——切分不唯一或全部非法都按跳过处理: | 粘连串 | 切分枚举 | 唯一解 | |---|---|---| | /3300200A(壳架250) | 3300+200A✓|33002+00A✗(00A非法电流) | 3300 200A | | /3200863A(壳架63) | 3200+863A✗(863超壳架非档位)|32008+63A 切分合法但**码32008非法** | 无有效解→整行跳过"型号不存在" | | /3300140A(壳架160) | 3300+140A✓(140∈档位) | 3300 140A | | /33002500A(壳架630) | 3300+2500A✗(超壳架)|33002+500A✓ | 33002 500A | ## ★匹配判定铁律(用户 2026-09-25 要求,违反即事故) 1. **匹配=全维度一致**:壳架/分断代号/极数/脱扣方式/附件码(含用途位)/额定电流/接线方式,逐一命中才算匹配;**表价必须取全维度命中行的价格**。 2. **码必须能被目标系列选项字典解释**(spe_opt 选项标签是"码【含义】"双写格式,如 `2【电磁式】`、`20【辅助触头】`)——字典里没有该码=该系列无此型号→**跳过不替换,禁止就近改成相近码**(如 32008 改成 3300 去匹配)。 3. **禁止硬选**:不许电流上取一档、不许壳架升档、不许换到别的有价系列凑数。 4. **匹配不上就不替换**:跳过行必须在汇报里列明原因(如"32008 型号不存在""附件码 3320 不在 CDM3S 系列选项表")。 5. 解析不出唯一合法解的行(粘连多解且都合法、乱码)→ 跳过并报告,不提交猜测。 ## ★一键入口(AI助手面板的 ⚡ 按钮) 聊天面板右下角有"⚡ 读取选型规格并替换"按钮,点击会发送固定指令: > **读取当前选型界面的规格并且帮我替换这些规格** 收到这句(或用户手动输入同义语)= **直接执行下面完整三阶段流程**,并遵守默认范围: - **默认只替换 塑壳断路器 和 微型断路器**; - **其他任何类型一律不替换**(隔离开关/万能式/接触器/熔断器/互感器/浪涌/风机等非断路器,仅识别后列进跳过汇报); - 打错/OCR 错的型号**必须先按上方知识库识别纠正**——纠错后确认属于塑壳/微断才替换;**纠错后仍认不出归属的同样不替换**; - 替换前仍按铁律 4 给《方案表》等用户说"执行"。 **阶段①** 一次拉清单 + 一次 LLM 批量判断(禁逐行问模型) **阶段②③** 跑确定性引擎 `node xuanxing.js <品牌> <系列> --dry` 出《方案表》(引擎内部按本知识库全维度匹配,结果稳定不随机)→ 用户确认 → `--exec` 真跑 ## ★替换规则速查表(与元件库页面"替换"按钮逐条一致) | 列 | 取值规则 | |---|---| | **元件名称** | `xin_pinming` = 该系列树节点的 **DustryName**(同一系列所有规格共用)。★禁止把完整型号当品名传;实在拿不到 DustryName 可省略——软件自动按系列名去"XX系列"前缀补 | | 规格 | `xin_guige` = 规范完整型号(**壳架数字+分断字母+/附件码 电流[ 接线后缀]**,如 `CDM3S-250S/33002 200A`、`NXM-63S/3300 63A 板后接线`)——附件码绝不可丢 | | 表价 | `xin_biaojia` = **全维度命中行**的价格(引擎已按铁律匹配;手工路径也必须逐维度核对,禁止只对三元组) | | 采购系数 | `xin_xishu` = 该系列**在元件库页面已保存的本体折扣**÷100(localStorage 键 `__dqb折扣@<系列名>` 的 `bt` 字段;无存档=100→系数1)。★**每次任务现读,禁止沿用上次/记忆里的折扣** | | 品牌 | `xin_pinpai` = 系列(树/搜索)返回的厂家名 | | 系列 | `xin_xilie` = 树节点 **SeriesName 原文**(如 `CDM3S系列塑壳断路器`) | | **数量** | ★**绝不传、绝不改**——接口会直接拒绝 | ## ★铁律 1. 只处理 fenlei 为 "塑壳"/"微型" 的行;隔离开关 HGL/万能式/接触器/熔断器/fenlei=null 一律跳过并汇报(fenlei=null 但确是打错的断路器型号→按知识库纠错后再验,认出即放行)。 2. **数量绝对不许动**。 3. 不执行任何直接 SQL;替换一律走 `/api/replacebatch`(或回落 `/api/replace`)。 4. 修改前先给用户看《方案表》,用户说"执行/替换"再跑阶段②③。 5. **解析与定价一律交给确定性引擎 xuanxing.js(v3,塑壳+微型都支持)**;接口层已接入附件码校验/表价>0/0行显式失败防线。每行只需:`node xuanxing.js 品牌 系列 --dry` → 核对 → `--exec`,禁止手工拼平表/逆向页面 JS。 ## 前置 - 成套报价软件运行中且已进项目(引擎/接口随软件自动起)。 - **开始前自检(第一步必做)**:`curl -s "http://127.0.0.1:18790/api/xuanxing?token=$TOKEN"`——若返回 `ok:false` 且含"没有打开项目",**先请用户在软件项目列表双击进入项目再继续**,不要自己重试或绕过。 - 若 2c 读折扣时 `/api/page` 返回"元件库页面未就绪"——请用户先点开软件的「元件库」页签(页面加载一次即可),再重试。 - 令牌:`cat ~/.zcode/chengtao/token.txt`(主程序启动时自动生成,无需解析配置) - 主程序接口 http://127.0.0.1:18790(全部 ?token=);元件库数据 http://127.0.0.1:8080。 ## 阶段①:筛选异常断路器行(秒级) ```bash curl -s "http://127.0.0.1:18790/api/xuanxing?token=$TOKEN" ``` **1a. 正则快筛可疑特征**(缩小范围,不用逐行思考): - 电流粘连:`/3300` 或 `/4300` 后紧跟数字无空格(如 `CDM3S-400F/3300400A`) - 壳架≥2000 或非标准档 - 极数缺失或写法混乱(无 P 也无 /3xxx /4xxx) - 前缀大小写混乱(CDM3s/CDM3S)、多余中文后缀、空格异常、乱字符(`DZ4/PLE`、`e30mA`) - **fenlei=null 但含断路器特征**(DZ/NM/NB/CM/NS 碎段、[1-4]P、C/D+数字、数字A、30mA 漏电标识) **1b. LLM 批量理解判断+纠错**(按知识库逐位解读,禁逐行问模型): 对每个可疑行回答:①是不是塑壳/微型断路器 ②异常类型 ③**纠错出规范完整型号**(按语法总图+逐位语义表拆:极数/脱扣/附件/用途逐位写清,如 `DZ4/PLE 1P+N C16A e30mA`→德力西漏电微型 `DZ47sLE 1P+N C16 30mA`)④壳架/极数/电流。 ★附件码按"粘连串拆分"节枚举切分,切不出唯一合法解就标记跳过,不许猜。 **纠错后的规范型号必须能被软件分类表认出**——认不出说明纠错了,别提交。 产出方案给用户确认: ``` | 原规格 | 判断 | 异常 | 纠错后型号(逐位解读) | ``` ## 阶段②③:确定性引擎匹配定价 + 批量替换(主路径) **先跑 dry 出《方案表》**(引擎 v3 **原生支持塑壳+微型断路器**:塑壳按附件码全维度;微型按 极数(含1P+N/N极可开闭)/脱扣曲线(C·D)/额定电流/漏电mA 全维度,规范型号串按元件库页面 nameStr 规则自动拼装,含 OCR 噪声(e/*/斜杠)行与 fenlei=null 推断行;多配置价差自动取"无附件/标准"档并标注): ```bash node "<本技能目录>/xuanxing.js" <品牌关键词> <系列关键词> --dry # 例:node ~/.zcode/skills/../.zcode/skills/dqb-xuanxing/xuanxing.js 德力西 CDM3S --dry # 微型(漏电/普通)系列同样直接跑:… 德力西 DZ47PLE --dry / … 德力西 DZ47s --dry # 可选:--only "CDM3S-250F/3300200A" 只看一行;--fix 修正.json({"旧规格":"纠错后规格",...}) ``` 引擎输出:`| 旧规格 | 要素解读 | 新型号 | 表价 | 系数 | 匹配明细 |` + 跳过清单(含逐条原因:型号不存在/无全维度匹配行/多价歧义/未定价)。 **AI 逐行核对 dry 方案表**(要素解读与表价是否合理)→ 给用户看 → 用户说"执行"后: ```bash node "<本技能目录>/xuanxing.js" <品牌关键词> <系列关键词> --exec ``` 引擎 --exec 内部走一次 `POST /api/replacebatch`(单事务、折扣现读、失败项回落逐行 /api/replace)。**不要再手工拼字典/逆向页面 JS——微型与塑壳都由引擎一条命令完成,手工路径已废弃。** 提交仍走 /api/replacebatch(`xin_pinming` 必传=DustryName,协议同速查表)。 **可视化模式(可选,仅当用户要求"看着一行行替换")**:逐行 `POST /api/selectselection` + `POST /api/editselection`——慢一个量级,默认不用。 ## 汇报格式 ``` ✅ 已批量修正 N 项(影响 M 个库行): | 原规格(异常) | 新型号 | 码位解读 | 品名 | 表价 | 系数 | 影响 | ⏭️ 跳过/失败 K 项:| 规格 | 原因(型号不存在(码非法)/系列选项表无此码/无全维度匹配行/多解歧义/未定价系列/非断路器/接口拒绝原因) | ``` 软件侧日志:`<软件目录>/logs/ai助手_gateway.log`(每次批量替换有一行汇总)。