修复匹配的问题

This commit is contained in:
andy committed 2026-09-19 11:06:02 +08:00
1 parent 6eeaee07d4
commit ea9c4b34c6
23 files changed
+470 -31

No files matched your search

+5
View File
@@ -0,0 +1,5 @@
# 2026-09-19 验证证据
此目录仅保存日期化、只读的历史验证结论,不定义当前业务规则。当前规则以活动源码、mapping、业务入口和发布清单为准。
- [产品名称格式匹配与前置失败阻断](product-name-normalization-01a0b77e/README.md)
@@ -0,0 +1,32 @@
# 产品名称格式匹配修复:本地验证
日期:2026-09-19。此记录为只读历史证据,不是当前业务规则,也不代表生产 ERP 已执行成功。
## 结论与范围
- 独立团单个下单的输入名称与 ERP 候选均经 NFKC、去空白处理后比较;保留其他标点与业务限定词,精确优先、唯一包含兜底。
- 归一后同名的多个候选阻断,即使其中一条原始拼写完全相同;零匹配和多匹配提供独立中文原因。
- 选中候选后,原生 GetProduct 联动与拦截的 DoInfoJH 载荷均保留 ERP 原始名称。
- 初始校验/查询失败时,表单、产品联动与提交均未执行;返回初始候选计数,并将依赖阶段标记为跳过。
- Program keyword 保留原始括号与内部空白;name 保持既有格式/别名归一化。无新增数据库迁移,Skill 与运营输入模板未修改。
## 验证
| 检查 | 结果 |
|---|---|
| 新增公共预检入口合成回归 | 8 项通过:双向括号/空白、原名联动和载荷、精确优先、唯一包含、归一碰撞、多候选、零候选/限定词、HTTP/客户失败与联动不完整 |
| Program 解析器回归 | 30 项通过,包含新增原文 keyword 保留测试 |
| node --run check:repo | 10/10 通过 |
| node --run check | 通过 |
| node --run test:control-plane | 273/273 通过 |
| node --run test:legacy | 431/431 通过 |
| node --run build | 通过 |
| git diff --check | 通过 |
| 插件 0.5.188 ZIP | 20 个文件与当前发布源码集合及字节全等,清单 SHA-256 核验通过 |
| 旧插件 0.5.187 | 归档前 20 个文件与旧源码全等,归档保留旧清单对应原始字节 |
完整检查使用当前源码与交付物的临时快照:排除既有未跟踪 `.idea/`、秘密配置及可重建输出,依赖沿用工作区 node_modules;未读取或复制 `.env`。原工作区 `.idea/` 保持原样。首次 legacy 执行发现两项旧版本正则断言及两项沙箱禁止回环端口监听;同步版本断言后,在允许本机模拟 HTTP 服务的执行环境中完整重跑通过。未跳过失败测试。
合成测试运行真实插件公共预检入口,ERP 查询与原生联动由合成表单/响应提供,保存请求被插件预检拦截,无真实 ERP 请求或写入。用户故障日志的候选名称已经脱敏,因此本次只证明格式兼容修复与边界,不声称已取得线上原始产品名的字符级根因证据。
交付为插件/平台最低版本 0.5.188、Program v1.0.14。部署、服务重启、插件重载与真实 ERP 验收均未执行。
+5
View File
@@ -0,0 +1,5 @@
# 2026-09-19 发布归档
此目录仅供历史追溯,不是当前业务规则或发布入口。
- [产品名称匹配修复前的插件 0.5.187](product-name-normalization-01a0b77e/README.md)
@@ -0,0 +1,3 @@
# 产品名称匹配修复前的交付物
此目录为只读历史,不定义当前业务规则。保留插件 0.5.187 的原始发布 ZIP 和发布前清单;ZIP 已按旧清单 SHA-256 核验,归档前 20 个文件逐字节等于当时源码。清单中的其他交付物未由本次替换,因此不重复归档。当前交付物以项目 dist/release-manifest.json 为准。
@@ -0,0 +1,69 @@
{
"manifest_version": 1,
"generated_on": "2026-09-17",
"baselines": {
"chrome_extension": "0.5.187",
"skills": "0.5.129",
"business_instruction_docx": "0.5.136",
"agent_prompt": "ltjt-agent-prompt-v1.8-independent-headcount-categories"
},
"artifacts": [
{
"kind": "chrome_extension",
"version": "0.5.187",
"path": "dist/ltjt-order-assistant-0.5.187.zip",
"source": "chrome-extension/ltjt-order-assistant",
"sha256": "a7c60c730921430260ee47a9f704f634ebf1aac25a8a44e1ae868b262f1aa2ee"
},
{
"kind": "skill",
"name": "lwlt-arrangement",
"version": "0.5.129",
"path": "dist/lwlt-arrangement-0.5.129.skill",
"source": "agent设计规范/skills/lwlt-arrangement",
"sha256": "ae3fc66965d2a7968aeaa2ecf371d75e5365ef4cc4dfd8ef080f9343e0d0f09c"
},
{
"kind": "skill",
"name": "lwlt-confirmation",
"version": "0.5.129",
"path": "dist/lwlt-confirmation-0.5.129.skill",
"source": "agent设计规范/skills/lwlt-confirmation",
"sha256": "c2f3689d8a0b4d6b250bb2cfce572fe3a9fca3f5519ea5fae5ef0d382b44dae4"
},
{
"kind": "skill",
"name": "lwlt-lifecycle",
"version": "0.5.129",
"path": "dist/lwlt-lifecycle-0.5.129.skill",
"source": "agent设计规范/skills/lwlt-lifecycle",
"sha256": "fcf23bb0e12e7026f03dc3670fe35db77c740a9902a7a415e2efa464d4eceb1e"
},
{
"kind": "skill",
"name": "lwlt-newbooking",
"version": "0.5.129",
"path": "dist/lwlt-newbooking-0.5.129.skill",
"source": "agent设计规范/skills/lwlt-newbooking",
"sha256": "b64593d88145966cd4e702d2532ffe3ea85052e8d56fbe75d503a19ababa1715"
},
{
"kind": "skill",
"name": "lwlt-updating",
"version": "0.5.129",
"path": "dist/lwlt-updating-0.5.129.skill",
"source": "agent设计规范/skills/lwlt-updating",
"sha256": "c57e137c358fb6332af488d5985e52e88e5cf7439fa069a34edfdcb0d0b47336"
},
{
"kind": "business_instruction_docx",
"version": "0.5.136",
"path": "dist/老挝联泰AI指令表-0.5.136.docx",
"source": "agent设计规范/templates/business-input-templates.md",
"builder": "tools/build_business_instruction_docx.py",
"sha256": "e6a669ef6f9a5b2acb00fba20988869d2c7da2663bb24527cc813853470a622f",
"source_sha256": "ecd51e09b75f56f64773b43a9305fb0ad62fbb3c8d2a0f1ec289eea3d074bdb5",
"builder_sha256": "c162884210da22e3b78368749b66f1f177df5e9fc6155f4fd9954bd516d187f1"
}
]
}