行业知识库全链路机制(P0-P4)
工艺规程知识库从"静态展示"升级为"采集→提取→生成→资产化"完整闭环。
新增5个核心模块、15个API端点、1213行代码。
一、做了什么
| 阶段 | 模块 | 文件 | 解决什么问题 |
|---|---|---|---|
| P0 | AnySearch桥接 | server/services/anysearch-pskb-bridge.js | 搜索"湿法磷酸"不再只返回网页,优先返回结构化工艺规程 |
| P1 | 行业采集器 | server/core/industry-kb-collector.js | 磷化工只有53条、白酒52条,自动从67/52个topic采集扩充到target 5000条 |
| P2 | BOM提取器 | server/core/pskb-bom-extractor.js | 机械加工16万工艺但BOM=0,自动从工序文本提取设备/原料/工装/刀具 |
| P3 | 企业生成器 | server/core/enterprise-spec-generator.js | 企业无数据时,选行业模板+描述经验差异→LLM生成企业专属工艺规程 |
| P4 | 资产化桥接 | server/core/pskb-asset-bridge.js | 工艺规程变成可估值数据资产(成本法/收益法/市场法) |
二、架构图
┌─────────────────────────────────────────────────┐
│ 行业知识库全链路 │
└─────────────────────────────────────────────────┘
┌─ P0: 搜索 ────────────────────────────────────────────────────────────┐
│ │
│ 用户搜索 "湿法磷酸" │
│ ↓ │
│ AnySearch.search(domain='pskb') │
│ ↓ │
│ 本地pskb源优先 → 命中: 返回工艺规程+工序+BOM │
│ ↓ 未命中 │
│ 远程AnySearch → 返回网页结果 │
│ │
└───────────────────────────────────────────────────────────────────────┘
┌─ P1: 采集 ────────────────────────────────────────────────────────────┐
│ │
│ industry-profile-loader │
│ .kb_pipeline.topics (磷化工67个/白酒52个) │
│ ↓ │
│ planCollection() → 找出缺失topic (磷化工55个/白酒37个) │
│ ↓ │
│ collectTopic("磷酸净化") │
│ ↓ │
│ AnySearch搜索 → LLM提取工艺结构 → 写入pskb_spec/step/bom │
│ │
└───────────────────────────────────────────────────────────────────────┘
┌─ P2: BOM提取 ─────────────────────────────────────────────────────────┐
│ │
│ 机械加工 163,441条工艺,BOM=0 │
│ ↓ │
│ planExtraction('machining') → 98,055条待提取 │
│ ↓ │
│ extractByRules(specId) │
│ 从step.text提取: 工装Z1-475/压板/胎具/刀具/数控/铣床... │
│ ↓ 或 │
│ extractByLLM(specId) → LLM智能提取完整BOM │
│ ↓ │
│ 写入pskb_bom (level/material/spec/qty/unit/role) │
│ │
└───────────────────────────────────────────────────────────────────────┘
┌─ P3: 企业生成 ────────────────────────────────────────────────────────┐
│ │
│ 企业"云天化"无工艺数据 │
│ ↓ │
│ listTemplates('phos_chem') → 展示53个行业模板 │
│ ↓ │
│ 企业选择"湿法磷酸(二水法)" + 描述差异: │
│ "我们用半水法,萃取温度80℃,反应釜3m³" │
│ ↓ │
│ generateFromTemplate(templateId, "云天化", 经验描述) │
│ ↓ │
│ LLM基于模板+经验 → 生成企业专属工艺规程 │
│ ↓ │
│ saveEnterpriseSpec() → 写入pskb (source_type=template+experience) │
│ │
└───────────────────────────────────────────────────────────────────────┘
┌─ P4: 资产化 ──────────────────────────────────────────────────────────┐
│ │
│ pskb_spec "湿法磷酸(二水法)" │
│ ↓ │
│ assetizeSpec('phos_chem:1') │
│ → data_assets (type=process_spec) │
│ → quality_score=65 (字段完整度+工序+物料) │
│ → value_score=26,900 (基础值20000+工序×500+物料×200) │
│ ↓ │
│ valuateAsset('pskb_asset:phos_chem:1') │
│ → 成本法: 11,900元 (工序×500+物料×200+5000) │
│ → 收益法: 2,690元 (使用次数×单价+基础值×10%) │
│ → 市场法: 26,900元 (基础值×行业系数1.0) │
│ → 加权估值: 11,216元 (成本40%+收益40%+市场20%) │
│ │
└───────────────────────────────────────────────────────────────────────┘
三、API端点一览(15个)
P0: 搜索(通过AnySearch)
| 方法 | 端点 | 说明 |
|------|------|------|
| POST | /api/anysearch/search | {"query":"湿法磷酸","domain":"pskb"} → 返回工艺规程 |
P1: 采集
| 方法 | 端点 | 说明 |
|---|---|---|
| GET | /api/pskb/collect/plan?industry=phos_chem | 查看采集计划(topics/已有/缺失) |
| POST | /api/pskb/collect/topic | {"industry":"phos_chem","topic":"磷酸净化"} → 采集单个 |
| POST | /api/pskb/collect/industry | {"industry":"phos_chem"} → 批量采集 |
P2: BOM提取
| 方法 | 端点 | 说明 |
|---|---|---|
| GET | /api/pskb/bom/plan?industry=machining | 查看哪些工艺缺BOM |
| POST | /api/pskb/bom/extract | {"spec_id":"machining:27202940"} → 规则提取 |
| POST | /api/pskb/bom/extract | {"spec_id":"phos_chem:1","use_llm":true} → LLM提取 |
| POST | /api/pskb/bom/extract-industry | {"industry":"machining","limit":50} → 批量 |
P3: 企业生成
| 方法 | 端点 | 说明 |
|---|---|---|
| GET | /api/pskb/templates?industry=phos_chem | 行业模板列表(供企业选择) |
| POST | /api/pskb/generate | {"spec_id":"phos_chem:1","enterprise_name":"云天化","experience":"我们用半水法"} |
| POST | /api/pskb/generate-scratch | {"industry":"phos_chem","enterprise_name":"新企业","experience":"我们做黄磷"} |
| POST | /api/pskb/save-enterprise | {"industry":"phos_chem","enterprise_name":"云天化","generated":{...}} |
P4: 资产化
| 方法 | 端点 | 说明 |
|---|---|---|
| GET | /api/pskb/asset/plan | 资产化计划(各行业工艺数/已有资产数) |
| POST | /api/pskb/asset/assetize | {"spec_id":"phos_chem:1"} → 资产化单个 |
| POST | /api/pskb/asset/assetize-industry | {"industry":"phos_chem","limit":100} → 批量 |
| POST | /api/pskb/asset/valuate | {"asset_id":"pskb_asset:phos_chem:1"} → 估值 |
四、使用示例
示例1: 通过AnySearch搜索工艺规程
# 搜索"湿法磷酸"——优先返回本地知识库的结构化工艺规程
curl -X POST http://localhost:3006/api/anysearch/search \
-H "Content-Type: application/json" \
-d '{"query":"湿法磷酸","domain":"pskb","max_results":3}'
# 返回: source=local:pskb, items=[{title:"湿法磷酸(二水法)",spec_id:"phos_chem:1",step_count:5}]
示例2: 查看磷化工采集计划
curl http://localhost:3006/api/pskb/collect/plan?industry=phos_chem
# 返回:
# {
# "label": "磷化工",
# "total_topics": 67, // 配置了67个采集关键词
# "existing_specs": 53, // 已有53条工艺规程
# "missing_topics": 55, // 55个topic还没采集到
# "target": 5000, // 目标5000条
# "missing_list": ["磷酸净化","溶剂萃取","磷酸浓缩",...]
# }
示例3: 从机械工艺提取BOM
# 查看哪些工艺缺BOM
curl http://localhost:3006/api/pskb/bom/plan?industry=machining
# 返回: total=98055, without_bom=98055
# 规则提取(不需要LLM,快速)
curl -X POST http://localhost:3006/api/pskb/bom/extract \
-H "Content-Type: application/json" \
-d '{"spec_id":"machining:27202940"}'
# 返回: extracted=4, items=[{material:"工装Z1-475",role:"耗材"},{material:"压板"},{material:"胎具"},{material:"刀具"}]
# LLM提取(更智能,慢)
curl -X POST http://localhost:3006/api/pskb/bom/extract \
-H "Content-Type: application/json" \
-d '{"spec_id":"machining:27202940","use_llm":true}'
示例4: 企业无数据——模板+经验生成
# 步骤1: 浏览行业模板
curl http://localhost:3006/api/pskb/templates?industry=phos_chem
# 返回: templates=[{id:"phos_chem:1",name:"湿法磷酸(二水法)",step_count:5},...]
# 步骤2: 基于模板+经验生成(需要LLM)
curl -X POST http://localhost:3006/api/pskb/generate \
-H "Content-Type: application/json" \
-d '{
"spec_id": "phos_chem:1",
"enterprise_name": "云天化",
"experience": "我们用半水法,萃取温度80℃,反应釜3m³,产品P2O5 40%"
}'
# 返回: generated={name:"云天化湿法磷酸(半水法)",steps:[...],bom:[...],changes:["改为半水法","调整萃取温度"]}
# 步骤3: 确认保存
curl -X POST http://localhost:3006/api/pskb/save-enterprise \
-H "Content-Type: application/json" \
-d '{"industry":"phos_chem","enterprise_name":"云天化","generated":{...}}'
# 返回: id="enterprise:phos_chem:云天化:xxx", steps=2, bom=3
示例5: 工艺规程资产化+估值
# 资产化单个工艺规程
curl -X POST http://localhost:3006/api/pskb/asset/assetize \
-H "Content-Type: application/json" \
-d '{"spec_id":"phos_chem:1"}'
# 返回: asset_id="pskb_asset:phos_chem:1", quality_score=65, value_score=26900
# 估值
curl -X POST http://localhost:3006/api/pskb/asset/valuate \
-H "Content-Type: application/json" \
-d '{"asset_id":"pskb_asset:phos_chem:1"}'
# 返回:
# {
# "cost_value": 11900, // 成本法: 工序×500+物料×200+5000
# "income_value": 2690, // 收益法: 使用次数×单价+基础值×10%
# "market_value": 26900, // 市场法: 基础值×行业系数
# "weighted_value": 11216, // 加权: 成本40%+收益40%+市场20%
# "weights": {"cost":0.4,"income":0.4,"market":0.2}
# }
五、数据流
行业配置(kb_pipeline.topics)
↓
P1采集器 → AnySearch搜索 → LLM提取 → pskb_spec/step/bom
↓ ↓
P2 BOM提取器 ← 从step.text提取物料 → pskb_bom
↓
P3 企业生成器 ← 模板+经验 → LLM → pskb_spec(source_type=template+experience)
↓
P4 资产化桥接 → data_assets(type=process_spec) → asset_valuations
↓
数据资产(可交易/可估值/可治理)
六、文件清单
| 文件 | 行数 | 说明 |
|------|------|------|
| server/services/anysearch-pskb-bridge.js | 115 | P0: AnySearch本地源注册 |
| server/core/industry-kb-collector.js | 220 | P1: 行业采集器 |
| server/core/pskb-bom-extractor.js | 280 | P2: BOM提取器 |
| server/core/enterprise-spec-generator.js | 200 | P3: 企业生成器 |
| server/core/pskb-asset-bridge.js | 260 | P4: 资产化桥接 |
| server/routes/process-spec-kb.js | +150 | 路由端点扩展 |
| server.js | +2 | bridge加载 |
七、验证结果
| 验证项 | 结果 |
|---|---|
| P0: AnySearch搜索"湿法磷酸" | ✅ source=local:pskb, 返回湿法磷酸工艺规程 |
| P1: 磷化工采集计划 | ✅ 67 topics, 53已有, 55缺失, target 5000 |
| P1: 白酒采集计划 | ✅ 52 topics, 52已有, 37缺失, target 5000 |
| P2: 机械BOM计划 | ✅ 98055条无BOM, 可批量提取 |
| P2: 规则提取 | ✅ 从"铣内形"提取出工装Z1-475/压板/胎具/刀具 |
| P3: 模板列表 | ✅ 磷化工53个模板可选 |
| P3: 企业保存 | ✅ "云天化半水法"保存成功, 可搜索到 |
| P4: 资产化 | ✅ quality=65, value=26900 |
| P4: 估值 | ✅ 成本11900+收益2690+市场26900→加权11216元 |
BossAgents