docs(database): 规范脚本顺序并补全字段注释

This commit is contained in:
2026-06-01 02:10:34 +08:00
parent d92496854d
commit 6fe1209801
70 changed files with 695 additions and 178 deletions

View File

@@ -238,3 +238,4 @@
3. 建设 Agent 工具注册与调用协议,补齐任务状态与执行日志。 3. 建设 Agent 工具注册与调用协议,补齐任务状态与执行日志。
4. 补齐索引任务、重试、重建索引和前端任务视图。 4. 补齐索引任务、重试、重建索引和前端任务视图。
5. 衔接模型供应商、Spring AI 适配层、工作流编排和前端管理台。 5. 衔接模型供应商、Spring AI 适配层、工作流编排和前端管理台。

View File

@@ -896,3 +896,4 @@ OpenAI-compatible 客户端使用 Mock Web Server 或类似方式测试:
- Ollama Embeddings: https://docs.ollama.com/capabilities/embeddings - Ollama Embeddings: https://docs.ollama.com/capabilities/embeddings
- Spring AI OpenAI Embeddings: https://docs.spring.io/spring-ai/reference/api/embeddings/openai-embeddings.html - Spring AI OpenAI Embeddings: https://docs.spring.io/spring-ai/reference/api/embeddings/openai-embeddings.html
- SiliconFlow Embedding 模型列表: https://www.siliconflow.com/models/embedding - SiliconFlow Embedding 模型列表: https://www.siliconflow.com/models/embedding

View File

@@ -446,3 +446,4 @@ Embedding 批量生成应支持批处理,减少网络请求次数。批量大
- Ollama Embeddings: https://docs.ollama.com/capabilities/embeddings - Ollama Embeddings: https://docs.ollama.com/capabilities/embeddings
- Spring AI OpenAI Embeddings: https://docs.spring.io/spring-ai/reference/api/embeddings/openai-embeddings.html - Spring AI OpenAI Embeddings: https://docs.spring.io/spring-ai/reference/api/embeddings/openai-embeddings.html
- SiliconFlow Embedding 模型列表: https://www.siliconflow.com/models/embedding - SiliconFlow Embedding 模型列表: https://www.siliconflow.com/models/embedding

View File

@@ -260,3 +260,4 @@ COMMENT ON COLUMN model_call_log.update_time IS '更新时间';
COMMENT ON COLUMN model_call_log.remark IS '备注'; COMMENT ON COLUMN model_call_log.remark IS '备注';
COMMENT ON COLUMN model_call_log.create_by IS '创建者'; COMMENT ON COLUMN model_call_log.create_by IS '创建者';
COMMENT ON COLUMN model_call_log.update_by IS '更新者'; COMMENT ON COLUMN model_call_log.update_by IS '更新者';

View File

@@ -149,3 +149,4 @@ Agent 主线能力按以下顺序继续推进:
### 里程碑 4平台管理化 ### 里程碑 4平台管理化
- 补齐前端占位页面联调与后台配置能力,形成完整平台雏形。 - 补齐前端占位页面联调与后台配置能力,形成完整平台雏形。

View File

