基线:全量源码首提(D1 版本控制落地,含第一轮优化 B1-B4/A1/A4/缩放修复)

This commit is contained in:
dqb-dev
2026-10-01 22:15:22 +08:00
commit 1e65792b09
499 changed files with 204579 additions and 0 deletions
@@ -0,0 +1,200 @@
---
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`(每次批量替换有一行汇总)。