规则/模板/提示词三层体系设计文档
1. 架构概述
规则(Rule)、模板(Template)、提示词(Prompt) 三者采用统一的三层存储体系:
SCSAI 服务端 (源端)
↕ 同步 (template-sync-service: SCSAI 元数据 → rule_engine.db)
↕ 导入 (phase1-import: SQLite → SCSAI ItemType)
本地标准库 (sciot_import.db)
↕ 同步 (sync-service: 标准库 → 用户库)
用户私有库 (user_<userId>.db)
三层定位:
- SCSAI 服务端:数据权威源,所有标准规则/模板/提示词持久化在 SCSAI 的 5 个自定义 ItemType 中
- 本地标准库(
sciot_import.db):SCSAI 数据的本地 SQLite 缓存,供离线查询和 LLM 调用 - 用户私有库(
user_):每个用户的个性化副本,可覆盖标准数据、创建自定义条目、提交审核.db
2. SCSAI 服务端 — 涉及的 ItemType
2.1 BossAgent_Rule(规则)
| SCSAI 属性 | 标签 | 类型 | 说明 |
|-----------|------|------|------|
| item_number | 编号 | string(32) | 规则 ID,对应 SQLite 的 id |
| name | 规则名称 | string(256) | 规则名称 |
| description | 规则描述 | text | 规则详细说明 |
| bossagent_scope | 作用范围 | list | validate/create_pre/identify/get/add/edit/delete/generate/inspect/optimize/compare |
| bossagent_item_type | 关联对象类 | string(128) | 适用的 SCSAI ItemType 名称 |
| bossagent_severity | 严重级别 | list | error/warning/info/hint |
| bossagent_category | 规则分类 | list | 规则功能分类 |
| bossagent_priority | 优先级 | string(10) | 0=P0 ~ 3=P3 |
| bossagent_condition_script | 条件脚本 | text | 触发条件(JS 脚本或配置 JSON) |
| bossagent_action_type | 动作类型 | list | auto_fix/suggest/block/warn/reference/generate |
| bossagent_action_config | 动作配置 | text | 动作参数 JSON |
| bossagent_is_active | 是否启用 | boolean | 1=启用,0=禁用 |
| bossagent_is_builtin | 是否内置 | boolean | 1=系统内置,0=用户创建 |
| bossagent_source | 来源 | list | manual/aml_import/aras_sync/builtin |
| bossagent_version | 版本号 | integer | 版本号 |
| bossagent_tags | 标签 | string(512) | 逗号分隔标签 |
| bossagent_generated_aml | 生成的 AML | text | 规则生成的 AML 内容 |
| bossagent_natural_language | 自然语言描述 | text | 自然语言规则描述 |
创建方式: phase0-create-itemtypes.js:57-117
导入方式: phase1-import-to-aras.js — 从 sciot_rules_v2 表导入 2367 条
2.2 BossAgent_Template(模板)
| SCSAI 属性 | 标签 | 类型 | 说明 |
|-----------|------|------|------|
| item_number | 编号 | string(32) | 模板 ID |
| name | 模板名 | string(128) | 对应 item_type_name |
| bossagent_label | 显示名称 | string(128) | 中文/英文标签 |
| bossagent_template_type | 模板类型 | list | object/relationship/manual |
| bossagent_aml_content | AML 模板 | text | 创建 ItemType 的 AML 模板 XML |
| bossagent_variables | 变量定义 | text | {"llm_fields":[...], "auto_fields":[...]} |
| bossagent_required_fields | 必填字段 | text | 必填字段 JSON 数组 |
| bossagent_optional_fields | 可选字段 | text | 可选字段 JSON 数组 |
| bossagent_relationship_types | 关联类型 | text | 关联关系类型 JSON 数组 |
| bossagent_lifecycle | 生命周期 | string(128) | 默认生命周期名称 |
| bossagent_form | 默认表单 | string(128) | 默认表单名称 |
| bossagent_generation_rules | 生成规则 | text | {"child_objects":[], "nested_depth":0, "relationship_config":{}} |
| bossagent_version | 版本号 | integer | 版本号 |
| bossagent_is_builtin | 是否内置 | boolean | 是否为系统内置 |
创建方式: phase0-create-itemtypes.js:119-150
导入方式: phase1-import-to-aras.js — 从 sciot_templates 表导入 1205 条
2.3 BossAgent_Prompt(提示词)
| SCSAI 属性 | 标签 | 类型 | 说明 |
|-----------|------|------|------|
| item_number | 编号 | string(256) | 提示词 ID(注意长度 256,非默认的 32) |
| name | 名称 | string(256) | 提示词名称 |
| bossagent_content | 提示词内容 | text | 完整提示词文本(支持 {{变量}}) |
| bossagent_system_prompt | 系统提示词 | text | System prompt 内容 |
| bossagent_item_type | 关联对象类 | string(128) | 适用 ItemType |
| bossagent_operation | 操作类型 | list | add/create_pre/edit/identify/validate/compare 等 |
| bossagent_scope | 作用范围 | list | create/validate/identify 等 |
| bossagent_version | 版本号 | integer | 版本号 |
| bossagent_is_builtin | 是否内置 | boolean | 1=系统内置,0=用户创建 |
| bossagent_status | 状态 | list | active/deprecated/testing |
创建方式: phase0-create-itemtypes.js:151-159
导入方式: phase1-import-prompt.js — 从 prompt_templates 表导入 2817 条
注意: item_number 列宽必须为 nvarchar(256),否则 UUID 格式 ID(36 字符)会截断失败。
2.4 BossAgent_BizPrompt(业务提示词)
| SCSAI 属性 | 标签 | 类型 | 说明 |
|-----------|------|------|------|
| item_number | 编号 | string(32) | 业务提示词 ID |
| name | 名称 | string(128) | 业务系统名称 |
| bossagent_system_id | 系统 ID | string(128) | 业务系统标识符 |
| bossagent_system_prompt | 系统提示词 | text | 业务系统的 system prompt |
| bossagent_context_json | 上下文 JSON | text | 业务上下文配置 |
| bossagent_capabilities | 能力列表 | text | 能力描述 JSON 数组 |
创建方式: phase0-create-itemtypes.js
导入方式: phase1-import-prompt.js — 从 sciot_business_prompts 表导入 46 条
2.5 BossAgent_RuleContribution(规则贡献/审核)
| SCSAI 属性 | 标签 | 类型 | 说明 |
|-----------|------|------|------|
| item_number | 编号 | string(32) | 提交 ID |
| name | 名称 | string(128) | 提交标题 |
| bossagent_submitter | 提交者 | string(128) | 提交人 |
| bossagent_object_type | 对象类型 | list | rule/template/prompt |
| bossagent_original_id | 原标准 ID | string(256) | 对应标准库 ID |
| bossagent_content | 完整内容 | text | 提交的完整对象 JSON |
| bossagent_description | 说明 | text | 提交说明 |
| bossagent_status | 状态 | list | pending/approved/rejected |
| bossagent_review_comment | 审核意见 | text | 审核意见 |
创建方式: phase0-create-itemtypes.js
用途: 与本地 sync_submissions 表对应,用于将用户修改提交回 SCSAI 审核
3. 本地标准库 — 涉及的 SQLite 文件
3.1 文件清单
server/
├── sciot_import.db (35.8 MB) ← 本地标准库(完整数据源,勿覆盖)
├── data/
│ ├── sciot_import.db (35.8 MB) ← 标准库副本(供 sync-service 读取)
│ ├── rule_engine.db (0.4 MB) ← SCSAI 元数据缓存(ItemTypes/Properties 等)
│ ├── core_runtime.db (1.6 MB) ← 业务数据缓存
│ ├── user_libraries/
│ │ └── user_<userId>.db ← 每用户私有库
│ └── enterprise_store.db ← 企业私有库
3.2 sciot_import.db(标准库)— 核心表
| 表名 | 行数 | 说明 |
|------|------|------|
| sciot_rules_v2 | 2,367 | 规则主表 |
| sciot_templates | 1,205 | 模板主表(每 ItemType 一条) |
| prompt_templates | 2,817 | 提示词主表 |
| sciot_business_prompts | 46 | 业务提示词主表 |
辅助表(29+ 个):
sciot_item_types (928), sciot_properties (40,854), sciot_relationships (587),
sciot_lifecycle_maps (98), sciot_lifecycle_states (362), sciot_lists (427),
sciot_list_values (6,206), sciot_methods (2,236), sciot_method_rules (6,155),
sciot_forms (722), sciot_form_fields (3,110), sciot_business_objects (442), 等
3.3 sciot_rules_v2 表结构
CREATE TABLE sciot_rules_v2 (
id TEXT PRIMARY KEY, -- 规则 ID
name TEXT NOT NULL, -- 规则名称
description TEXT, -- 规则描述
scope TEXT NOT NULL, -- 作用范围
item_type_name TEXT, -- 适用 ItemType
severity TEXT DEFAULT 'warning', -- 严重级别
priority INTEGER DEFAULT 2, -- 优先级 (0-3)
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 -- 更新时间
);
3.4 sciot_templates 表结构
CREATE TABLE sciot_templates (
id INTEGER PRIMARY KEY AUTOINCREMENT, -- 模板 ID
template_type TEXT NOT NULL DEFAULT 'object', -- 模板类型
item_type_name TEXT NOT NULL UNIQUE, -- 目标 ItemType
item_type_label TEXT DEFAULT '', -- 显示标签
aml_template TEXT DEFAULT '', -- AML 模板 XML
required_fields TEXT DEFAULT '[]', -- 必填字段
optional_fields TEXT DEFAULT '[]', -- 可选字段
keyed_field TEXT DEFAULT '', -- 键名字段
relationship_types TEXT DEFAULT '[]', -- 关联类型
lifecycle TEXT DEFAULT '', -- 生命周期
form TEXT DEFAULT '', -- 默认表单
llm_fields TEXT DEFAULT '[]', -- LLM 可生成字段
auto_fields TEXT DEFAULT '[]', -- 系统自动填充字段
generation_rules TEXT DEFAULT '{}', -- 生成规则 JSON
created_at TEXT -- 创建时间
);
3.5 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', -- 类型
item_type_name TEXT, -- 适用 ItemType
version INTEGER DEFAULT 1, -- 版本号
status TEXT DEFAULT 'active', -- 状态
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 -- 更新时间
);
3.6 sciot_business_prompts 表结构
CREATE TABLE sciot_business_prompts (
id INTEGER PRIMARY KEY AUTOINCREMENT, -- ID
system_id TEXT NOT NULL UNIQUE, -- 业务系统标识
system_name TEXT DEFAULT '', -- 系统名称
system_prompt TEXT DEFAULT '', -- 系统提示词
user_prompt_template TEXT DEFAULT '', -- 用户提示词模板
capabilities TEXT DEFAULT '[]', -- 能力描述 JSON
created_at TEXT -- 创建时间
);
4. 用户私有库 — 涉及的库和表
4.1 数据库位置
server/data/user_libraries/user_<userId>.db
每个用户一个独立 SQLite 文件,首次访问时自动创建。
4.2 user_rules 表
CREATE TABLE user_rules (
id TEXT PRIMARY KEY, -- 唯一 ID
standard_id TEXT, -- 对应标准库 ID(用于覆盖)
name TEXT NOT NULL, -- 规则名称
category TEXT DEFAULT '', -- 分类
item_type_name TEXT DEFAULT '', -- 适用 ItemType
description TEXT DEFAULT '', -- 描述
tags TEXT DEFAULT '', -- 标签
condition TEXT DEFAULT '', -- 条件
condition_script TEXT DEFAULT '', -- 条件脚本
action_type TEXT DEFAULT '', -- 动作类型
action_config TEXT DEFAULT '', -- 动作配置
priority INTEGER DEFAULT 0, -- 优先级
severity TEXT DEFAULT 'info', -- 严重级别
scope TEXT DEFAULT '', -- 作用范围
enabled INTEGER DEFAULT 1, -- 启用状态
is_builtin INTEGER DEFAULT 0, -- 是否内置
source TEXT DEFAULT 'custom', -- 来源 (custom/standard_copy/modified)
origin_version INTEGER DEFAULT 0, -- 原始版本号
current_version INTEGER DEFAULT 1, -- 当前版本号
synced_to_server INTEGER DEFAULT 0, -- 已提交到审核
sync_status TEXT DEFAULT 'none', -- 同步状态
created_at TEXT, -- 创建时间
updated_at TEXT, -- 更新时间
local_modified_at TEXT -- 本地修改时间
);
4.3 user_templates 表
CREATE TABLE user_templates (
id TEXT PRIMARY KEY, -- 唯一 ID
standard_id TEXT, -- 标准 ID
name TEXT NOT NULL, -- 模板名称
type TEXT DEFAULT '', -- 模板类型
item_type_name TEXT DEFAULT '', -- 适用 ItemType
item_type_label TEXT DEFAULT '', -- 显示标签
description TEXT DEFAULT '', -- 描述
tags TEXT DEFAULT '', -- 标签
content TEXT DEFAULT '', -- 内容
variables TEXT DEFAULT '[]', -- 变量定义
category TEXT DEFAULT '', -- 分类
aml_template TEXT DEFAULT '', -- AML 模板
required_fields TEXT DEFAULT '[]', -- 必填字段
optional_fields TEXT DEFAULT '[]', -- 可选字段
keyed_field TEXT DEFAULT '', -- 键名字段
relationship_types TEXT DEFAULT '[]', -- 关联类型
lifecycle TEXT DEFAULT '', -- 生命周期
form TEXT DEFAULT '', -- 表单
llm_fields TEXT DEFAULT '[]', -- LLM 字段
auto_fields TEXT DEFAULT '[]', -- 自动字段
generation_rules TEXT DEFAULT '{}', -- 生成规则
source TEXT DEFAULT 'custom', -- 来源
origin_version INTEGER DEFAULT 0, -- 原始版本
current_version INTEGER DEFAULT 1, -- 当前版本
synced_to_server INTEGER DEFAULT 0, -- 已提交
sync_status TEXT DEFAULT 'none', -- 同步状态
created_at TEXT, -- 创建时间
updated_at TEXT, -- 更新时间
local_modified_at TEXT -- 本地修改时间
);
4.4 user_prompts 表
CREATE TABLE user_prompts (
id TEXT PRIMARY KEY, -- 唯一 ID
standard_id TEXT, -- 标准 ID
name TEXT NOT NULL, -- 提示词名称
type TEXT DEFAULT '', -- 类型
item_type_name TEXT DEFAULT '', -- 适用 ItemType
description TEXT DEFAULT '', -- 描述
content TEXT DEFAULT '', -- 提示词正文
system_prompt TEXT DEFAULT '', -- 系统提示词
operation_type TEXT DEFAULT '', -- 操作类型
variables TEXT DEFAULT '[]', -- 变量列表
temperature REAL DEFAULT 0.3, -- LLM 温度
scope TEXT DEFAULT 'create', -- 作用范围
version INTEGER DEFAULT 1, -- 版本号
status TEXT DEFAULT 'active', -- 状态
is_builtin INTEGER DEFAULT 0, -- 是否内置
source TEXT DEFAULT 'custom', -- 来源
origin_version INTEGER DEFAULT 0, -- 原始版本
current_version INTEGER DEFAULT 1, -- 当前版本
synced_to_server INTEGER DEFAULT 0, -- 已提交
sync_status TEXT DEFAULT 'none', -- 同步状态
created_at TEXT, -- 创建时间
updated_at TEXT, -- 更新时间
local_modified_at TEXT -- 本地修改时间
);
4.5 辅助表
sync_submissions — 用户提交审核记录
CREATE TABLE sync_submissions (
id TEXT PRIMARY KEY,
user_id TEXT DEFAULT 'default',
object_type TEXT NOT NULL, -- rule/template/prompt
object_id TEXT NOT NULL,
original_id TEXT, -- 对应的 standard_id
content TEXT DEFAULT '{}', -- 完整对象 JSON
description TEXT DEFAULT '',
status TEXT DEFAULT 'pending', -- pending/approved/rejected
review_comment TEXT DEFAULT '',
submitted_at TEXT,
reviewed_at TEXT
);
sync_state — 同步状态跟踪
CREATE TABLE sync_state (
user_id TEXT PRIMARY KEY,
last_sync_at TEXT,
standard_version TEXT DEFAULT '0',
rules_count INTEGER DEFAULT 0,
templates_count INTEGER DEFAULT 0,
prompts_count INTEGER DEFAULT 0
);
5. 同步机制详解
5.1 数据流向总览
┌──────────────────────┐ phase1-import-to-aras.js
│ SCSAI 服务端 │ ◄──────────────────────────────
│ BossAgent_Rule │ AML (ApplyItem)
│ BossAgent_Template │
│ BossAgent_Prompt │
│ BossAgent_BizPrompt │
└──────────┬───────────┘
│
│ template-sync-service.js (SCSAI 元数据同步)
│ GET /api/private-library/sync/:type (企业库同步)
▼
┌──────────────────────┐
│ 本地标准库 │ sciot_import.db (35.8MB)
│ sciot_import.db │ 含: sciot_rules_v2, sciot_templates,
│ │ prompt_templates, sciot_business_prompts
└──────────┬───────────┘
│
│ sync-service.js (syncStandardToUser)
│ POST /api/user-library/sync/standard
▼
┌──────────────────────┐
│ 用户私有库 │ server/data/user_libraries/user_<id>.db
│ user_<userId>.db │ 含: user_rules, user_templates, user_prompts
│ │ sync_submissions, sync_state
└──────────────────────┘
5.2 三条同步路径
#### 路径 A:SQLite → SCSAI(Phase 1 导入)
执行时机: 一次性批量导入
脚本: scripts/phase1-import-to-aras.js, scripts/phase1-import-prompt.js
方法: 逐条调用 SCSAI ApplyItem AML
映射关系:
| SQLite 表 | SCSAI ItemType | 导入条数 |
|-----------|---------------|----------|
| sciot_rules_v2 | BossAgent_Rule | 2,367 |
| sciot_templates | BossAgent_Template | 1,205 |
| prompt_templates | BossAgent_Prompt | 2,817 |
| sciot_business_prompts | BossAgent_BizPrompt | 46 |
关键实现细节:
- 分页读取 (
SELECT * FROM ... ORDER BY id),按BATCH_SIZE(50)分批提交 - 因 SCSAI 缺省 30s 超时对 50 条批量不够,改为逐条提交(per-item),每次间隔 20ms
item_number列在 SCSAI SQL 中默认为nvarchar(32),但 UUID 格式 ID(36 字符)会截断 → 需改为nvarchar(256)- 使用
ApplyItemSOAP 调用(/server/InnovatorServer.aspx),非Service.asmx item_number在 SCSAI 中不唯一,相同 ID 重复导入会创建重复行
#### 路径 B:SCSAI 元数据 → rule_engine.db(增量同步)
执行时机: 服务器启动时 + 按需调用
脚本: server/services/template-sync-service.js
方法: SCSAI OData 查询 → 写入 SQLite
同步内容:
- ItemType 列表(名称、标签、config_id 等)
- 属性定义(按 source_id 分组)
- 关系类型(按 source_id)
- 生命周期 & 状态
- 列表值
- 模板
注: 此路径同步的是 SCSAI 元数据(ItemTypes/Properties 结构),不是 Phase 1 导入的规则/模板/提示词数据本身。规则/模板/提示词的主体数据仅在路径 A 中导入。
#### 路径 C:标准库 → 用户私有库(sync-service)
执行时机: 按需(POST /api/user-library/sync/standard)
代码: server/services/sync-service.js → syncStandardToUser(userId, options)
方法:
function syncStandardToUser(userId, options) {
// 1. 读取标准库 sciot_import.db 中的全部数据
// - loadStandardRules() → 2367 条
// - loadStandardTemplates() → 1205 条
// - loadStandardPrompts() → 2863 条 (2817+46)
// 2. 对每条数据,检查用户库中是否已有 standard_id
// - 已有: 若 force=true 且来源为 standard_copy,则 UPDATE
// - 没有: INSERT,source='standard_copy'
// 3. 更新 sync_state 表
}
差异化参数:
force: true— 强制更新已有标准副本(不覆盖用户修改的)type: 'rules'|'templates'|'prompts'— 只同步指定类型
5.3 覆盖/合并机制
用户私有库支持两种覆盖模式:
标准覆盖(Override): 用户库中的条目如有 standard_id,则自动覆盖同 standard_id 的标准条目
- 所有
getEffective*()函数先收集用户覆盖,再合并标准数据 - 规则按
priority降序排列
自定义条目(Custom): 用户库中无 standard_id 的条目
- 追加到有效列表末尾
source标记为'custom'或'modified'
5.4 提交审核流程
用户修改/创建 → POST /api/user-library/submit
│
▼
sync_submissions 表
(status='pending')
│
┌─────────────┴─────────────┐
▼ ▼
POST .../approve POST .../reject
(status→'approved') (status→'rejected')
│ │
▼ ▼
sync_status='approved' sync_status='rejected'
当前限制: approve/reject 仅更新本地状态标记。实际回写到 sciot_import.db 或提交到 SCSAI BossAgent_RuleContribution 的功能尚未实现。
6. 涉及的主要代码文件
| 文件 | 角色 | 功能 |
|---|---|---|
| scripts/phase0-create-itemtypes.js | 基础设施 | 创建 5 个 BossAgent ItemType 及其属性、列表、权限 |
| scripts/phase1-import-to-aras.js | 数据导入 | sciot_rules_v2 → BossAgent_Rule, sciot_templates → BossAgent_Template |
| scripts/phase1-import-prompt.js | 数据导入 | prompt_templates → BossAgent_Prompt, sciot_business_prompts → BossAgent_BizPrompt |
| scripts/_clean_rules.js | 数据清洗 | 删除重复规则 |
| scripts/_fix_columns.js | 数据清洗 | 修复 ITEM_NUMBER 列宽 |
| server/services/sync-service.js | 同步服务 | 标准库 → 用户库同步(含完整字段映射) |
| server/services/user-library.js | 用户库服务 | 用户库 CRUD、覆盖合并、提交审核 |
| server/routes/user-library-routes.js | REST API | 21 个用户库端点(搜索/CRUD/同步/审核) |
| server/routes/private-library.js | REST API | 企业私有库 9 个端点 |
| server/routes/unified-create.js | 创建服务 | 7 步统一创建流程 |
| server/services/template-sync-service.js | 元数据同步 | SCSAI ItemType 结构 → rule_engine.db |
| server/sqlite-compat.js | 基础设施 | sql.js 兼容层(替代 better-sqlite3) |
7. REST API 端点汇总
7.1 用户私有库 /api/user-library/*
| 方法 | 路径 | 说明 |
|---|---|---|
| GET | /stats | 用户库统计(按来源分类计数) |
| GET | /rules[?filter] | 规则列表(支持 category/source/item_type/scope/severity/search/enabled 筛选) |
| GET | /rules/:id | 单条规则 |
| POST | /rules | 新建规则 |
| PUT | /rules/:id | 更新规则 |
| DELETE | /rules/:id | 删除规则 |
| GET | /templates[?filter] | 模板列表 |
| GET | /templates/:id | 单条模板 |
| POST | /templates | 新建模板 |
| PUT | /templates/:id | 更新模板 |
| DELETE | /templates/:id | 删除模板 |
| GET | /prompts[?filter] | 提示词列表 |
| GET | /prompts/:id | 单条提示词 |
| POST | /prompts | 新建提示词 |
| PUT | /prompts/:id | 更新提示词 |
| DELETE | /prompts/:id | 删除提示词 |
| POST | /sync/standard | 触发标准库同步 |
| POST | /submit | 提交审核 |
| GET | /submissions/pending | 待审核列表 |
| POST | /submissions/approve | 审核通过 |
| POST | /submissions/reject | 审核拒绝 |
| GET | /search?q=&type= | 统一搜索(跨规则/模板/提示词) |
7.2 企业私有库 /api/private-library/*
| 方法 | 路径 | 说明 |
|---|---|---|
| GET | /stats | 企业库统计 |
| GET | /types | 对象类型列表 |
| GET | /search?q= | 搜索对象 |
| GET | /objects[?type=&page=&size=] | 分页对象列表 |
| GET | /objects/:id | 单条对象详情 |
| POST | /objects | 创建/保存对象 |
| PUT | /objects/:id | 更新对象 |
| DELETE | /objects/:id | 删除对象 |
| POST | /sync/:type | 从 SCSAI 同步 |
7.3 统一创建 /api/unified/*
| 方法 | 路径 | 说明 |
|---|---|---|
| GET | /type-template/:name | 获取类型模板 |
| GET | /item-types | 可创建的 ItemType 列表 |
| POST | /create | 7 步核心创建 |
| POST | /generate-props | LLM 属性生成 |
| POST | /apply-aml | 轻量 AML 转发 |
8. 常见问题与注意事项
item_number列宽:SCSAI SQL 表默认nvarchar(32),BossAgent_Prompt 的 ID 含 UUID(36 字符),需改为nvarchar(256),否则导入失败。
item_number不唯一:SCSAI 的item_number不强制唯一,相同 ID 重复导入会创建重复行。
- 批量 AML 超时:SCSAI 默认 30 秒超时对 50 条批量不够。建议逐条提交(per-item)或增加超时到 120 秒。
- sql.js 兼容层 bug:
sqlite-compat.js的Statement.all()在显式列名 + WHERE 子句组合下可能返回 0 行,建议使用SELECT *并在 JS 中筛选。
- 用户库路由未挂载:
user-library-routes.js的 API 已实现但未在server.js中注册。
- 审核写回未实现:
approveSubmission和rejectSubmission仅更新本地状态,不写回标准库或 SCSAI。
- 两个
sciot_import.db:server/sciot_import.db(35.8 MB,完整数据)和server/data/sciot_import.db(原始 0.4 MB,不完整)。sync-service.js现会自动检测并优先使用完整版。
BossAgents