@@ -251,14 +251,182 @@ CREATE INDEX IF NOT EXISTS idx_skill_version_skill_id ON skill_version (skill_id
CREATE INDEX IF NOT EXISTS idx_skill_version_publish_status ON skill_version (publish_status); CREATE INDEX IF NOT EXISTS idx_skill_version_publish_status ON skill_version (publish_status);
COMMENT ON TABLE studio_project IS 'Studio项目空间表'; COMMENT ON TABLE studio_project IS 'Studio项目空间表';
COMMENT ON COLUMN studio_project.id IS 'ID';
COMMENT ON COLUMN studio_project.project_code IS '项目编码';
COMMENT ON COLUMN studio_project.project_name IS '项目名称';
COMMENT ON COLUMN studio_project.environment IS '环境';
COMMENT ON COLUMN studio_project.publish_status IS '发布状态';
COMMENT ON COLUMN studio_project.current_version IS '当前发布版本';
COMMENT ON COLUMN studio_project.version IS '版本';
COMMENT ON COLUMN studio_project.create_time IS '创建时间';
COMMENT ON COLUMN studio_project.update_time IS '更新时间';
COMMENT ON COLUMN studio_project.remark IS '备注';
COMMENT ON COLUMN studio_project.create_by IS '创建者';
COMMENT ON COLUMN studio_project.update_by IS '更新者';
COMMENT ON TABLE workflow_definition IS 'Workflow定义表'; COMMENT ON TABLE workflow_definition IS 'Workflow定义表';
COMMENT ON COLUMN workflow_definition.id IS 'ID';
COMMENT ON COLUMN workflow_definition.project_id IS '所属项目ID';
COMMENT ON COLUMN workflow_definition.workflow_code IS 'Workflow编码';
COMMENT ON COLUMN workflow_definition.workflow_name IS 'Workflow名称';
COMMENT ON COLUMN workflow_definition.description IS 'Workflow描述';
COMMENT ON COLUMN workflow_definition.bound_agent_id IS '绑定Agent ID';
COMMENT ON COLUMN workflow_definition.status IS '状态';
COMMENT ON COLUMN workflow_definition.version IS '版本';
COMMENT ON COLUMN workflow_definition.create_time IS '创建时间';
COMMENT ON COLUMN workflow_definition.update_time IS '更新时间';
COMMENT ON COLUMN workflow_definition.remark IS '备注';
COMMENT ON COLUMN workflow_definition.create_by IS '创建者';
COMMENT ON COLUMN workflow_definition.update_by IS '更新者';
COMMENT ON TABLE workflow_version IS 'Workflow版本快照表'; COMMENT ON TABLE workflow_version IS 'Workflow版本快照表';
COMMENT ON COLUMN workflow_version.id IS 'ID';
COMMENT ON COLUMN workflow_version.workflow_id IS 'Workflow定义ID';
COMMENT ON COLUMN workflow_version.version_no IS '版本号';
COMMENT ON COLUMN workflow_version.snapshot_name IS '快照名称';
COMMENT ON COLUMN workflow_version.graph_json IS '编排图JSON';
COMMENT ON COLUMN workflow_version.publish_status IS '发布状态';
COMMENT ON COLUMN workflow_version.published_time IS '发布时间';
COMMENT ON COLUMN workflow_version.version IS '版本';
COMMENT ON COLUMN workflow_version.create_time IS '创建时间';
COMMENT ON COLUMN workflow_version.update_time IS '更新时间';
COMMENT ON COLUMN workflow_version.remark IS '备注';
COMMENT ON COLUMN workflow_version.create_by IS '创建者';
COMMENT ON COLUMN workflow_version.update_by IS '更新者';
COMMENT ON TABLE workflow_run IS 'Workflow运行记录表'; COMMENT ON TABLE workflow_run IS 'Workflow运行记录表';
COMMENT ON COLUMN workflow_run.id IS 'ID';
COMMENT ON COLUMN workflow_run.request_id IS '请求唯一ID';
COMMENT ON COLUMN workflow_run.workflow_id IS 'Workflow定义ID';
COMMENT ON COLUMN workflow_run.workflow_version_id IS 'Workflow版本ID';
COMMENT ON COLUMN workflow_run.agent_id IS '执行Agent ID';
COMMENT ON COLUMN workflow_run.run_source IS '运行来源';
COMMENT ON COLUMN workflow_run.status IS '运行状态';
COMMENT ON COLUMN workflow_run.input_json IS '输入参数JSON';
COMMENT ON COLUMN workflow_run.output_json IS '输出结果JSON';
COMMENT ON COLUMN workflow_run.duration_ms IS '耗时(毫秒)';
COMMENT ON COLUMN workflow_run.estimated_cost IS '预估成本';
COMMENT ON COLUMN workflow_run.version IS '版本';
COMMENT ON COLUMN workflow_run.create_time IS '创建时间';
COMMENT ON COLUMN workflow_run.update_time IS '更新时间';
COMMENT ON COLUMN workflow_run.remark IS '备注';
COMMENT ON COLUMN workflow_run.create_by IS '创建者';
COMMENT ON COLUMN workflow_run.update_by IS '更新者';
COMMENT ON TABLE workflow_run_step IS 'Workflow运行步骤表'; COMMENT ON TABLE workflow_run_step IS 'Workflow运行步骤表';
COMMENT ON COLUMN workflow_run_step.id IS 'ID';
COMMENT ON COLUMN workflow_run_step.run_id IS '运行记录ID';
COMMENT ON COLUMN workflow_run_step.node_id IS '节点ID';
COMMENT ON COLUMN workflow_run_step.node_type IS '节点类型';
COMMENT ON COLUMN workflow_run_step.node_name IS '节点名称';
COMMENT ON COLUMN workflow_run_step.status IS '步骤状态';
COMMENT ON COLUMN workflow_run_step.input_json IS '步骤输入JSON';
COMMENT ON COLUMN workflow_run_step.output_json IS '步骤输出JSON';
COMMENT ON COLUMN workflow_run_step.duration_ms IS '耗时(毫秒)';
COMMENT ON COLUMN workflow_run_step.error_message IS '错误信息';
COMMENT ON COLUMN workflow_run_step.version IS '版本';
COMMENT ON COLUMN workflow_run_step.create_time IS '创建时间';
COMMENT ON COLUMN workflow_run_step.update_time IS '更新时间';
COMMENT ON COLUMN workflow_run_step.remark IS '备注';
COMMENT ON COLUMN workflow_run_step.create_by IS '创建者';
COMMENT ON COLUMN workflow_run_step.update_by IS '更新者';
COMMENT ON TABLE mcp_server IS 'MCP服务表'; COMMENT ON TABLE mcp_server IS 'MCP服务表';
COMMENT ON COLUMN mcp_server.id IS 'ID';
COMMENT ON COLUMN mcp_server.server_code IS '服务编码';
COMMENT ON COLUMN mcp_server.server_name IS '服务名称';
COMMENT ON COLUMN mcp_server.import_type IS '导入方式';
COMMENT ON COLUMN mcp_server.endpoint_url IS '服务端点地址';
COMMENT ON COLUMN mcp_server.package_name IS '安装包名称';
COMMENT ON COLUMN mcp_server.manifest_json IS 'Manifest声明JSON';
COMMENT ON COLUMN mcp_server.auth_type IS '鉴权类型';
COMMENT ON COLUMN mcp_server.secret_ref IS '密钥引用';
COMMENT ON COLUMN mcp_server.health_status IS '健康状态';
COMMENT ON COLUMN mcp_server.enabled IS '是否启用';
COMMENT ON COLUMN mcp_server.version IS '版本';
COMMENT ON COLUMN mcp_server.create_time IS '创建时间';
COMMENT ON COLUMN mcp_server.update_time IS '更新时间';
COMMENT ON COLUMN mcp_server.remark IS '备注';
COMMENT ON COLUMN mcp_server.create_by IS '创建者';
COMMENT ON COLUMN mcp_server.update_by IS '更新者';
COMMENT ON TABLE mcp_capability IS 'MCP能力表'; COMMENT ON TABLE mcp_capability IS 'MCP能力表';
COMMENT ON COLUMN mcp_capability.id IS 'ID';
COMMENT ON COLUMN mcp_capability.server_id IS '所属服务ID';
COMMENT ON COLUMN mcp_capability.capability_code IS '能力编码';
COMMENT ON COLUMN mcp_capability.capability_name IS '能力名称';
COMMENT ON COLUMN mcp_capability.capability_type IS '能力类型';
COMMENT ON COLUMN mcp_capability.schema_json IS '能力Schema JSON';
COMMENT ON COLUMN mcp_capability.enabled IS '是否启用';
COMMENT ON COLUMN mcp_capability.version IS '版本';
COMMENT ON COLUMN mcp_capability.create_time IS '创建时间';
COMMENT ON COLUMN mcp_capability.update_time IS '更新时间';
COMMENT ON COLUMN mcp_capability.remark IS '备注';
COMMENT ON COLUMN mcp_capability.create_by IS '创建者';
COMMENT ON COLUMN mcp_capability.update_by IS '更新者';
COMMENT ON TABLE skill_definition IS 'Skill定义表'; COMMENT ON TABLE skill_definition IS 'Skill定义表';
COMMENT ON COLUMN skill_definition.id IS 'ID';
COMMENT ON COLUMN skill_definition.skill_code IS 'Skill编码';
COMMENT ON COLUMN skill_definition.skill_name IS 'Skill名称';
COMMENT ON COLUMN skill_definition.skill_type IS 'Skill类型';
COMMENT ON COLUMN skill_definition.description IS 'Skill描述';
COMMENT ON COLUMN skill_definition.status IS '状态';
COMMENT ON COLUMN skill_definition.version IS '版本';
COMMENT ON COLUMN skill_definition.create_time IS '创建时间';
COMMENT ON COLUMN skill_definition.update_time IS '更新时间';
COMMENT ON COLUMN skill_definition.remark IS '备注';
COMMENT ON COLUMN skill_definition.create_by IS '创建者';
COMMENT ON COLUMN skill_definition.update_by IS '更新者';
COMMENT ON TABLE skill_version IS 'Skill版本表'; COMMENT ON TABLE skill_version IS 'Skill版本表';
COMMENT ON COLUMN skill_version.id IS 'ID';
COMMENT ON COLUMN skill_version.skill_id IS 'Skill定义ID';
COMMENT ON COLUMN skill_version.version_no IS '版本号';
COMMENT ON COLUMN skill_version.prompt_text IS '提示词内容';
COMMENT ON COLUMN skill_version.code_text IS '代码内容';
COMMENT ON COLUMN skill_version.config_json IS '运行配置JSON';
COMMENT ON COLUMN skill_version.variable_schema_json IS '变量Schema JSON';
COMMENT ON COLUMN skill_version.test_result_json IS '测试结果JSON';
COMMENT ON COLUMN skill_version.publish_status IS '发布状态';
COMMENT ON COLUMN skill_version.published_time IS '发布时间';
COMMENT ON COLUMN skill_version.version IS '版本';
COMMENT ON COLUMN skill_version.create_time IS '创建时间';
COMMENT ON COLUMN skill_version.update_time IS '更新时间';
COMMENT ON COLUMN skill_version.remark IS '备注';
COMMENT ON COLUMN skill_version.create_by IS '创建者';
COMMENT ON COLUMN skill_version.update_by IS '更新者';
COMMENT ON TABLE agent_session IS 'Agent会话表'; COMMENT ON TABLE agent_session IS 'Agent会话表';
COMMENT ON COLUMN agent_session.id IS 'ID';
COMMENT ON COLUMN agent_session.session_code IS '会话编码';
COMMENT ON COLUMN agent_session.agent_id IS 'Agent ID';
COMMENT ON COLUMN agent_session.workflow_run_id IS '来源Workflow运行ID';
COMMENT ON COLUMN agent_session.title IS '会话标题';
COMMENT ON COLUMN agent_session.status IS '会话状态';
COMMENT ON COLUMN agent_session.metadata_json IS '会话元数据JSON';
COMMENT ON COLUMN agent_session.version IS '版本';
COMMENT ON COLUMN agent_session.create_time IS '创建时间';
COMMENT ON COLUMN agent_session.update_time IS '更新时间';
COMMENT ON COLUMN agent_session.remark IS '备注';
COMMENT ON COLUMN agent_session.create_by IS '创建者';
COMMENT ON COLUMN agent_session.update_by IS '更新者';
COMMENT ON TABLE agent_message IS 'Agent消息表'; COMMENT ON TABLE agent_message IS 'Agent消息表';
COMMENT ON COLUMN agent_message.id IS 'ID';
COMMENT ON COLUMN agent_message.session_id IS '会话ID';
COMMENT ON COLUMN agent_message.role IS '消息角色';
COMMENT ON COLUMN agent_message.content IS '消息内容';
COMMENT ON COLUMN agent_message.citation_json IS '引用信息JSON';
COMMENT ON COLUMN agent_message.token_count IS 'Token数量';
COMMENT ON COLUMN agent_message.version IS '版本';
COMMENT ON COLUMN agent_message.create_time IS '创建时间';
COMMENT ON COLUMN agent_message.update_time IS '更新时间';
COMMENT ON COLUMN agent_message.remark IS '备注';
COMMENT ON COLUMN agent_message.create_by IS '创建者';
COMMENT ON COLUMN agent_message.update_by IS '更新者';
COMMENT ON TABLE agent_capability_binding IS 'Agent能力绑定表'; COMMENT ON TABLE agent_capability_binding IS 'Agent能力绑定表';
COMMENT ON COLUMN agent_capability_binding.id IS 'ID';
COMMENT ON COLUMN agent_capability_binding.owner_type IS '绑定主体类型';
COMMENT ON COLUMN agent_capability_binding.owner_id IS '绑定主体ID';
COMMENT ON COLUMN agent_capability_binding.capability_type IS '能力类型';
COMMENT ON COLUMN agent_capability_binding.capability_id IS '能力ID';
COMMENT ON COLUMN agent_capability_binding.enabled IS '是否启用';
COMMENT ON COLUMN agent_capability_binding.config_json IS '绑定配置JSON';
COMMENT ON COLUMN agent_capability_binding.version IS '版本';
COMMENT ON COLUMN agent_capability_binding.create_time IS '创建时间';
COMMENT ON COLUMN agent_capability_binding.update_time IS '更新时间';
COMMENT ON COLUMN agent_capability_binding.remark IS '备注';
COMMENT ON COLUMN agent_capability_binding.create_by IS '创建者';
COMMENT ON COLUMN agent_capability_binding.update_by IS '更新者';

View File

@@ -25,3 +25,4 @@ Studio 原型页面位于 `frontend/src/pages/studio/`,路由集中在 `fronte
- Long ID 继续按字符串处理,避免 JS 精度问题。 - Long ID 继续按字符串处理,避免 JS 精度问题。
- 枚举值按整型协议处理,页面展示通过枚举字典或常量映射。 - 枚举值按整型协议处理,页面展示通过枚举字典或常量映射。
- 管理后台保持信息密度、稳定布局和清晰状态提示。 - 管理后台保持信息密度、稳定布局和清晰状态提示。

View File

@@ -26,3 +26,4 @@
- 文件解析管道复用附件上传能力。 - 文件解析管道复用附件上传能力。
- 知识资产、模型路由、Workflow、Agent 等页面复用枚举字典。 - 知识资产、模型路由、Workflow、Agent 等页面复用枚举字典。
- 运行观测页面复用统一状态颜色和错误提示格式。 - 运行观测页面复用统一状态颜色和错误提示格式。

View File

@@ -43,3 +43,4 @@
- 索引中显示进行中状态,不允许误标为可检索。 - 索引中显示进行中状态,不允许误标为可检索。
- 切片参数变更后提示需要重建索引。 - 切片参数变更后提示需要重建索引。
- Embedding 模型变更后提示会影响当前知识库向量空间。 - Embedding 模型变更后提示会影响当前知识库向量空间。

View File

@@ -28,3 +28,4 @@
- Embedding 模型维度变更时提示知识库需要重建索引。 - Embedding 模型维度变更时提示知识库需要重建索引。
- 草稿路由不得用于生产发布就绪校验。 - 草稿路由不得用于生产发布就绪校验。
- Fallback 模型为空时在发布检查中提示风险。 - Fallback 模型为空时在发布检查中提示风险。

View File

@@ -29,3 +29,4 @@
- 运行测试生成 `workflow_run``workflow_run_step` - 运行测试生成 `workflow_run``workflow_run_step`
- 发布前调用发布就绪检查。 - 发布前调用发布就绪检查。
- 节点 Inspector 只编辑当前节点配置,不直接改其他节点。 - 节点 Inspector 只编辑当前节点配置,不直接改其他节点。

View File

@@ -31,3 +31,4 @@
- 未召回知识切片时给出明确提示。 - 未召回知识切片时给出明确提示。
- 模型调用失败时展示 `request_id` 和错误摘要。 - 模型调用失败时展示 `request_id` 和错误摘要。
- 会话保存失败不得清空用户输入。 - 会话保存失败不得清空用户输入。

View File

@@ -17,3 +17,4 @@
- 能力预览成功后才允许保存。 - 能力预览成功后才允许保存。
- 未授权能力显示待授权状态。 - 未授权能力显示待授权状态。
- 已停用 Server 的能力不可被 Workflow 新增选择。 - 已停用 Server 的能力不可被 Workflow 新增选择。

View File

@@ -17,3 +17,4 @@
- 草稿变更后提示未发布。 - 草稿变更后提示未发布。
- 测试结果保存到版本草稿。 - 测试结果保存到版本草稿。
- Workflow 只能选择发布版本或明确选择草稿测试。 - Workflow 只能选择发布版本或明确选择草稿测试。

View File

@@ -26,3 +26,4 @@
- 异常运行高亮展示。 - 异常运行高亮展示。
- 步骤日志按执行时间排序。 - 步骤日志按执行时间排序。
- 导出日志不包含密钥或完整敏感请求体。 - 导出日志不包含密钥或完整敏感请求体。

View File

@@ -32,5 +32,7 @@
- Java 枚举定义。 - Java 枚举定义。
- `sys_enum` 初始化测试。 - `sys_enum` 初始化测试。
- `script/sql/studio_enum.sql` 或对应模块枚举脚本。 - `script/sql/18.studio_enum.sql` 或对应模块枚举脚本。
- 前端枚举常量或字典接口。 - 前端枚举常量或字典接口。

View File

@@ -37,3 +37,4 @@ Controller 只接收请求 DTO 或基础参数,不直接暴露实体。响应
- 不调整 `sys_enum` 表字段。 - 不调整 `sys_enum` 表字段。
- 新增枚举时同步初始化测试和 SQL 初始化脚本。 - 新增枚举时同步初始化测试和 SQL 初始化脚本。
- 文档解析器新增类型时,只扩展解析器实现和工厂注册,不影响 RAG 业务服务。 - 文档解析器新增类型时,只扩展解析器实现和工厂注册,不影响 RAG 业务服务。

View File

@@ -37,3 +37,4 @@ Studio 聚合接口后续新增在知识资产模块,不替代旧接口。
- 只有解析成功的文档允许切片。 - 只有解析成功的文档允许切片。
- 向量化必须读取知识库生效模型配置。 - 向量化必须读取知识库生效模型配置。
- 重新切片或模型变更后,索引状态必须回到待索引或索引中。 - 重新切片或模型变更后,索引状态必须回到待索引或索引中。

View File

@@ -39,3 +39,4 @@
- 路由主模型必须启用。 - 路由主模型必须启用。
- 路由任务类型必须来自枚举。 - 路由任务类型必须来自枚举。
- 知识库 Embedding 维度必须与模型配置一致。 - 知识库 Embedding 维度必须与模型配置一致。

View File

@@ -36,3 +36,4 @@
- 节点类型必须来自枚举。 - 节点类型必须来自枚举。
- LLM 节点必须配置任务类型。 - LLM 节点必须配置任务类型。
- Knowledge Retrieval 节点必须配置知识库或继承项目默认知识库。 - Knowledge Retrieval 节点必须配置知识库或继承项目默认知识库。

View File

@@ -27,3 +27,4 @@
- 消息内容不能为空。 - 消息内容不能为空。
- `citation_json` 必须是数组结构。 - `citation_json` 必须是数组结构。
- 会话关闭后不允许继续写入消息。 - 会话关闭后不允许继续写入消息。

View File

@@ -18,3 +18,4 @@
- 能力编码在 Server 下唯一。 - 能力编码在 Server 下唯一。
- 导入方式必须来自枚举。 - 导入方式必须来自枚举。
- 能力 schema 必须为合法 JSON。 - 能力 schema 必须为合法 JSON。

View File

@@ -18,3 +18,4 @@
- 版本号在 Skill 内唯一。 - 版本号在 Skill 内唯一。
- Prompt、Code、Config 至少一种非空。 - Prompt、Code、Config 至少一种非空。
- 变量 schema 必须为合法 JSON。 - 变量 schema 必须为合法 JSON。

View File

@@ -22,3 +22,4 @@
- 只允许查询脱敏后的运行摘要。 - 只允许查询脱敏后的运行摘要。
- 导出接口必须过滤密钥和完整请求内容。 - 导出接口必须过滤密钥和完整请求内容。
- requestId 不存在时返回空结果而不是内部异常。 - requestId 不存在时返回空结果而不是内部异常。

View File

@@ -8,7 +8,7 @@
| 脚本位置 | 作用 | | 脚本位置 | 作用 |
|----------|------| |----------|------|
| `script/sql/` | 可执行的模块化建表或初始化脚本 | | `script/` | 可执行的模块化建表或初始化脚本 |
| `docs/MODEL_PROVIDER_SCHEMA.sql` | 模型平台 schema 汇总 | | `docs/MODEL_PROVIDER_SCHEMA.sql` | 模型平台 schema 汇总 |
| `docs/STUDIO_PROTOTYPE_SCHEMA.sql` | Studio 原型 schema 汇总 | | `docs/STUDIO_PROTOTYPE_SCHEMA.sql` | Studio 原型 schema 汇总 |
@@ -16,7 +16,7 @@
## 3. 必须保持不变的内容 ## 3. 必须保持不变的内容
`script/sql/enum.sql``sys_enum` 表结构不变: `script/sql/1.enum.sql``sys_enum` 表结构不变:
- `catalog` - `catalog`
- `type` - `type`
@@ -37,13 +37,13 @@ Java 枚举契约 `PersistableSysEnumDefinition` 的格式不变。后续如果
| 脚本 | 内容 | | 脚本 | 内容 |
|------|------| |------|------|
| `script/sql/studio_project.sql` | Studio 项目空间表 | | `script/sql/11.studio_project.sql` | Studio 项目空间表 |
| `script/sql/workflow.sql` | Workflow 定义、版本、运行、步骤日志 | | `script/sql/12.workflow.sql` | Workflow 定义、版本、运行、步骤日志 |
| `script/sql/mcp.sql` | MCP Server 与能力表 | | `script/sql/14.mcp.sql` | MCP Server 与能力表 |
| `script/sql/skill.sql` | Skill 定义与版本表 | | `script/sql/15.skill.sql` | Skill 定义与版本表 |
| `script/sql/agent_session.sql` | Agent 会话与消息表 | | `script/sql/13.agent_session.sql` | Agent 会话与消息表 |
| `script/sql/agent_capability_binding.sql` | Agent/Workflow 与 MCP/Skill/知识能力绑定表 | | `script/sql/16.agent_capability_binding.sql` | Agent/Workflow 与 MCP/Skill/知识能力绑定表 |
| `script/sql/studio_enum.sql` | Studio 相关枚举初始化 | | `script/sql/18.studio_enum.sql` | Studio 相关枚举初始化 |
## 5. 校验规则 ## 5. 校验规则
@@ -52,3 +52,6 @@ Java 枚举契约 `PersistableSysEnumDefinition` 的格式不变。后续如果
- 需要跨模块引用的字段必须在文档中说明外键关系。 - 需要跨模块引用的字段必须在文档中说明外键关系。
- JSON 扩展字段统一使用 `JSONB` - JSON 扩展字段统一使用 `JSONB`
- 枚举初始化脚本必须使用 `ON CONFLICT (catalog, type, name) DO UPDATE`,与现有脚本风格一致。 - 枚举初始化脚本必须使用 `ON CONFLICT (catalog, type, name) DO UPDATE`,与现有脚本风格一致。

View File

@@ -13,11 +13,11 @@
## 2. 脚本清单 ## 2. 脚本清单
- `script/sql/rag_store.sql` - `script/sql/3.rag_store.sql`
- `script/sql/rag_document.sql` - `script/sql/4.rag_document.sql`
- `script/sql/rag_document_parse_result.sql` - `script/sql/5.rag_document_parse_result.sql`
- `script/sql/rag_chunk.sql` - `script/sql/6.rag_chunk.sql`
- `script/sql/rag_chunk_embedding.sql` - `script/sql/7.rag_chunk_embedding.sql`
- `docs/MODEL_PROVIDER_SCHEMA.sql` 中的 `rag_store_model_config` - `docs/MODEL_PROVIDER_SCHEMA.sql` 中的 `rag_store_model_config`
## 3. 枚举组 ## 3. 枚举组
@@ -35,3 +35,6 @@
- `rag_chunk` 使用 `(document_id, chunk_index)` 保证同文档切片序号唯一。 - `rag_chunk` 使用 `(document_id, chunk_index)` 保证同文档切片序号唯一。
- `rag_chunk_embedding` 使用 `(chunk_id, embedding_model)` 防止同模型重复写入。 - `rag_chunk_embedding` 使用 `(chunk_id, embedding_model)` 防止同模型重复写入。
- RAG 现有脚本与本文档一致,本轮不调整 `sys_enum` 格式。 - RAG 现有脚本与本文档一致,本轮不调整 `sys_enum` 格式。

View File

@@ -33,5 +33,8 @@
## 4. 脚本 ## 4. 脚本
- `docs/MODEL_PROVIDER_SCHEMA.sql` 是完整 schema 快照。 - `docs/MODEL_PROVIDER_SCHEMA.sql` 是完整 schema 快照。
- `script/sql/model_provider.sql` 是后续执行入口。 - `script/sql/9.model_provider.sql` 是后续执行入口。
- 若模型枚举变更,需要同步 Java 枚举、初始化测试和 SQL 枚举脚本。 - 若模型枚举变更,需要同步 Java 枚举、初始化测试和 SQL 枚举脚本。

View File

@@ -20,8 +20,8 @@
## 3. 脚本 ## 3. 脚本
- `script/sql/studio_project.sql` - `script/sql/11.studio_project.sql`
- `script/sql/workflow.sql` - `script/sql/12.workflow.sql`
- `docs/STUDIO_PROTOTYPE_SCHEMA.sql` - `docs/STUDIO_PROTOTYPE_SCHEMA.sql`
## 4. JSON 字段 ## 4. JSON 字段
@@ -31,3 +31,5 @@
- `workflow_run_step.input_json``output_json` 保存节点级输入输出摘要。 - `workflow_run_step.input_json``output_json` 保存节点级输入输出摘要。
JSON 字段只保存运行必要摘要,不保存敏感密钥。 JSON 字段只保存运行必要摘要,不保存敏感密钥。

View File

@@ -26,7 +26,10 @@
## 4. 脚本 ## 4. 脚本
- `script/sql/agent_definition.sql` - `script/sql/8.agent_definition.sql`
- `script/sql/agent_session.sql` - `script/sql/13.agent_session.sql`
- `script/sql/agent_capability_binding.sql` - `script/sql/16.agent_capability_binding.sql`
- `docs/STUDIO_PROTOTYPE_SCHEMA.sql` - `docs/STUDIO_PROTOTYPE_SCHEMA.sql`

View File

@@ -15,6 +15,8 @@
## 3. 脚本 ## 3. 脚本
- `script/sql/mcp.sql` - `script/sql/14.mcp.sql`
- `docs/STUDIO_PROTOTYPE_SCHEMA.sql` - `docs/STUDIO_PROTOTYPE_SCHEMA.sql`
- `script/sql/studio_enum.sql` - `script/sql/18.studio_enum.sql`

View File

@@ -15,6 +15,8 @@
## 3. 脚本 ## 3. 脚本
- `script/sql/skill.sql` - `script/sql/15.skill.sql`
- `docs/STUDIO_PROTOTYPE_SCHEMA.sql` - `docs/STUDIO_PROTOTYPE_SCHEMA.sql`
- `script/sql/studio_enum.sql` - `script/sql/18.studio_enum.sql`

View File

@@ -23,7 +23,10 @@
索引分散在: 索引分散在:
- `script/sql/workflow.sql` - `script/sql/12.workflow.sql`
- `script/sql/model_provider.sql` - `script/sql/9.model_provider.sql`
- `script/sql/agent_session.sql` - `script/sql/13.agent_session.sql`
- `docs/STUDIO_PROTOTYPE_SCHEMA.sql` - `docs/STUDIO_PROTOTYPE_SCHEMA.sql`

View File

@@ -9,7 +9,7 @@
- `数据库设计/` - `数据库设计/`
- `前端实现文档/` - `前端实现文档/`
- `后端实现文档/` - `后端实现文档/`
- `script/sql/*.sql` - `script/*.sql`
- `docs/MODEL_PROVIDER_SCHEMA.sql` - `docs/MODEL_PROVIDER_SCHEMA.sql`
- `docs/STUDIO_PROTOTYPE_SCHEMA.sql` - `docs/STUDIO_PROTOTYPE_SCHEMA.sql`
@@ -21,17 +21,17 @@
| 模块 | 汇总 schema | 模块化脚本 | 结论 | | 模块 | 汇总 schema | 模块化脚本 | 结论 |
|------|-------------|------------|------| |------|-------------|------------|------|
| 模型与路由 | `docs/MODEL_PROVIDER_SCHEMA.sql` | `script/sql/model_provider.sql` | 已补齐 `rag_store_model_config.store_id` 外键 | | 模型与路由 | `docs/MODEL_PROVIDER_SCHEMA.sql` | `script/sql/9.model_provider.sql` | 已补齐 `rag_store_model_config.store_id` 外键 |
| Studio 项目 | `docs/STUDIO_PROTOTYPE_SCHEMA.sql` | `script/sql/studio_project.sql` | 表、唯一约束、索引一致 | | Studio 项目 | `docs/STUDIO_PROTOTYPE_SCHEMA.sql` | `script/sql/11.studio_project.sql` | 表、唯一约束、索引一致 |
| Workflow | `docs/STUDIO_PROTOTYPE_SCHEMA.sql` | `script/sql/workflow.sql` | 定义、版本、运行、步骤表一致 | | Workflow | `docs/STUDIO_PROTOTYPE_SCHEMA.sql` | `script/sql/12.workflow.sql` | 定义、版本、运行、步骤表一致 |
| Agent 会话 | `docs/STUDIO_PROTOTYPE_SCHEMA.sql` | `script/sql/agent_session.sql` | 会话和消息表一致 | | Agent 会话 | `docs/STUDIO_PROTOTYPE_SCHEMA.sql` | `script/sql/13.agent_session.sql` | 会话和消息表一致 |
| 能力绑定 | `docs/STUDIO_PROTOTYPE_SCHEMA.sql` | `script/sql/agent_capability_binding.sql` | 唯一约束和索引一致 | | 能力绑定 | `docs/STUDIO_PROTOTYPE_SCHEMA.sql` | `script/sql/16.agent_capability_binding.sql` | 唯一约束和索引一致 |
| MCP | `docs/STUDIO_PROTOTYPE_SCHEMA.sql` | `script/sql/mcp.sql` | Server 与 Capability 表一致 | | MCP | `docs/STUDIO_PROTOTYPE_SCHEMA.sql` | `script/sql/14.mcp.sql` | Server 与 Capability 表一致 |
| Skill | `docs/STUDIO_PROTOTYPE_SCHEMA.sql` | `script/sql/skill.sql` | 定义与版本表一致 | | Skill | `docs/STUDIO_PROTOTYPE_SCHEMA.sql` | `script/sql/15.skill.sql` | 定义与版本表一致 |
## 4. 枚举一致性 ## 4. 枚举一致性
`script/sql/studio_enum.sql` 保持 `sys_enum` 既有格式: `script/sql/18.studio_enum.sql` 保持 `sys_enum` 既有格式:
- `catalog` - `catalog`
- `type` - `type`
@@ -75,5 +75,8 @@
- Java 枚举类。 - Java 枚举类。
- `SysEnumDataInitTests` 初始化入口。 - `SysEnumDataInitTests` 初始化入口。
- `EnumDefinitionTests` 稳定性断言。 - `EnumDefinitionTests` 稳定性断言。
- `script/sql/studio_enum.sql` 初始化数据。 - `script/sql/18.studio_enum.sql` 初始化数据。
- 前端字典或常量映射。 - 前端字典或常量映射。

View File

@@ -48,3 +48,4 @@ flowchart LR
- 枚举设计必须保留 `sys_enum` 当前格式。 - 枚举设计必须保留 `sys_enum` 当前格式。
- 数据库中状态字段允许继续使用 `VARCHAR` 保存枚举代码,前后端协议层对结构化枚举继续传整型值。 - 数据库中状态字段允许继续使用 `VARCHAR` 保存枚举代码,前后端协议层对结构化枚举继续传整型值。
- 页面展示文案来自枚举定义或前端常量映射,不在业务逻辑中散落硬编码。 - 页面展示文案来自枚举定义或前端常量映射,不在业务逻辑中散落硬编码。

View File

@@ -30,3 +30,4 @@
## 5. 依赖关系 ## 5. 依赖关系
系统基础模块不能依赖其他业务模块。业务模块可依赖系统基础模块的枚举、附件、解析、返回体和异常处理。 系统基础模块不能依赖其他业务模块。业务模块可依赖系统基础模块的枚举、附件、解析、返回体和异常处理。

View File

@@ -42,3 +42,4 @@ flowchart LR
- `rag_chunk_embedding` 必须记录模型和维度,防止向量空间混用。 - `rag_chunk_embedding` 必须记录模型和维度,防止向量空间混用。
- 知识库模型配置由模型与路由模块维护,但知识资产模块负责消费。 - 知识库模型配置由模型与路由模块维护,但知识资产模块负责消费。
- 检索配置要面向 Workflow 和 Agent 复用,不绑定某一个页面。 - 检索配置要面向 Workflow 和 Agent 复用,不绑定某一个页面。

View File

@@ -45,3 +45,4 @@
- 知识资产模块使用 Embedding 路由和知识库模型绑定。 - 知识资产模块使用 Embedding 路由和知识库模型绑定。
- Workflow 和 Agent 使用 Chat 路由。 - Workflow 和 Agent 使用 Chat 路由。
- 运行观测读取 `model_call_log` - 运行观测读取 `model_call_log`

View File

@@ -44,3 +44,4 @@ flowchart LR
- MCP Tool 节点依赖 MCP 模块。 - MCP Tool 节点依赖 MCP 模块。
- Skill 节点依赖 Skill 模块。 - Skill 节点依赖 Skill 模块。
- 运行记录被运行观测模块消费。 - 运行记录被运行观测模块消费。

View File

@@ -48,3 +48,4 @@
- 依赖模型与路由模块完成 Chat 调用。 - 依赖模型与路由模块完成 Chat 调用。
- 可依赖 Workflow 模块执行复杂流程。 - 可依赖 Workflow 模块执行复杂流程。
- 运行观测模块读取会话关联的运行记录。 - 运行观测模块读取会话关联的运行记录。

View File

@@ -24,3 +24,4 @@ flowchart LR
- `manifest_json` 保存原始能力声明摘要。 - `manifest_json` 保存原始能力声明摘要。
- `schema_json` 保存单个能力输入输出 schema。 - `schema_json` 保存单个能力输入输出 schema。
- Server 停用时,其能力不应被新运行选择。 - Server 停用时,其能力不应被新运行选择。

View File

@@ -21,3 +21,4 @@
- `config_json` 保存运行配置。 - `config_json` 保存运行配置。
- `variable_schema_json` 保存输入输出变量定义。 - `variable_schema_json` 保存输入输出变量定义。
- `test_result_json` 保存最近测试结果摘要。 - `test_result_json` 保存最近测试结果摘要。

View File

@@ -33,3 +33,4 @@
- 观测模块只读业务运行数据。 - 观测模块只读业务运行数据。
- 不保存完整 Prompt 或敏感密钥。 - 不保存完整 Prompt 或敏感密钥。
- 错误信息只保存摘要,详细日志由运行环境负责。 - 错误信息只保存摘要,详细日志由运行环境负责。

View File

@@ -33,7 +33,7 @@
本轮 SQL 脚本属于正式交付范围: 本轮 SQL 脚本属于正式交付范围:
- `script/sql/*.sql`:面向落库执行的模块化脚本。 - `script/*.sql`:面向落库执行的模块化脚本。
- `docs/MODEL_PROVIDER_SCHEMA.sql`:模型平台 schema 汇总。 - `docs/MODEL_PROVIDER_SCHEMA.sql`:模型平台 schema 汇总。
- `docs/STUDIO_PROTOTYPE_SCHEMA.sql`Studio 原型 schema 汇总。 - `docs/STUDIO_PROTOTYPE_SCHEMA.sql`Studio 原型 schema 汇总。
@@ -64,3 +64,4 @@
- 关联后端接口草案。 - 关联后端接口草案。
最终以 `数据库设计/9.模块一致性校验.md` 统一检查跨模块冲突。 最终以 `数据库设计/9.模块一致性校验.md` 统一检查跨模块冲突。

View File

@@ -33,6 +33,9 @@
- 表:`sys_enum``sys_attachment` - 表:`sys_enum``sys_attachment`
- 枚举:`common/enable_status``common/common_status` - 枚举:`common/enable_status``common/common_status`
- 脚本:`script/sql/enum.sql``script/sql/attachment.sql` - 脚本:`script/sql/1.enum.sql``script/sql/2.attachment.sql`
- 后端入口:`SysEnumController``SysAttachmentController``DocumentParserFactory` - 后端入口:`SysEnumController``SysAttachmentController``DocumentParserFactory`
- 前端入口:系统枚举 API、文件上传组件、枚举字典调用 - 前端入口:系统枚举 API、文件上传组件、枚举字典调用

View File

@@ -32,5 +32,8 @@
- 表:`rag_store``rag_document``rag_document_parse_result``rag_chunk``rag_chunk_embedding``rag_store_model_config` - 表:`rag_store``rag_document``rag_document_parse_result``rag_chunk``rag_chunk_embedding``rag_store_model_config`
- 枚举:`rag/parse_status``rag/index_status``rag/chunk_strategy` - 枚举:`rag/parse_status``rag/index_status``rag/chunk_strategy`
- 脚本:`script/sql/rag_store.sql``script/sql/rag_document.sql``script/sql/rag_document_parse_result.sql``script/sql/rag_chunk.sql``script/sql/rag_chunk_embedding.sql` - 脚本:`script/sql/3.rag_store.sql``script/sql/4.rag_document.sql``script/sql/5.rag_document_parse_result.sql``script/sql/6.rag_chunk.sql``script/sql/7.rag_chunk_embedding.sql`
- 前端原型:`KnowledgeWorkspacePage.vue``IngestionPipelinePage.vue` - 前端原型:`KnowledgeWorkspacePage.vue``IngestionPipelinePage.vue`

View File

@@ -35,5 +35,8 @@
- 表:`model_provider``model_config``model_route_rule``rag_store_model_config``model_call_log` - 表:`model_provider``model_config``model_route_rule``rag_store_model_config``model_call_log`
- 枚举:`model_provider/provider_type``protocol_type``model_type``task_type``route_strategy``call_status``health_status` - 枚举:`model_provider/provider_type``protocol_type``model_type``task_type``route_strategy``call_status``health_status`
- 脚本:`docs/MODEL_PROVIDER_SCHEMA.sql``script/sql/model_provider.sql` - 脚本:`docs/MODEL_PROVIDER_SCHEMA.sql``script/sql/9.model_provider.sql`
- 前端原型:`ModelWorkspacePage.vue` - 前端原型:`ModelWorkspacePage.vue`

View File

@@ -23,5 +23,7 @@ Workflow 编排模块负责把知识检索、模型调用、MCP 工具、Skill
- 表:`studio_project``workflow_definition``workflow_version``workflow_run``workflow_run_step` - 表:`studio_project``workflow_definition``workflow_version``workflow_run``workflow_run_step`
- 枚举:`studio/environment``studio/publish_status``workflow/status``workflow/run_status``workflow/node_type` - 枚举:`studio/environment``studio/publish_status``workflow/status``workflow/run_status``workflow/node_type`
- 脚本:`script/sql/studio_project.sql``script/sql/workflow.sql` - 脚本:`script/sql/11.studio_project.sql``script/sql/12.workflow.sql`
- 前端原型:`StudioDashboardPage.vue``WorkflowBuilderPage.vue` - 前端原型:`StudioDashboardPage.vue``WorkflowBuilderPage.vue`

View File

@@ -24,6 +24,9 @@ Agent 会话模块负责 Agent 定义、对话调试、会话持久化、消息
## 4. 关联资料 ## 4. 关联资料
- 表:`agent_definition``agent_session``agent_message``agent_capability_binding` - 表:`agent_definition``agent_session``agent_message``agent_capability_binding`
- 脚本:`script/sql/agent_definition.sql``script/sql/agent_session.sql``script/sql/agent_capability_binding.sql` - 脚本:`script/sql/8.agent_definition.sql``script/sql/13.agent_session.sql``script/sql/16.agent_capability_binding.sql`
- 前端原型:`AgentWorkspacePage.vue` - 前端原型:`AgentWorkspacePage.vue`
- 后端入口:`AgentDefinitionController``AgentDefinitionServiceImpl` - 后端入口:`AgentDefinitionController``AgentDefinitionServiceImpl`

View File

@@ -16,5 +16,7 @@ MCP 能力接入模块负责导入外部 MCP Server读取能力清单
- 表:`mcp_server``mcp_capability` - 表:`mcp_server``mcp_capability`
- 枚举:`mcp/import_type``mcp/capability_type``mcp/health_status` - 枚举:`mcp/import_type``mcp/capability_type``mcp/health_status`
- 脚本:`script/sql/mcp.sql``script/sql/studio_enum.sql` - 脚本:`script/sql/14.mcp.sql``script/sql/18.studio_enum.sql`
- 前端原型:`McpImportPage.vue` - 前端原型:`McpImportPage.vue`

View File

@@ -16,5 +16,7 @@ Skill 编辑模块负责维护可复用的提示词、代码片段、配置和
- 表:`skill_definition``skill_version` - 表:`skill_definition``skill_version`
- 枚举:`skill/skill_type``skill/status``studio/publish_status` - 枚举:`skill/skill_type``skill/status``studio/publish_status`
- 脚本:`script/sql/skill.sql``script/sql/studio_enum.sql` - 脚本:`script/sql/15.skill.sql``script/sql/18.studio_enum.sql`
- 前端原型:`SkillWorkspacePage.vue` - 前端原型:`SkillWorkspacePage.vue`

View File

@@ -15,5 +15,8 @@
## 3. 关联资料 ## 3. 关联资料
- 表:`workflow_run``workflow_run_step``model_call_log``agent_session``agent_message` - 表:`workflow_run``workflow_run_step``model_call_log``agent_session``agent_message`
- 脚本:`script/sql/workflow.sql``script/sql/model_provider.sql``script/sql/agent_session.sql` - 脚本:`script/sql/12.workflow.sql``script/sql/9.model_provider.sql``script/sql/13.agent_session.sql`
- 前端原型:`ObservabilityPage.vue` - 前端原型:`ObservabilityPage.vue`

View File

@@ -20,8 +20,15 @@ CREATE INDEX IF NOT EXISTS idx_studio_project_environment ON studio_project (env
CREATE INDEX IF NOT EXISTS idx_studio_project_publish_status ON studio_project (publish_status); CREATE INDEX IF NOT EXISTS idx_studio_project_publish_status ON studio_project (publish_status);
COMMENT ON TABLE studio_project IS 'Studio项目空间表'; COMMENT ON TABLE studio_project IS 'Studio项目空间表';
COMMENT ON COLUMN studio_project.id IS 'ID';
COMMENT ON COLUMN studio_project.project_code IS '项目编码'; COMMENT ON COLUMN studio_project.project_code IS '项目编码';
COMMENT ON COLUMN studio_project.project_name IS '项目名称'; COMMENT ON COLUMN studio_project.project_name IS '项目名称';
COMMENT ON COLUMN studio_project.environment IS '环境'; COMMENT ON COLUMN studio_project.environment IS '环境';
COMMENT ON COLUMN studio_project.publish_status IS '发布状态'; COMMENT ON COLUMN studio_project.publish_status IS '发布状态';
COMMENT ON COLUMN studio_project.current_version IS '当前发布版本'; COMMENT ON COLUMN studio_project.current_version IS '当前发布版本';
COMMENT ON COLUMN studio_project.version IS '版本';
COMMENT ON COLUMN studio_project.create_time IS '创建时间';
COMMENT ON COLUMN studio_project.update_time IS '更新时间';
COMMENT ON COLUMN studio_project.remark IS '备注';
COMMENT ON COLUMN studio_project.create_by IS '创建者';
COMMENT ON COLUMN studio_project.update_by IS '更新者';

View File

@@ -89,6 +89,65 @@ CREATE INDEX IF NOT EXISTS idx_workflow_run_status ON workflow_run (status);
CREATE INDEX IF NOT EXISTS idx_workflow_run_step_run_id ON workflow_run_step (run_id); CREATE INDEX IF NOT EXISTS idx_workflow_run_step_run_id ON workflow_run_step (run_id);
COMMENT ON TABLE workflow_definition IS 'Workflow定义表'; COMMENT ON TABLE workflow_definition IS 'Workflow定义表';
COMMENT ON COLUMN workflow_definition.id IS 'ID';
COMMENT ON COLUMN workflow_definition.project_id IS '所属项目ID';
COMMENT ON COLUMN workflow_definition.workflow_code IS 'Workflow编码';
COMMENT ON COLUMN workflow_definition.workflow_name IS 'Workflow名称';
COMMENT ON COLUMN workflow_definition.description IS 'Workflow描述';
COMMENT ON COLUMN workflow_definition.bound_agent_id IS '绑定Agent ID';
COMMENT ON COLUMN workflow_definition.status IS '状态';
COMMENT ON COLUMN workflow_definition.version IS '版本';
COMMENT ON COLUMN workflow_definition.create_time IS '创建时间';
COMMENT ON COLUMN workflow_definition.update_time IS '更新时间';
COMMENT ON COLUMN workflow_definition.remark IS '备注';
COMMENT ON COLUMN workflow_definition.create_by IS '创建者';
COMMENT ON COLUMN workflow_definition.update_by IS '更新者';
COMMENT ON TABLE workflow_version IS 'Workflow版本快照表'; COMMENT ON TABLE workflow_version IS 'Workflow版本快照表';
COMMENT ON COLUMN workflow_version.id IS 'ID';
COMMENT ON COLUMN workflow_version.workflow_id IS 'Workflow定义ID';
COMMENT ON COLUMN workflow_version.version_no IS '版本号';
COMMENT ON COLUMN workflow_version.snapshot_name IS '快照名称';
COMMENT ON COLUMN workflow_version.graph_json IS '编排图JSON';
COMMENT ON COLUMN workflow_version.publish_status IS '发布状态';
COMMENT ON COLUMN workflow_version.published_time IS '发布时间';
COMMENT ON COLUMN workflow_version.version IS '版本';
COMMENT ON COLUMN workflow_version.create_time IS '创建时间';
COMMENT ON COLUMN workflow_version.update_time IS '更新时间';
COMMENT ON COLUMN workflow_version.remark IS '备注';
COMMENT ON COLUMN workflow_version.create_by IS '创建者';
COMMENT ON COLUMN workflow_version.update_by IS '更新者';
COMMENT ON TABLE workflow_run IS 'Workflow运行记录表'; COMMENT ON TABLE workflow_run IS 'Workflow运行记录表';
COMMENT ON COLUMN workflow_run.id IS 'ID';
COMMENT ON COLUMN workflow_run.request_id IS '请求唯一ID';
COMMENT ON COLUMN workflow_run.workflow_id IS 'Workflow定义ID';
COMMENT ON COLUMN workflow_run.workflow_version_id IS 'Workflow版本ID';
COMMENT ON COLUMN workflow_run.agent_id IS '执行Agent ID';
COMMENT ON COLUMN workflow_run.run_source IS '运行来源';
COMMENT ON COLUMN workflow_run.status IS '运行状态';
COMMENT ON COLUMN workflow_run.input_json IS '输入参数JSON';
COMMENT ON COLUMN workflow_run.output_json IS '输出结果JSON';
COMMENT ON COLUMN workflow_run.duration_ms IS '耗时(毫秒)';
COMMENT ON COLUMN workflow_run.estimated_cost IS '预估成本';
COMMENT ON COLUMN workflow_run.version IS '版本';
COMMENT ON COLUMN workflow_run.create_time IS '创建时间';
COMMENT ON COLUMN workflow_run.update_time IS '更新时间';
COMMENT ON COLUMN workflow_run.remark IS '备注';
COMMENT ON COLUMN workflow_run.create_by IS '创建者';
COMMENT ON COLUMN workflow_run.update_by IS '更新者';
COMMENT ON TABLE workflow_run_step IS 'Workflow运行步骤表'; COMMENT ON TABLE workflow_run_step IS 'Workflow运行步骤表';
COMMENT ON COLUMN workflow_run_step.id IS 'ID';
COMMENT ON COLUMN workflow_run_step.run_id IS '运行记录ID';
COMMENT ON COLUMN workflow_run_step.node_id IS '节点ID';
COMMENT ON COLUMN workflow_run_step.node_type IS '节点类型';
COMMENT ON COLUMN workflow_run_step.node_name IS '节点名称';
COMMENT ON COLUMN workflow_run_step.status IS '步骤状态';
COMMENT ON COLUMN workflow_run_step.input_json IS '步骤输入JSON';
COMMENT ON COLUMN workflow_run_step.output_json IS '步骤输出JSON';
COMMENT ON COLUMN workflow_run_step.duration_ms IS '耗时(毫秒)';
COMMENT ON COLUMN workflow_run_step.error_message IS '错误信息';
COMMENT ON COLUMN workflow_run_step.version IS '版本';
COMMENT ON COLUMN workflow_run_step.create_time IS '创建时间';
COMMENT ON COLUMN workflow_run_step.update_time IS '更新时间';
COMMENT ON COLUMN workflow_run_step.remark IS '备注';
COMMENT ON COLUMN workflow_run_step.create_by IS '创建者';
COMMENT ON COLUMN workflow_run_step.update_by IS '更新者';

View File

@@ -41,4 +41,29 @@ CREATE INDEX IF NOT EXISTS idx_agent_message_session_id ON agent_message (sessio
CREATE INDEX IF NOT EXISTS idx_agent_message_role ON agent_message (role); CREATE INDEX IF NOT EXISTS idx_agent_message_role ON agent_message (role);
COMMENT ON TABLE agent_session IS 'Agent会话表'; COMMENT ON TABLE agent_session IS 'Agent会话表';
COMMENT ON COLUMN agent_session.id IS 'ID';
COMMENT ON COLUMN agent_session.session_code IS '会话编码';
COMMENT ON COLUMN agent_session.agent_id IS 'Agent ID';
COMMENT ON COLUMN agent_session.workflow_run_id IS '来源Workflow运行ID';
COMMENT ON COLUMN agent_session.title IS '会话标题';
COMMENT ON COLUMN agent_session.status IS '会话状态';
COMMENT ON COLUMN agent_session.metadata_json IS '会话元数据JSON';
COMMENT ON COLUMN agent_session.version IS '版本';
COMMENT ON COLUMN agent_session.create_time IS '创建时间';
COMMENT ON COLUMN agent_session.update_time IS '更新时间';
COMMENT ON COLUMN agent_session.remark IS '备注';
COMMENT ON COLUMN agent_session.create_by IS '创建者';
COMMENT ON COLUMN agent_session.update_by IS '更新者';
COMMENT ON TABLE agent_message IS 'Agent消息表'; COMMENT ON TABLE agent_message IS 'Agent消息表';
COMMENT ON COLUMN agent_message.id IS 'ID';
COMMENT ON COLUMN agent_message.session_id IS '会话ID';
COMMENT ON COLUMN agent_message.role IS '消息角色';
COMMENT ON COLUMN agent_message.content IS '消息内容';
COMMENT ON COLUMN agent_message.citation_json IS '引用信息JSON';
COMMENT ON COLUMN agent_message.token_count IS 'Token数量';
COMMENT ON COLUMN agent_message.version IS '版本';
COMMENT ON COLUMN agent_message.create_time IS '创建时间';
COMMENT ON COLUMN agent_message.update_time IS '更新时间';
COMMENT ON COLUMN agent_message.remark IS '备注';
COMMENT ON COLUMN agent_message.create_by IS '创建者';
COMMENT ON COLUMN agent_message.update_by IS '更新者';

View File

@@ -45,4 +45,34 @@ CREATE INDEX IF NOT EXISTS idx_mcp_capability_server_id ON mcp_capability (serve
CREATE INDEX IF NOT EXISTS idx_mcp_capability_type ON mcp_capability (capability_type); CREATE INDEX IF NOT EXISTS idx_mcp_capability_type ON mcp_capability (capability_type);
COMMENT ON TABLE mcp_server IS 'MCP服务表'; COMMENT ON TABLE mcp_server IS 'MCP服务表';
COMMENT ON COLUMN mcp_server.id IS 'ID';
COMMENT ON COLUMN mcp_server.server_code IS '服务编码';
COMMENT ON COLUMN mcp_server.server_name IS '服务名称';
COMMENT ON COLUMN mcp_server.import_type IS '导入方式';
COMMENT ON COLUMN mcp_server.endpoint_url IS '服务端点地址';
COMMENT ON COLUMN mcp_server.package_name IS '安装包名称';
COMMENT ON COLUMN mcp_server.manifest_json IS 'Manifest声明JSON';
COMMENT ON COLUMN mcp_server.auth_type IS '鉴权类型';
COMMENT ON COLUMN mcp_server.secret_ref IS '密钥引用';
COMMENT ON COLUMN mcp_server.health_status IS '健康状态';
COMMENT ON COLUMN mcp_server.enabled IS '是否启用';
COMMENT ON COLUMN mcp_server.version IS '版本';
COMMENT ON COLUMN mcp_server.create_time IS '创建时间';
COMMENT ON COLUMN mcp_server.update_time IS '更新时间';
COMMENT ON COLUMN mcp_server.remark IS '备注';
COMMENT ON COLUMN mcp_server.create_by IS '创建者';
COMMENT ON COLUMN mcp_server.update_by IS '更新者';
COMMENT ON TABLE mcp_capability IS 'MCP能力表'; COMMENT ON TABLE mcp_capability IS 'MCP能力表';
COMMENT ON COLUMN mcp_capability.id IS 'ID';
COMMENT ON COLUMN mcp_capability.server_id IS '所属服务ID';
COMMENT ON COLUMN mcp_capability.capability_code IS '能力编码';
COMMENT ON COLUMN mcp_capability.capability_name IS '能力名称';
COMMENT ON COLUMN mcp_capability.capability_type IS '能力类型';
COMMENT ON COLUMN mcp_capability.schema_json IS '能力Schema JSON';
COMMENT ON COLUMN mcp_capability.enabled IS '是否启用';
COMMENT ON COLUMN mcp_capability.version IS '版本';
COMMENT ON COLUMN mcp_capability.create_time IS '创建时间';
COMMENT ON COLUMN mcp_capability.update_time IS '更新时间';
COMMENT ON COLUMN mcp_capability.remark IS '备注';
COMMENT ON COLUMN mcp_capability.create_by IS '创建者';
COMMENT ON COLUMN mcp_capability.update_by IS '更新者';

View File

@@ -43,4 +43,32 @@ CREATE INDEX IF NOT EXISTS idx_skill_version_skill_id ON skill_version (skill_id
CREATE INDEX IF NOT EXISTS idx_skill_version_publish_status ON skill_version (publish_status); CREATE INDEX IF NOT EXISTS idx_skill_version_publish_status ON skill_version (publish_status);
COMMENT ON TABLE skill_definition IS 'Skill定义表'; COMMENT ON TABLE skill_definition IS 'Skill定义表';
COMMENT ON COLUMN skill_definition.id IS 'ID';
COMMENT ON COLUMN skill_definition.skill_code IS 'Skill编码';
COMMENT ON COLUMN skill_definition.skill_name IS 'Skill名称';
COMMENT ON COLUMN skill_definition.skill_type IS 'Skill类型';
COMMENT ON COLUMN skill_definition.description IS 'Skill描述';
COMMENT ON COLUMN skill_definition.status IS '状态';
COMMENT ON COLUMN skill_definition.version IS '版本';
COMMENT ON COLUMN skill_definition.create_time IS '创建时间';
COMMENT ON COLUMN skill_definition.update_time IS '更新时间';
COMMENT ON COLUMN skill_definition.remark IS '备注';
COMMENT ON COLUMN skill_definition.create_by IS '创建者';
COMMENT ON COLUMN skill_definition.update_by IS '更新者';
COMMENT ON TABLE skill_version IS 'Skill版本表'; COMMENT ON TABLE skill_version IS 'Skill版本表';
COMMENT ON COLUMN skill_version.id IS 'ID';
COMMENT ON COLUMN skill_version.skill_id IS 'Skill定义ID';
COMMENT ON COLUMN skill_version.version_no IS '版本号';
COMMENT ON COLUMN skill_version.prompt_text IS '提示词内容';
COMMENT ON COLUMN skill_version.code_text IS '代码内容';
COMMENT ON COLUMN skill_version.config_json IS '运行配置JSON';
COMMENT ON COLUMN skill_version.variable_schema_json IS '变量Schema JSON';
COMMENT ON COLUMN skill_version.test_result_json IS '测试结果JSON';
COMMENT ON COLUMN skill_version.publish_status IS '发布状态';
COMMENT ON COLUMN skill_version.published_time IS '发布时间';
COMMENT ON COLUMN skill_version.version IS '版本';
COMMENT ON COLUMN skill_version.create_time IS '创建时间';
COMMENT ON COLUMN skill_version.update_time IS '更新时间';
COMMENT ON COLUMN skill_version.remark IS '备注';
COMMENT ON COLUMN skill_version.create_by IS '创建者';
COMMENT ON COLUMN skill_version.update_by IS '更新者';

View File

@@ -21,3 +21,16 @@ CREATE INDEX IF NOT EXISTS idx_agent_capability_owner ON agent_capability_bindin
CREATE INDEX IF NOT EXISTS idx_agent_capability_type ON agent_capability_binding (capability_type, capability_id); CREATE INDEX IF NOT EXISTS idx_agent_capability_type ON agent_capability_binding (capability_type, capability_id);
COMMENT ON TABLE agent_capability_binding IS 'Agent能力绑定表'; COMMENT ON TABLE agent_capability_binding IS 'Agent能力绑定表';
COMMENT ON COLUMN agent_capability_binding.id IS 'ID';
COMMENT ON COLUMN agent_capability_binding.owner_type IS '绑定主体类型';
COMMENT ON COLUMN agent_capability_binding.owner_id IS '绑定主体ID';
COMMENT ON COLUMN agent_capability_binding.capability_type IS '能力类型';
COMMENT ON COLUMN agent_capability_binding.capability_id IS '能力ID';
COMMENT ON COLUMN agent_capability_binding.enabled IS '是否启用';
COMMENT ON COLUMN agent_capability_binding.config_json IS '绑定配置JSON';
COMMENT ON COLUMN agent_capability_binding.version IS '版本';
COMMENT ON COLUMN agent_capability_binding.create_time IS '创建时间';
COMMENT ON COLUMN agent_capability_binding.update_time IS '更新时间';
COMMENT ON COLUMN agent_capability_binding.remark IS '备注';
COMMENT ON COLUMN agent_capability_binding.create_by IS '创建者';
COMMENT ON COLUMN agent_capability_binding.update_by IS '更新者';

View File

@@ -0,0 +1,239 @@
-- 模型平台核心表。
-- 与 docs/MODEL_PROVIDER_SCHEMA.sql 保持一致,作为后续落库执行入口。
CREATE TABLE IF NOT EXISTS model_provider (
id BIGSERIAL PRIMARY KEY,
provider_code VARCHAR(64) NOT NULL,
provider_name VARCHAR(100) NOT NULL,
provider_type VARCHAR(50) NOT NULL,
protocol_type VARCHAR(50) NOT NULL DEFAULT 'OPENAI_COMPATIBLE',
base_url VARCHAR(500) NOT NULL,
auth_type VARCHAR(50) NOT NULL DEFAULT 'BEARER_TOKEN',
secret_ref VARCHAR(200),
api_key_cipher TEXT,
timeout_ms INTEGER NOT NULL DEFAULT 60000,
priority INTEGER NOT NULL DEFAULT 100,
enabled BOOLEAN NOT NULL DEFAULT TRUE,
health_status VARCHAR(50) NOT NULL DEFAULT 'UNKNOWN',
last_health_check_time TIMESTAMP,
version INTEGER NOT NULL DEFAULT 1,
create_time TIMESTAMP,
update_time TIMESTAMP,
remark VARCHAR(500) DEFAULT '',
create_by VARCHAR(64),
update_by VARCHAR(64),
CONSTRAINT uk_model_provider_code UNIQUE (provider_code)
);
CREATE TABLE IF NOT EXISTS model_config (
id BIGSERIAL PRIMARY KEY,
provider_id BIGINT NOT NULL,
model_code VARCHAR(100) NOT NULL,
model_name VARCHAR(200) NOT NULL,
upstream_model VARCHAR(200) NOT NULL,
model_type VARCHAR(50) NOT NULL,
context_window INTEGER,
max_output_tokens INTEGER,
embedding_dimension INTEGER,
input_price_per_1k NUMERIC(12, 8),
output_price_per_1k NUMERIC(12, 8),
local_model BOOLEAN NOT NULL DEFAULT FALSE,
default_model BOOLEAN NOT NULL DEFAULT FALSE,
capabilities_json JSONB NOT NULL DEFAULT '{}'::jsonb,
options_json JSONB NOT NULL DEFAULT '{}'::jsonb,
enabled BOOLEAN NOT NULL DEFAULT TRUE,
version INTEGER NOT NULL DEFAULT 1,
create_time TIMESTAMP,
update_time TIMESTAMP,
remark VARCHAR(500) DEFAULT '',
create_by VARCHAR(64),
update_by VARCHAR(64),
CONSTRAINT uk_model_config_provider_code UNIQUE (provider_id, model_code),
CONSTRAINT fk_model_config_provider_id FOREIGN KEY (provider_id) REFERENCES model_provider (id)
);
CREATE TABLE IF NOT EXISTS model_route_rule (
id BIGSERIAL PRIMARY KEY,
route_code VARCHAR(100) NOT NULL,
route_name VARCHAR(100) NOT NULL,
task_type VARCHAR(50) NOT NULL,
match_scope VARCHAR(50) NOT NULL DEFAULT 'GLOBAL',
scope_id BIGINT,
primary_model_id BIGINT NOT NULL,
fallback_model_ids_json JSONB NOT NULL DEFAULT '[]'::jsonb,
route_strategy VARCHAR(50) NOT NULL DEFAULT 'MANUAL',
max_latency_ms INTEGER,
enabled BOOLEAN NOT NULL DEFAULT TRUE,
version INTEGER NOT NULL DEFAULT 1,
create_time TIMESTAMP,
update_time TIMESTAMP,
remark VARCHAR(500) DEFAULT '',
create_by VARCHAR(64),
update_by VARCHAR(64),
CONSTRAINT uk_model_route_rule_code UNIQUE (route_code),
CONSTRAINT fk_model_route_primary_model_id FOREIGN KEY (primary_model_id) REFERENCES model_config (id)
);
CREATE TABLE IF NOT EXISTS rag_store_model_config (
id BIGSERIAL PRIMARY KEY,
store_id BIGINT NOT NULL,
embedding_model_id BIGINT NOT NULL,
embedding_dimension INTEGER NOT NULL DEFAULT 1024,
chunk_strategy INTEGER,
chunk_size INTEGER,
chunk_overlap INTEGER,
delimiter VARCHAR(50),
active BOOLEAN NOT NULL DEFAULT TRUE,
index_version INTEGER NOT NULL DEFAULT 1,
version INTEGER NOT NULL DEFAULT 1,
create_time TIMESTAMP,
update_time TIMESTAMP,
remark VARCHAR(500) DEFAULT '',
create_by VARCHAR(64),
update_by VARCHAR(64),
CONSTRAINT uk_rag_store_model_config_store_active UNIQUE (store_id, active),
CONSTRAINT fk_rag_store_model_config_store_id FOREIGN KEY (store_id) REFERENCES rag_store (id),
CONSTRAINT fk_rag_store_model_config_embedding_model_id FOREIGN KEY (embedding_model_id) REFERENCES model_config (id)
);
CREATE TABLE IF NOT EXISTS model_call_log (
id BIGSERIAL PRIMARY KEY,
request_id VARCHAR(64) NOT NULL,
provider_id BIGINT,
model_id BIGINT,
task_type VARCHAR(50) NOT NULL,
biz_type VARCHAR(50),
biz_id VARCHAR(100),
call_type VARCHAR(50) NOT NULL,
status VARCHAR(50) NOT NULL,
prompt_tokens INTEGER,
completion_tokens INTEGER,
total_tokens INTEGER,
estimated_cost NUMERIC(14, 8),
duration_ms INTEGER,
request_hash VARCHAR(64),
error_code VARCHAR(100),
error_message VARCHAR(1000),
version INTEGER NOT NULL DEFAULT 1,
create_time TIMESTAMP,
update_time TIMESTAMP,
remark VARCHAR(500) DEFAULT '',
create_by VARCHAR(64),
update_by VARCHAR(64),
CONSTRAINT uk_model_call_log_request_id UNIQUE (request_id)
);
CREATE INDEX IF NOT EXISTS idx_model_config_provider_id ON model_config (provider_id);
CREATE INDEX IF NOT EXISTS idx_model_config_model_type ON model_config (model_type);
CREATE INDEX IF NOT EXISTS idx_model_route_task_scope ON model_route_rule (task_type, match_scope, scope_id);
CREATE INDEX IF NOT EXISTS idx_rag_store_model_config_store_id ON rag_store_model_config (store_id);
CREATE INDEX IF NOT EXISTS idx_model_call_log_request_id ON model_call_log (request_id);
CREATE INDEX IF NOT EXISTS idx_model_call_log_task_type ON model_call_log (task_type);
COMMENT ON TABLE model_provider IS '模型服务商配置表';
COMMENT ON COLUMN model_provider.id IS 'ID';
COMMENT ON COLUMN model_provider.provider_code IS '服务商编码';
COMMENT ON COLUMN model_provider.provider_name IS '服务商名称';
COMMENT ON COLUMN model_provider.provider_type IS '服务商类型';
COMMENT ON COLUMN model_provider.protocol_type IS '协议类型';
COMMENT ON COLUMN model_provider.base_url IS '服务基础地址';
COMMENT ON COLUMN model_provider.auth_type IS '鉴权类型';
COMMENT ON COLUMN model_provider.secret_ref IS '密钥环境变量引用';
COMMENT ON COLUMN model_provider.api_key_cipher IS '密钥密文';
COMMENT ON COLUMN model_provider.timeout_ms IS '超时时间(毫秒)';
COMMENT ON COLUMN model_provider.priority IS '优先级';
COMMENT ON COLUMN model_provider.enabled IS '是否启用';
COMMENT ON COLUMN model_provider.health_status IS '健康状态';
COMMENT ON COLUMN model_provider.last_health_check_time IS '最近健康检查时间';
COMMENT ON COLUMN model_provider.version IS '版本';
COMMENT ON COLUMN model_provider.create_time IS '创建时间';
COMMENT ON COLUMN model_provider.update_time IS '更新时间';
COMMENT ON COLUMN model_provider.remark IS '备注';
COMMENT ON COLUMN model_provider.create_by IS '创建者';
COMMENT ON COLUMN model_provider.update_by IS '更新者';
COMMENT ON TABLE model_config IS '模型配置表';
COMMENT ON COLUMN model_config.id IS 'ID';
COMMENT ON COLUMN model_config.provider_id IS '服务商ID';
COMMENT ON COLUMN model_config.model_code IS '模型编码';
COMMENT ON COLUMN model_config.model_name IS '模型名称';
COMMENT ON COLUMN model_config.upstream_model IS '上游模型名称';
COMMENT ON COLUMN model_config.model_type IS '模型类型';
COMMENT ON COLUMN model_config.context_window IS '上下文窗口大小';
COMMENT ON COLUMN model_config.max_output_tokens IS '最大输出Token数';
COMMENT ON COLUMN model_config.embedding_dimension IS '向量维度';
COMMENT ON COLUMN model_config.input_price_per_1k IS '输入千Token单价';
COMMENT ON COLUMN model_config.output_price_per_1k IS '输出千Token单价';
COMMENT ON COLUMN model_config.local_model IS '是否本地模型';
COMMENT ON COLUMN model_config.default_model IS '是否默认模型';
COMMENT ON COLUMN model_config.capabilities_json IS '能力配置JSON';
COMMENT ON COLUMN model_config.options_json IS '扩展选项JSON';
COMMENT ON COLUMN model_config.enabled IS '是否启用';
COMMENT ON COLUMN model_config.version IS '版本';
COMMENT ON COLUMN model_config.create_time IS '创建时间';
COMMENT ON COLUMN model_config.update_time IS '更新时间';
COMMENT ON COLUMN model_config.remark IS '备注';
COMMENT ON COLUMN model_config.create_by IS '创建者';
COMMENT ON COLUMN model_config.update_by IS '更新者';
COMMENT ON TABLE model_route_rule IS '模型路由规则表';
COMMENT ON COLUMN model_route_rule.id IS 'ID';
COMMENT ON COLUMN model_route_rule.route_code IS '路由规则编码';
COMMENT ON COLUMN model_route_rule.route_name IS '路由规则名称';
COMMENT ON COLUMN model_route_rule.task_type IS '任务类型';
COMMENT ON COLUMN model_route_rule.match_scope IS '匹配范围';
COMMENT ON COLUMN model_route_rule.scope_id IS '匹配范围业务ID';
COMMENT ON COLUMN model_route_rule.primary_model_id IS '主模型ID';
COMMENT ON COLUMN model_route_rule.fallback_model_ids_json IS '降级模型ID列表JSON';
COMMENT ON COLUMN model_route_rule.route_strategy IS '路由策略';
COMMENT ON COLUMN model_route_rule.max_latency_ms IS '最大延迟限制(毫秒)';
COMMENT ON COLUMN model_route_rule.enabled IS '是否启用';
COMMENT ON COLUMN model_route_rule.version IS '版本';
COMMENT ON COLUMN model_route_rule.create_time IS '创建时间';
COMMENT ON COLUMN model_route_rule.update_time IS '更新时间';
COMMENT ON COLUMN model_route_rule.remark IS '备注';
COMMENT ON COLUMN model_route_rule.create_by IS '创建者';
COMMENT ON COLUMN model_route_rule.update_by IS '更新者';
COMMENT ON TABLE rag_store_model_config IS '知识库模型配置表';
COMMENT ON COLUMN rag_store_model_config.id IS 'ID';
COMMENT ON COLUMN rag_store_model_config.store_id IS '知识库ID';
COMMENT ON COLUMN rag_store_model_config.embedding_model_id IS 'Embedding模型ID';
COMMENT ON COLUMN rag_store_model_config.embedding_dimension IS '向量维度';
COMMENT ON COLUMN rag_store_model_config.chunk_strategy IS '切片策略';
COMMENT ON COLUMN rag_store_model_config.chunk_size IS '切片大小';
COMMENT ON COLUMN rag_store_model_config.chunk_overlap IS '切片重叠大小';
COMMENT ON COLUMN rag_store_model_config.delimiter IS '切片分隔符';
COMMENT ON COLUMN rag_store_model_config.active IS '是否生效';
COMMENT ON COLUMN rag_store_model_config.index_version IS '索引版本号';
COMMENT ON COLUMN rag_store_model_config.version IS '版本';
COMMENT ON COLUMN rag_store_model_config.create_time IS '创建时间';
COMMENT ON COLUMN rag_store_model_config.update_time IS '更新时间';
COMMENT ON COLUMN rag_store_model_config.remark IS '备注';
COMMENT ON COLUMN rag_store_model_config.create_by IS '创建者';
COMMENT ON COLUMN rag_store_model_config.update_by IS '更新者';
COMMENT ON TABLE model_call_log IS '模型调用日志表';
COMMENT ON COLUMN model_call_log.id IS 'ID';
COMMENT ON COLUMN model_call_log.request_id IS '请求唯一ID';
COMMENT ON COLUMN model_call_log.provider_id IS '服务商ID';
COMMENT ON COLUMN model_call_log.model_id IS '模型ID';
COMMENT ON COLUMN model_call_log.task_type IS '任务类型';
COMMENT ON COLUMN model_call_log.biz_type IS '业务类型';
COMMENT ON COLUMN model_call_log.biz_id IS '业务ID';
COMMENT ON COLUMN model_call_log.call_type IS '调用类型';
COMMENT ON COLUMN model_call_log.status IS '调用状态';
COMMENT ON COLUMN model_call_log.prompt_tokens IS '输入Token数';
COMMENT ON COLUMN model_call_log.completion_tokens IS '输出Token数';
COMMENT ON COLUMN model_call_log.total_tokens IS '总Token数';
COMMENT ON COLUMN model_call_log.estimated_cost IS '预估成本';
COMMENT ON COLUMN model_call_log.duration_ms IS '耗时(毫秒)';
COMMENT ON COLUMN model_call_log.request_hash IS '请求哈希';
COMMENT ON COLUMN model_call_log.error_code IS '错误码';
COMMENT ON COLUMN model_call_log.error_message IS '错误信息摘要';
COMMENT ON COLUMN model_call_log.version IS '版本';
COMMENT ON COLUMN model_call_log.create_time IS '创建时间';
COMMENT ON COLUMN model_call_log.update_time IS '更新时间';
COMMENT ON COLUMN model_call_log.remark IS '备注';
COMMENT ON COLUMN model_call_log.create_by IS '创建者';
COMMENT ON COLUMN model_call_log.update_by IS '更新者';

View File

@@ -1,131 +0,0 @@
-- 模型平台核心表。
-- 与 docs/MODEL_PROVIDER_SCHEMA.sql 保持一致,作为后续落库执行入口。
CREATE TABLE IF NOT EXISTS model_provider (
id BIGSERIAL PRIMARY KEY,
provider_code VARCHAR(64) NOT NULL,
provider_name VARCHAR(100) NOT NULL,
provider_type VARCHAR(50) NOT NULL,
protocol_type VARCHAR(50) NOT NULL DEFAULT 'OPENAI_COMPATIBLE',
base_url VARCHAR(500) NOT NULL,
auth_type VARCHAR(50) NOT NULL DEFAULT 'BEARER_TOKEN',
secret_ref VARCHAR(200),
api_key_cipher TEXT,
timeout_ms INTEGER NOT NULL DEFAULT 60000,
priority INTEGER NOT NULL DEFAULT 100,
enabled BOOLEAN NOT NULL DEFAULT TRUE,
health_status VARCHAR(50) NOT NULL DEFAULT 'UNKNOWN',
last_health_check_time TIMESTAMP,
version INTEGER NOT NULL DEFAULT 1,
create_time TIMESTAMP,
update_time TIMESTAMP,
remark VARCHAR(500) DEFAULT '',
create_by VARCHAR(64),
update_by VARCHAR(64),
CONSTRAINT uk_model_provider_code UNIQUE (provider_code)
);
CREATE TABLE IF NOT EXISTS model_config (
id BIGSERIAL PRIMARY KEY,
provider_id BIGINT NOT NULL,
model_code VARCHAR(100) NOT NULL,
model_name VARCHAR(200) NOT NULL,
upstream_model VARCHAR(200) NOT NULL,
model_type VARCHAR(50) NOT NULL,
context_window INTEGER,
max_output_tokens INTEGER,
embedding_dimension INTEGER,
input_price_per_1k NUMERIC(12, 8),
output_price_per_1k NUMERIC(12, 8),
local_model BOOLEAN NOT NULL DEFAULT FALSE,
default_model BOOLEAN NOT NULL DEFAULT FALSE,
capabilities_json JSONB NOT NULL DEFAULT '{}'::jsonb,
options_json JSONB NOT NULL DEFAULT '{}'::jsonb,
enabled BOOLEAN NOT NULL DEFAULT TRUE,
version INTEGER NOT NULL DEFAULT 1,
create_time TIMESTAMP,
update_time TIMESTAMP,
remark VARCHAR(500) DEFAULT '',
create_by VARCHAR(64),
update_by VARCHAR(64),
CONSTRAINT uk_model_config_provider_code UNIQUE (provider_id, model_code),
CONSTRAINT fk_model_config_provider_id FOREIGN KEY (provider_id) REFERENCES model_provider (id)
);
CREATE TABLE IF NOT EXISTS model_route_rule (
id BIGSERIAL PRIMARY KEY,
route_code VARCHAR(100) NOT NULL,
route_name VARCHAR(100) NOT NULL,
task_type VARCHAR(50) NOT NULL,
match_scope VARCHAR(50) NOT NULL DEFAULT 'GLOBAL',
scope_id BIGINT,
primary_model_id BIGINT NOT NULL,
fallback_model_ids_json JSONB NOT NULL DEFAULT '[]'::jsonb,
route_strategy VARCHAR(50) NOT NULL DEFAULT 'MANUAL',
max_latency_ms INTEGER,
enabled BOOLEAN NOT NULL DEFAULT TRUE,
version INTEGER NOT NULL DEFAULT 1,
create_time TIMESTAMP,
update_time TIMESTAMP,
remark VARCHAR(500) DEFAULT '',
create_by VARCHAR(64),
update_by VARCHAR(64),
CONSTRAINT uk_model_route_rule_code UNIQUE (route_code),
CONSTRAINT fk_model_route_primary_model_id FOREIGN KEY (primary_model_id) REFERENCES model_config (id)
);
CREATE TABLE IF NOT EXISTS rag_store_model_config (
id BIGSERIAL PRIMARY KEY,
store_id BIGINT NOT NULL,
embedding_model_id BIGINT NOT NULL,
embedding_dimension INTEGER NOT NULL DEFAULT 1024,
chunk_strategy INTEGER,
chunk_size INTEGER,
chunk_overlap INTEGER,
delimiter VARCHAR(50),
active BOOLEAN NOT NULL DEFAULT TRUE,
index_version INTEGER NOT NULL DEFAULT 1,
version INTEGER NOT NULL DEFAULT 1,
create_time TIMESTAMP,
update_time TIMESTAMP,
remark VARCHAR(500) DEFAULT '',
create_by VARCHAR(64),
update_by VARCHAR(64),
CONSTRAINT uk_rag_store_model_config_store_active UNIQUE (store_id, active),
CONSTRAINT fk_rag_store_model_config_store_id FOREIGN KEY (store_id) REFERENCES rag_store (id),
CONSTRAINT fk_rag_store_model_config_embedding_model_id FOREIGN KEY (embedding_model_id) REFERENCES model_config (id)
);
CREATE TABLE IF NOT EXISTS model_call_log (
id BIGSERIAL PRIMARY KEY,
request_id VARCHAR(64) NOT NULL,
provider_id BIGINT,
model_id BIGINT,
task_type VARCHAR(50) NOT NULL,
biz_type VARCHAR(50),
biz_id VARCHAR(100),
call_type VARCHAR(50) NOT NULL,
status VARCHAR(50) NOT NULL,
prompt_tokens INTEGER,
completion_tokens INTEGER,
total_tokens INTEGER,
estimated_cost NUMERIC(14, 8),
duration_ms INTEGER,
request_hash VARCHAR(64),
error_code VARCHAR(100),
error_message VARCHAR(1000),
version INTEGER NOT NULL DEFAULT 1,
create_time TIMESTAMP,
update_time TIMESTAMP,
remark VARCHAR(500) DEFAULT '',
create_by VARCHAR(64),
update_by VARCHAR(64),
CONSTRAINT uk_model_call_log_request_id UNIQUE (request_id)
);
CREATE INDEX IF NOT EXISTS idx_model_config_provider_id ON model_config (provider_id);
CREATE INDEX IF NOT EXISTS idx_model_config_model_type ON model_config (model_type);
CREATE INDEX IF NOT EXISTS idx_model_route_task_scope ON model_route_rule (task_type, match_scope, scope_id);
CREATE INDEX IF NOT EXISTS idx_rag_store_model_config_store_id ON rag_store_model_config (store_id);
CREATE INDEX IF NOT EXISTS idx_model_call_log_request_id ON model_call_log (request_id);
CREATE INDEX IF NOT EXISTS idx_model_call_log_task_type ON model_call_log (task_type);