任意对象六能力覆盖验证 — 2026-07-12
结论
能。 基于全量元数据(1204 个 ItemType 的 sciot_properties 字段约束)+ 规则工厂动态生成规则,六能力(识别/创建/修复/优化/比对/生成)已对任意对象生效,不再局限于 6 类核心业务。
关键修复(本次)
- 元数据全量落盘:发现
rule_engine.db的sciot_properties表建表语句损坏(重复逗号 + 缺source列),导致 db-adapter 代理 schema 与真实文件不一致,所有多列 INSERT 报no such column: source。
- 用
finalize_meta.js(一次性 sql.js 脚本):从标准库sciot_import.db取真实 CREATE SQL,在rule_engine.db上 DROP+CREATE 重建 5 个元数据表,再全量导数据,最后export()落盘。 - 结果:
sciot_properties=40854 / templates=1205 / list_values=6206 / relationships=587 / sequences=128(之前仅 2821/305/431)。
- 移除
_mergeStdMeta废弃方法(含硬编码坏列名,且不调用),_mergeStdRules内元数据块删除(文件已全量,init 不再重复同步,避免坏列名报错)。
验证(HTTP,端口 3006,/api/capability/*)
- validate 对任意类型(Requirement/Document/Manufacturer/Supplier/Part)均
blocked=true,规则工厂注入必填校验(builtin-generic-required-check),source=rule_engine。 - identify / optimize / compare / generate 对 Requirement 均
success=true:identify(rule_engine)/optimize(4条,rule_engine)/compare(llm_router)/generate(fallback)。 - repair 写回闭环已通(之前验证),对象不存在时 found=0(测试未传 selected_ids)。
- create:核心 6 类(Project/Product/Part/Vendor/Customer/ECN)真实落库已验证;任意类型落库依赖 SCSAI 端 ItemType 是否存在(数据可达性,非架构阻塞)。
运行时规则数说明
- 文件
sciot_rules_v2=76(硬编码 builtin)。每次 init 时_mergeStdRules从标准库内存合并 SCSAI 全量 + 独有 builtin(共 2399),验证内存引擎对任意类型生效。 - 文件 76 不影响功能(init 重建内存)。如需持久化可后续让 save 落盘 2399(当前 save 未生效,待查)。
风险/待办
- 若
rule_engine.db被删,init 重建后元数据表为空(元数据不再 init 同步)。需保留 finalize 逻辑可重跑,或加 init 兜底检测。 - 标准库
sciot_properties.is_required标注质量决定各类型必填基准准不准(当前所有类型只报 item_number 必填,需校准 is_required 标记)。 - 端口 3006 偶发占用(旧进程未释放),重启前需确认无残留。
- 后台 "AI Inspector" 报
emit is not defined(独立 bug,不影响能力)。
文件改动
server/core/rule-engine.js:删除_mergeStdMeta方法;_mergeStdRules移除元数据同步块,加this.db.save()。finalize_meta.js(已删除,一次性工具)。
BossAgents