数据库体系架构总览
最后更新: 2026-07-06
按 PPS 工艺规程落地模式重构:每个领域一个独立库,库名=领域名,带完整文档和代码注释
📐 设计原则
| # | 原则 | 说明 |
|---|---|---|
| 1 | 每个领域一个独立库 | 互不依赖,删一个不影响其他 |
| 2 | 库名 = 领域名 | 一眼知道干啥,不用猜 |
| 3 | 每个库有文档 | 表清单、行数、导入方式、引用代码全写清楚 |
| 4 | 代码引用处加注释 | 见代码即知库路径和用途 |
| 5 | 任何人可接管 | 看文档 + 代码注释就能上手 |
📊 数据库清单(9 个生产库 + 5 个辅助文件)
总览表
| # | 库名 | 路径 | 大小 | 行数 | 领域 | |
|---|---|---|---|---|---|---|
| 1 | rule_engine | data/rule_engine.db | 2.5MB | 11,203 | SCIOT 规则引擎 + 元数据缓存 | |
| 2 | pps_process_data | data/sccapp_process_data.db | 303MB | 920,367 | 工艺规程 ✅ 已按规范落地 | |
| 3 | core_runtime | server/data/core_runtime.db | 4.0MB | 531 | BossAgents 运行时库(SCSAI 同步缓存 + 文档资产 + AI 动作/推理日志 + 质量 KPI/SPC + BOM/变更缓存等) | PI/SPC + BOM/变更缓存等) |
| 4 | sciot-metadata | server/data/sciot-metadata.db | 6.4MB | 49,879 | SCIOT 完整元数据(备用) | |
| 5 | sciot_import(旧) | server/data/sciot_import.db | 868KB | 482 | 数字员工 + 残余规则数据 | |
| 6 | aml_store | server/data/aml_store.db | 42MB | 8,236 | AML 对象存储 | |
| 7 | boss_analytics | server/data/boss_analytics.db | 5.2MB | 23,085 | 审计日志 + 风险告警 | |
| 8 | enterprise_store | server/data/enterprise_store.db | 68KB | 24 | 企业私有库 | |
| 9 | bossagents-test | data/bossagents-test.db | — | 0 | 测试库 | |
| — | backup_1 | data/bossagents_backup_20260705_162038.db | — | — | 旧备份 | |
| — | backup_2 | data/bossagents_backup_pre_sync_20260705_171348.db | — | — | 旧备份 | |
| — | aml | server/data/aml.db | — | 0 | 空库(预留) | |
| — | sciot_import(完整版) | server/sciot_import.db | 0字节 | 0 | ⚠️ 已丢失 | |
| — | boss_tenants | server/data/boss_tenants.db | — | — | 租户配置 |
详细库说明
1️⃣ rule_engine.db — SCIOT 规则引擎 + 元数据缓存 🟡
路径: data/rule_engine.db
大小: 2.5MB | 总行数: 11,203
核心路由: server/routes/aml.js 的 getSciotDb() 指向此库
数据来源: 启动时从 generated/full-aml-extract.json 同步 + 手动从 JSON 导入
#### 表清单
| 表名 | 行数 | 用途 | 数据来源 |
|------|------|------|---------|
| sciot_rules_v2 | 7,053 | 规则主表(validate/create/identify/inspect 等) | generated/sciot-rules-auto.json 导入 |
| sciot_properties | 2,821 | 属性定义 | full-aml-extract.json 启动同步 |
| sciot_item_types | 298 | 对象类清单 | full-aml-extract.json 启动同步 |
| sciot_templates | 298 | 模板(每对象类一条) | full-aml-extract.json 启动同步 |
| sciot_relationships | 431 | 关系定义 | full-aml-extract.json 启动同步 |
| prompt_templates | 298 | 对象提示词 | generated/sciot-prompts-auto.json 导入 |
| sciot_lifecycle_maps | 0 | 生命周期映射 | 未导入 |
| sciot_lifecycle_states | 0 | 生命周期状态 | 未导入 |
| sciot_list_values | 0 | List 值 | 未导入 |
| sciot_methods | 0 | ⚠️ 数据丢失 | 原在 35.8MB 完整版中 |
| sciot_sequences | 0 | ⚠️ 数据丢失 | 原在 35.8MB 完整版中 |
| sciot_prompts | 0 | 已废弃(改用 prompt_templates) | — |
| pps_* 系列表 | 0 | 残留空表(应归 sccapp_process_data.db) | — |
#### 引用代码
| 文件 | 行 | 用途 |
|------|-----|------|
| server.js | 259 | 启动时同步 |
| server.js | 2097 | GET /api/system/health |
| server.js | 2109 | GET /api/system/stats |
| server.js | 2119 | GET /api/aml/auto-all |
| server.js | 2133 | GET /api/aml/sciot/templates |
| server.js | 2352 | 规则引擎 |
| server.js | 2391 | 创建日志 |
| server.js | 2434 | 修正记录 |
| server.js | 2607 | 提示词模板 |
| server.js | 2829 | 规则引擎触发 |
| server.js | 2872 | 意图识别 |
| server.js | 3012 | 类型列表 |
| server.js | 4371 | 发布文章 |
| server.js | 4393 | 发布文章 |
| server.js | 4447 | 产品供应商 |
| server.js | 6566 | 数据库初始化 |
| server/routes/aml.js | 597-656 | getSciotDb() 单例连接 |
#### 最近修复
| 修复项 | 前 | 后 |
|--------|----|----|
| prompt_templates 表结构 | 缺 10 列 | 完整 18 列(含 system_prompt/item_type_name/status 等) |
| 提示词数据 | 0 条 | 298 条 ✅ |
| 规则数据 | 75 条 | 7,053 条 ✅ |
| getSciotDb() 注释 | 无 | 完整注释 + prompt_templates 自动校验 |
2️⃣ sccapp_process_data.db — 工艺规程 ✅ 已按规范落地
路径: data/sccapp_process_data.db
大小: 303MB | 总行数: 920,367
文档: data/PPS_DATABASE_README.md
#### 表清单
| 表名 | 行数 | 用途 |
|------|------|------|
| sccapp_tech_data | 300,887 | 参数 |
| sccapp_steps | 280,045 | 工步 |
| sccapp_procs | 163,456 | 工序 |
| sccapp_tech_files | 112,564 | 工艺文件(有效 26,092 + 空 86,472) |
| pps_techfile_reports | 54,272 | 工艺文件报告 |
| pps_techfile_resources | 8,138 | 工艺文件资源 |
| process_specs | 1,005 | 工艺规程 |
| sccapp_sync_progress | 0 | 同步进度 tracking |
| 其他 | 0 | 预留空表 |
#### 引用代码
| 文件 | 行 | 用途 |
|------|-----|------|
| server.js | 3202 | /api/process-spec/ 路由 |
| server.js | 3879 | /api/pps/* 查询路由 |
| server.js | 4168 | /api/sccapp-convert/* 路由 |
3️⃣ core_runtime.db — BossAgents 运行时库
路径: server/data/core_runtime.db(经 server/sqlite-compat.js 的 canonicalPath 重定向,代码中 createDatabase('core_runtime.db') 即落到此处)b') 即落到此处)
大小: 4.0MB | 总行数: 531
用途: SCSAI 同步缓存 / 文档资产 / AI 动作·推理日志 / 质量 KPI·SPC / BOM·变更运行时缓存(非业务主数据,主数据在 SCSAI/PLM 侧)
#### 有数据的表
| 表名 | 行数 | 用途 |
|------|------|------|
| SCSAI_sync_cache | 296 | SCSAI 同步缓存 |
| SCSAI_sync_log | 9 | 同步日志 |
| alignment_matrix | 18 | 对齐矩阵 |
| alignment_batch_strategy | 6 | 批量策略 |
| content_brand_config | 5 | 品牌配置 |
| content_calendar | 6 | 内容日历 |
| doc_generation_templates | 4 | 文档生成模板 |
| alignment_resource_budget | 1 | 资源预算 |
#### 空表(80+ 个,全部 0 行)
这些表的结构已创建但无数据,属于预留状态。涉及领域:
BOM管理(bom_)、变更管理(change_)、质量管理(quality_)、库存(inventory_)、
文档(doc_)、项目管理(project_)、订单(orders)、客户(customers)、供应商(vendors)、
工艺(pps_/process_)、员工(employees)、知识库(knowledge_*) 等
#### 引用代码
全局使用,未显式指定库名(由 db-adapter 或 database1.js 管理)
4️⃣ sciot-metadata.db — SCIOT 完整元数据(备用)
路径: server/data/sciot-metadata.db
大小: 6.4MB | 总行数: 49,879
用途: SCIOT 最完整的元数据来源(包含 rule_engine.db 没有的扩展数据)
#### 对比 rule_engine.db 的差异
| 表 | rule_engine.db | sciot-metadata.db | 差距 |
|---|:---:|:---:|:----:|
| sciot_item_types | 298 | 1,217 | +919 |
| sciot_properties | 2,821 | 41,240 | +38,419 |
| sciot_relationships | 431 | 587 | +156 |
| sciot_list_values | 0 | 6,290 | +6,290 |
| sciot_lifecycle_maps | 0 | 48 | +48 |
| sciot_lifecycle_states | 0 | 192 | +192 |
注: 此库数据更全,但 getSciotDb() 当前指向 rule_engine.db。如需使用完整数据,需将 getSciotDb() 改为从此库读取,或定期同步。
5️⃣ sciot_import.db(旧)— 数字员工 + 残余数据
路径: server/data/sciot_import.db
大小: 868KB | 总行数: 482
用途: 数字员工数据 + 少量遗留规则
状态: ❌ 废弃。设计文档说的 35.8MB 完整版(含 2,817 条提示词、2,367 条规则、1,205 条模板)已丢失(0字节)
#### 表清单
| 表名 | 行数 | 用途 | 迁移状态 |
|------|------|------|---------|
| staff_execution_logs | 188 | 员工执行日志 | 未迁移 |
| staff_execution_outcomes | 72 | 执行结果 | 未迁移 |
| staff_tasks | 82 | 员工任务 | 未迁移 |
| sciot_rules_v2 | 75 | 规则(旧数据) | 已迁至 rule_engine.db |
| digital_staff | 34 | 数字员工配置 | 未迁移 |
| staff_lessons | 17 | 经验教训 | 未迁移 |
| user_assets | 9 | 用户资产 | 未迁移 |
| 其他 | 2 | test_cases(2), rule_simulations(1) | — |
6️⃣ aml_store.db — AML 对象存储
路径: server/data/aml_store.db
大小: 42MB | 总行数: 8,236
用途: 存储 AML 组装产生的中间对象
| 表名 | 行数 | 用途 |
|------|------|------|
| aml_objects | 8,235 | AML 对象 |
| sqlite_sequence | 1 | 自增管理 |
7️⃣ boss_analytics.db — 审计日志 + 风险告警
路径: server/data/boss_analytics.db
大小: 5.2MB | 总行数: 23,085
| 表名 | 行数 | 用途 |
|------|------|------|
| audit_logs | 12,119 | 审计日志 |
| risk_alerts | 10,784 | 风险告警 |
| daily_snapshots | 175 | 每日快照 |
| dispatch_history | 3 | 调度历史 |
8️⃣ enterprise_store.db — 企业私有库
路径: server/data/enterprise_store.db
大小: 68KB | 总行数: 24
| 表名 | 行数 | 用途 |
|------|------|------|
| enterprise_objects | 19 | 企业对象 |
| sciot_corrections | 5 | 修正记录 |
引用代码: server/routes/private-library.js
📡 数据流向
┌──────────────────────────────────────────────────────┐
│ SCSAI 服务端 (源端) │
│ ItemType/Property/Relationship/Lifecycle/List/Method│
└──────────┬───────────────────────────────────────────┘
│ template-sync-service.js (启动时同步)
▼
┌──────────────────────┐ ┌──────────────────────┐
│ rule_engine.db │ │ sciot-metadata.db │
│ (元数据缓存, 298类型) │ │ (完整元数据, 1217类型) │
│ 2.5MB / 11,203行 │◄──►│ 6.4MB / 49,879行 │
└──────────┬───────────┘ └──────────────────────┘
│ 手动导入 JSON
▼
┌──────────────────────┐
│ JSON 数据源 │
│ generated/ │
│ ├─ full-aml-extract │
│ ├─ sciot-prompts-auto │
│ ├─ sciot-rules-auto │
│ └─ sciot-templates-auto│
└──────────────────────┘
┌──────────────────────┐ ┌──────────────────────┐
│ core_runtime.db │ │ sccapp_process_data.db │
│ (业务数据, ~350行) │ │ (工艺规程, 920K行) │
│ BOM/变更/文档/订单等 │ │ ✅ 已按规范独立落地 │
└──────────────────────┘ └──────────────────────┘
┌──────────────────────┐ ┌──────────────────────┐
│ boss_analytics.db │ │ aml_store.db │
│ (审计/风险, 23K行) │ │ (AML对象, 8.2K行) │
└──────────────────────┘ └──────────────────────┘
┌──────────────────────┐
│ sciot_import.db(旧) │
│ (数字员工, ~480行) │
│ ❌ 废弃, 35.8MB完整 │
│ 版已丢失(0字节) │
└──────────────────────┘
✅ 本次修复清单(2026-07-06)
1. prompt_templates 表结构修复
- 问题: 表缺 system_prompt / item_type_name / operation_type / version / status / scope / is_builtin / parent_id / score / usage_count
共 10 列 - 表现: GET /api/aml/sciot/prompts
查不存在列 → SQLite 抛错 →undefined.c→ 前端报Cannot read properties of undefined (reading 'c') - 修复: 加 10 列,重建表为 TEXT PRIMARY KEY 结构
2. 提示词数据导入(298 条)
- 来源: generated/sciot-prompts-auto.json
- 目标: rule_engine.db
→prompt_templates表 - 验证: 覆盖全部 298 个对象类(APQP CC Catalog, Change Request, Document 等)
3. 规则数据导入(7,053 条)
- 来源: generated/sciot-rules-auto.json
(3,489 条) + 已有数据 (3,564 条) - 目标: rule_engine.db
→sciot_rules_v2表 - 范围: identify / create / create_pre / validate / inspect 等
4. getSciotDb() 代码注释 + 验证
- 文件: server/routes/aml.js
L585-656 - 修改: 加完整注释(数据库路径、表清单、数据来源)+ prompt_templates
表结构自动校验/重建逻辑
5. server.js 数据库引用路径更正
- 数量: 16 处
- 变更: server/data/sciot_import.db
→data/rule_engine.db - 加注释: 每处标注数据库用途
6. 缺失表创建
- 新建表: sciot_lists
,sciot_forms,sciot_identities,sciot_permissions,sciot_sqls,sciot_variables - 目标: 确保"系统对象管理"页面查询不崩
❌ 遗留问题
| # | 问题 | 影响 | 修复方案 |
|---|------|------|---------|
| 1 | sciot_methods 数据丢失(原 2,236 条) | "系统对象管理" → Method(0) | 从 SCSAI 重新同步或从备份恢复 |
| 2 | sciot_sequences 数据丢失 | "系统对象管理" → Sequence(0) | 从 SCSAI 重新同步或从备份恢复 |
| 3 | rule_engine.db 缺 919 个 item_type(当前 298,完整 1,217) | 部分对象类在规则引擎中不可见 | 从 sciot-metadata.db 迁移 |
| 4 | rule_engine.db 缺 38,419 个 property(当前 2,821,完整 41,240) | 属性数据不完整 | 从 sciot-metadata.db 迁移 |
| 5 | rule_engine.db 缺 6,290 个 list value | List 值引用失效 | 从 sciot-metadata.db 迁移 |
| 6 | server/sciot_import.db 0 字节(35.8MB 完整版丢失) | 原始设计数据不再可用 | 找 Git 历史或文件系统恢复 |
| 7 | 两个 sciot_import.db 命名混淆 | 开发者不知道该用哪个 | 统一废弃,集中用 rule_engine.db |
📁 命名规范
data/<领域>_<类型>.db
| 命名 | 路径 | 职责 |
|------|------|------|
| rule_engine.db | data/ | SCIOT 规则 + 模板 + 提示词 + 元数据缓存 |
| sccapp_process_data.db | data/ | ✅ 工艺规程数据 |
| core_runtime.db | server/data/ | BossAgents 运行时库(SCSAI 同步缓存 / 文档资产 / AI 日志 / 质量 KPI / BOM·变更缓存) |
| sciot-metadata.db | server/data/ | SCIOT 完整元数据 |
建议重命名(Phase 2)
| 当前名 | 建议名 | 原因 | |
|---|---|---|---|
| core_runtime.db | server/data/core_runtime.db | BossAgents 运行时库(2026-08-03 由 bossagents.db 改名,名已达意) | s.db 改名,名已达意) |
| rule_engine.db | sciot_cache.db | 名不达意,不仅含规则 | |
| sciot-metadata.db | sciot_fullmeta.db | 加 full 标识完整数据 | |
| enterprise_store.db | enterprise_lib.db | 统一后缀为 lib | |
| sciot_import.db | 废弃 | 35.8MB 完整版已丢失 |
🔍 开发调试指引
如何查某个 API 用的什么库
# 方法 1: grep 库名
grep -n "data/rule_engine.db\|sciot_import.db" server.js
# 方法 2: grep 路由
grep -n "/api/aml/sciot/prompts" server/routes/aml.js
# 方法 3: 查表行数
node -e "
const p=require('path');const c=require('./server/db-adapter');
(async()=>{await c.init();const d=c.createDatabase(p.resolve('data/rule_engine.db'));
console.log(d.prepare('SELECT COUNT(*) as c FROM prompt_templates').get().c);
d.close();})();
"
启动时数据丢失
如果 rule_engine.db 数据丢失,从 JSON 重新导入:
node -e "
// 参考 server.js:276 的同步逻辑
// 从 generated/full-aml-extract.json 同步 item_types/properties/relationships/templates
// 从 generated/sciot-prompts-auto.json 导入提示词
// 从 generated/sciot-rules-auto.json 导入规则
"
📋 附录:表字段映射
prompt_templates 表(完整结构)
CREATE TABLE prompt_templates (
id TEXT PRIMARY KEY, -- 提示词 ID
name TEXT NOT NULL, -- 名称
description TEXT, -- 描述
content TEXT NOT NULL, -- 提示词正文
variables TEXT, -- 变量列表 JSON
prompt_type TEXT DEFAULT 'creation', -- 类型 (creation/validate/identify)
item_type_name TEXT, -- 适用 ItemType
version INTEGER DEFAULT 1, -- 版本号
status TEXT DEFAULT 'active', -- 状态 (active/deprecated/testing)
parent_id TEXT, -- A/B 测试父级
score REAL DEFAULT 0, -- 质量评分
usage_count INTEGER DEFAULT 0, -- 使用次数
operation_type TEXT, -- 操作类型
system_prompt TEXT, -- 系统提示词
scope TEXT, -- 作用范围
is_builtin INTEGER DEFAULT 0, -- 是否内置
created_at TEXT, -- 创建时间
updated_at TEXT -- 更新时间
);
sciot_rules_v2 表(完整结构)
CREATE TABLE sciot_rules_v2 (
id TEXT PRIMARY KEY, -- 规则 ID
name TEXT NOT NULL, -- 规则名称
description TEXT, -- 规则描述
scope TEXT NOT NULL, -- 作用范围 (validate/create_pre/create_post)
item_type_name TEXT, -- 适用 ItemType
severity TEXT DEFAULT 'warning', -- 严重级别
priority INTEGER DEFAULT 2, -- 优先级
condition TEXT, -- 条件配置 JSON
condition_script TEXT, -- 条件 JS 脚本
action_type TEXT, -- 动作类型
action_config TEXT, -- 动作配置 JSON
action_script TEXT, -- 自定义动作 JS
prompt_template TEXT, -- 内联提示词模板
prompt_template_id TEXT, -- 关联 prompt_templates.id
is_active INTEGER DEFAULT 1, -- 是否启用
is_builtin INTEGER DEFAULT 0, -- 是否内置
source TEXT DEFAULT 'manual', -- 来源
version INTEGER DEFAULT 1, -- 版本号
tags TEXT, -- 标签
category TEXT, -- 分类
created_at TEXT, -- 创建时间
updated_at TEXT -- 更新时间
);
BossAgents