From 6fe12098010609f1173ddf7e8676c5308ffd2c71 Mon Sep 17 00:00:00 2001 From: bruce Date: Mon, 1 Jun 2026 02:10:34 +0800 Subject: [PATCH] =?UTF-8?q?docs(database):=20=E8=A7=84=E8=8C=83=E8=84=9A?= =?UTF-8?q?=E6=9C=AC=E9=A1=BA=E5=BA=8F=E5=B9=B6=E8=A1=A5=E5=85=A8=E5=AD=97?= =?UTF-8?q?=E6=AE=B5=E6=B3=A8=E9=87=8A?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- docs/ARCHITECTURE.md | 1 + docs/MODEL_PROVIDER_DESIGN.md | 1 + docs/MODEL_PROVIDER_REQUIREMENTS.md | 1 + docs/MODEL_PROVIDER_SCHEMA.sql | 1 + docs/ROADMAP.md | 1 + docs/STUDIO_PROTOTYPE_SCHEMA.sql | 168 ++++++++++++ docs/前端实现文档/0.前端模块总览.md | 1 + docs/前端实现文档/1.系统基础模块前端实现.md | 1 + .../2.知识资产与文件解析模块前端实现.md | 1 + docs/前端实现文档/3.模型与路由模块前端实现.md | 1 + .../4.Workflow编排模块前端实现.md | 1 + docs/前端实现文档/5.Agent会话模块前端实现.md | 1 + .../前端实现文档/6.MCP能力接入模块前端实现.md | 1 + docs/前端实现文档/7.Skill编辑模块前端实现.md | 1 + docs/前端实现文档/8.运行观测模块前端实现.md | 1 + docs/后端实现文档/0.后端模块总览.md | 4 +- docs/后端实现文档/1.系统基础模块后端实现.md | 1 + .../2.知识资产与文件解析模块后端实现.md | 1 + docs/后端实现文档/3.模型与路由模块后端实现.md | 1 + .../4.Workflow编排模块后端实现.md | 1 + docs/后端实现文档/5.Agent会话模块后端实现.md | 1 + .../后端实现文档/6.MCP能力接入模块后端实现.md | 1 + docs/后端实现文档/7.Skill编辑模块后端实现.md | 1 + docs/后端实现文档/8.运行观测模块后端实现.md | 1 + docs/数据库设计/0.数据库与枚举总览.md | 21 +- docs/数据库设计/2.知识资产数据库设计.md | 13 +- docs/数据库设计/3.模型与路由数据库设计.md | 5 +- docs/数据库设计/4.Workflow数据库设计.md | 6 +- docs/数据库设计/5.Agent会话数据库设计.md | 9 +- docs/数据库设计/6.MCP数据库设计.md | 6 +- docs/数据库设计/7.Skill数据库设计.md | 6 +- docs/数据库设计/8.运行观测数据库设计.md | 9 +- docs/数据库设计/9.模块一致性校验.md | 23 +- docs/设计文档/0.模块设计总览.md | 1 + docs/设计文档/1.系统基础模块设计.md | 1 + docs/设计文档/2.知识资产与文件解析模块设计.md | 1 + docs/设计文档/3.模型与路由模块设计.md | 1 + docs/设计文档/4.Workflow编排模块设计.md | 1 + docs/设计文档/5.Agent会话模块设计.md | 1 + docs/设计文档/6.MCP能力接入模块设计.md | 1 + docs/设计文档/7.Skill编辑模块设计.md | 1 + docs/设计文档/8.运行观测模块设计.md | 1 + docs/需求分析/0.模块总览.md | 3 +- docs/需求分析/1.系统基础模块需求.md | 5 +- docs/需求分析/2.知识资产与文件解析模块需求.md | 5 +- docs/需求分析/3.模型与路由模块需求.md | 5 +- docs/需求分析/4.Workflow编排模块需求.md | 4 +- docs/需求分析/5.Agent会话模块需求.md | 5 +- docs/需求分析/6.MCP能力接入模块需求.md | 4 +- docs/需求分析/7.Skill编辑模块需求.md | 4 +- docs/需求分析/8.运行观测模块需求.md | 5 +- script/sql/{enum.sql => 1.enum.sql} | 0 ..._patch.sql => 10.model_call_log_patch.sql} | 0 ...udio_project.sql => 11.studio_project.sql} | 7 + script/sql/{workflow.sql => 12.workflow.sql} | 59 +++++ ...agent_session.sql => 13.agent_session.sql} | 25 ++ script/sql/{mcp.sql => 14.mcp.sql} | 30 +++ script/sql/{skill.sql => 15.skill.sql} | 28 ++ ...ng.sql => 16.agent_capability_binding.sql} | 13 + ...num.sql => 17.rag_chunk_strategy_enum.sql} | 0 .../{studio_enum.sql => 18.studio_enum.sql} | 0 .../sql/{attachment.sql => 2.attachment.sql} | 0 script/sql/{rag_store.sql => 3.rag_store.sql} | 0 .../{rag_document.sql => 4.rag_document.sql} | 0 ...lt.sql => 5.rag_document_parse_result.sql} | 0 script/sql/{rag_chunk.sql => 6.rag_chunk.sql} | 0 ...mbedding.sql => 7.rag_chunk_embedding.sql} | 0 ..._definition.sql => 8.agent_definition.sql} | 0 script/sql/9.model_provider.sql | 239 ++++++++++++++++++ script/sql/model_provider.sql | 131 ---------- 70 files changed, 695 insertions(+), 178 deletions(-) rename script/sql/{enum.sql => 1.enum.sql} (100%) rename script/sql/{model_call_log_patch.sql => 10.model_call_log_patch.sql} (100%) rename script/sql/{studio_project.sql => 11.studio_project.sql} (74%) rename script/sql/{workflow.sql => 12.workflow.sql} (51%) rename script/sql/{agent_session.sql => 13.agent_session.sql} (54%) rename script/sql/{mcp.sql => 14.mcp.sql} (51%) rename script/sql/{skill.sql => 15.skill.sql} (51%) rename script/sql/{agent_capability_binding.sql => 16.agent_capability_binding.sql} (50%) rename script/sql/{rag_chunk_strategy_enum.sql => 17.rag_chunk_strategy_enum.sql} (100%) rename script/sql/{studio_enum.sql => 18.studio_enum.sql} (100%) rename script/sql/{attachment.sql => 2.attachment.sql} (100%) rename script/sql/{rag_store.sql => 3.rag_store.sql} (100%) rename script/sql/{rag_document.sql => 4.rag_document.sql} (100%) rename script/sql/{rag_document_parse_result.sql => 5.rag_document_parse_result.sql} (100%) rename script/sql/{rag_chunk.sql => 6.rag_chunk.sql} (100%) rename script/sql/{rag_chunk_embedding.sql => 7.rag_chunk_embedding.sql} (100%) rename script/sql/{agent_definition.sql => 8.agent_definition.sql} (100%) create mode 100644 script/sql/9.model_provider.sql delete mode 100644 script/sql/model_provider.sql diff --git a/docs/ARCHITECTURE.md b/docs/ARCHITECTURE.md index be12836..1c868d5 100644 --- a/docs/ARCHITECTURE.md +++ b/docs/ARCHITECTURE.md @@ -238,3 +238,4 @@ 3. 建设 Agent 工具注册与调用协议,补齐任务状态与执行日志。 4. 补齐索引任务、重试、重建索引和前端任务视图。 5. 衔接模型供应商、Spring AI 适配层、工作流编排和前端管理台。 + diff --git a/docs/MODEL_PROVIDER_DESIGN.md b/docs/MODEL_PROVIDER_DESIGN.md index 1c94fba..f847e45 100644 --- a/docs/MODEL_PROVIDER_DESIGN.md +++ b/docs/MODEL_PROVIDER_DESIGN.md @@ -896,3 +896,4 @@ OpenAI-compatible 客户端使用 Mock Web Server 或类似方式测试: - Ollama Embeddings: https://docs.ollama.com/capabilities/embeddings - Spring AI OpenAI Embeddings: https://docs.spring.io/spring-ai/reference/api/embeddings/openai-embeddings.html - SiliconFlow Embedding 模型列表: https://www.siliconflow.com/models/embedding + diff --git a/docs/MODEL_PROVIDER_REQUIREMENTS.md b/docs/MODEL_PROVIDER_REQUIREMENTS.md index b51cb05..7714e76 100644 --- a/docs/MODEL_PROVIDER_REQUIREMENTS.md +++ b/docs/MODEL_PROVIDER_REQUIREMENTS.md @@ -446,3 +446,4 @@ Embedding 批量生成应支持批处理,减少网络请求次数。批量大 - Ollama Embeddings: https://docs.ollama.com/capabilities/embeddings - Spring AI OpenAI Embeddings: https://docs.spring.io/spring-ai/reference/api/embeddings/openai-embeddings.html - SiliconFlow Embedding 模型列表: https://www.siliconflow.com/models/embedding + diff --git a/docs/MODEL_PROVIDER_SCHEMA.sql b/docs/MODEL_PROVIDER_SCHEMA.sql index 072005d..e59395b 100644 --- a/docs/MODEL_PROVIDER_SCHEMA.sql +++ b/docs/MODEL_PROVIDER_SCHEMA.sql @@ -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.create_by IS '创建者'; COMMENT ON COLUMN model_call_log.update_by IS '更新者'; + diff --git a/docs/ROADMAP.md b/docs/ROADMAP.md index 4d86d9d..ffaab7a 100644 --- a/docs/ROADMAP.md +++ b/docs/ROADMAP.md @@ -149,3 +149,4 @@ Agent 主线能力按以下顺序继续推进: ### 里程碑 4:平台管理化 - 补齐前端占位页面联调与后台配置能力,形成完整平台雏形。 + diff --git a/docs/STUDIO_PROTOTYPE_SCHEMA.sql b/docs/STUDIO_PROTOTYPE_SCHEMA.sql index 9a7a28c..d482873 100644 --- a/docs/STUDIO_PROTOTYPE_SCHEMA.sql +++ b/docs/STUDIO_PROTOTYPE_SCHEMA.sql @@ -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); 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 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 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 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 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 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 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 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 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 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 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 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 '更新者'; + diff --git a/docs/前端实现文档/0.前端模块总览.md b/docs/前端实现文档/0.前端模块总览.md index 75f296a..92a8516 100644 --- a/docs/前端实现文档/0.前端模块总览.md +++ b/docs/前端实现文档/0.前端模块总览.md @@ -25,3 +25,4 @@ Studio 原型页面位于 `frontend/src/pages/studio/`,路由集中在 `fronte - Long ID 继续按字符串处理,避免 JS 精度问题。 - 枚举值按整型协议处理,页面展示通过枚举字典或常量映射。 - 管理后台保持信息密度、稳定布局和清晰状态提示。 + diff --git a/docs/前端实现文档/1.系统基础模块前端实现.md b/docs/前端实现文档/1.系统基础模块前端实现.md index b40b7d5..61c2f61 100644 --- a/docs/前端实现文档/1.系统基础模块前端实现.md +++ b/docs/前端实现文档/1.系统基础模块前端实现.md @@ -26,3 +26,4 @@ - 文件解析管道复用附件上传能力。 - 知识资产、模型路由、Workflow、Agent 等页面复用枚举字典。 - 运行观测页面复用统一状态颜色和错误提示格式。 + diff --git a/docs/前端实现文档/2.知识资产与文件解析模块前端实现.md b/docs/前端实现文档/2.知识资产与文件解析模块前端实现.md index 73bde6e..8c90e10 100644 --- a/docs/前端实现文档/2.知识资产与文件解析模块前端实现.md +++ b/docs/前端实现文档/2.知识资产与文件解析模块前端实现.md @@ -43,3 +43,4 @@ - 索引中显示进行中状态,不允许误标为可检索。 - 切片参数变更后提示需要重建索引。 - Embedding 模型变更后提示会影响当前知识库向量空间。 + diff --git a/docs/前端实现文档/3.模型与路由模块前端实现.md b/docs/前端实现文档/3.模型与路由模块前端实现.md index 1efbcf0..e5d8905 100644 --- a/docs/前端实现文档/3.模型与路由模块前端实现.md +++ b/docs/前端实现文档/3.模型与路由模块前端实现.md @@ -28,3 +28,4 @@ - Embedding 模型维度变更时提示知识库需要重建索引。 - 草稿路由不得用于生产发布就绪校验。 - Fallback 模型为空时在发布检查中提示风险。 + diff --git a/docs/前端实现文档/4.Workflow编排模块前端实现.md b/docs/前端实现文档/4.Workflow编排模块前端实现.md index bbbaf68..beb4972 100644 --- a/docs/前端实现文档/4.Workflow编排模块前端实现.md +++ b/docs/前端实现文档/4.Workflow编排模块前端实现.md @@ -29,3 +29,4 @@ - 运行测试生成 `workflow_run` 和 `workflow_run_step`。 - 发布前调用发布就绪检查。 - 节点 Inspector 只编辑当前节点配置,不直接改其他节点。 + diff --git a/docs/前端实现文档/5.Agent会话模块前端实现.md b/docs/前端实现文档/5.Agent会话模块前端实现.md index 148d4ba..166b16c 100644 --- a/docs/前端实现文档/5.Agent会话模块前端实现.md +++ b/docs/前端实现文档/5.Agent会话模块前端实现.md @@ -31,3 +31,4 @@ - 未召回知识切片时给出明确提示。 - 模型调用失败时展示 `request_id` 和错误摘要。 - 会话保存失败不得清空用户输入。 + diff --git a/docs/前端实现文档/6.MCP能力接入模块前端实现.md b/docs/前端实现文档/6.MCP能力接入模块前端实现.md index 405b748..d3ef9ed 100644 --- a/docs/前端实现文档/6.MCP能力接入模块前端实现.md +++ b/docs/前端实现文档/6.MCP能力接入模块前端实现.md @@ -17,3 +17,4 @@ - 能力预览成功后才允许保存。 - 未授权能力显示待授权状态。 - 已停用 Server 的能力不可被 Workflow 新增选择。 + diff --git a/docs/前端实现文档/7.Skill编辑模块前端实现.md b/docs/前端实现文档/7.Skill编辑模块前端实现.md index 1268005..98c0858 100644 --- a/docs/前端实现文档/7.Skill编辑模块前端实现.md +++ b/docs/前端实现文档/7.Skill编辑模块前端实现.md @@ -17,3 +17,4 @@ - 草稿变更后提示未发布。 - 测试结果保存到版本草稿。 - Workflow 只能选择发布版本或明确选择草稿测试。 + diff --git a/docs/前端实现文档/8.运行观测模块前端实现.md b/docs/前端实现文档/8.运行观测模块前端实现.md index 8c8da5d..0e28ca3 100644 --- a/docs/前端实现文档/8.运行观测模块前端实现.md +++ b/docs/前端实现文档/8.运行观测模块前端实现.md @@ -26,3 +26,4 @@ - 异常运行高亮展示。 - 步骤日志按执行时间排序。 - 导出日志不包含密钥或完整敏感请求体。 + diff --git a/docs/后端实现文档/0.后端模块总览.md b/docs/后端实现文档/0.后端模块总览.md index 67b7611..1009978 100644 --- a/docs/后端实现文档/0.后端模块总览.md +++ b/docs/后端实现文档/0.后端模块总览.md @@ -32,5 +32,7 @@ - Java 枚举定义。 - `sys_enum` 初始化测试。 -- `script/sql/studio_enum.sql` 或对应模块枚举脚本。 +- `script/sql/18.studio_enum.sql` 或对应模块枚举脚本。 - 前端枚举常量或字典接口。 + + diff --git a/docs/后端实现文档/1.系统基础模块后端实现.md b/docs/后端实现文档/1.系统基础模块后端实现.md index d5a76bd..c909891 100644 --- a/docs/后端实现文档/1.系统基础模块后端实现.md +++ b/docs/后端实现文档/1.系统基础模块后端实现.md @@ -37,3 +37,4 @@ Controller 只接收请求 DTO 或基础参数,不直接暴露实体。响应 - 不调整 `sys_enum` 表字段。 - 新增枚举时同步初始化测试和 SQL 初始化脚本。 - 文档解析器新增类型时,只扩展解析器实现和工厂注册,不影响 RAG 业务服务。 + diff --git a/docs/后端实现文档/2.知识资产与文件解析模块后端实现.md b/docs/后端实现文档/2.知识资产与文件解析模块后端实现.md index f9b14e8..7418eda 100644 --- a/docs/后端实现文档/2.知识资产与文件解析模块后端实现.md +++ b/docs/后端实现文档/2.知识资产与文件解析模块后端实现.md @@ -37,3 +37,4 @@ Studio 聚合接口后续新增在知识资产模块,不替代旧接口。 - 只有解析成功的文档允许切片。 - 向量化必须读取知识库生效模型配置。 - 重新切片或模型变更后,索引状态必须回到待索引或索引中。 + diff --git a/docs/后端实现文档/3.模型与路由模块后端实现.md b/docs/后端实现文档/3.模型与路由模块后端实现.md index c33ef10..93466fe 100644 --- a/docs/后端实现文档/3.模型与路由模块后端实现.md +++ b/docs/后端实现文档/3.模型与路由模块后端实现.md @@ -39,3 +39,4 @@ - 路由主模型必须启用。 - 路由任务类型必须来自枚举。 - 知识库 Embedding 维度必须与模型配置一致。 + diff --git a/docs/后端实现文档/4.Workflow编排模块后端实现.md b/docs/后端实现文档/4.Workflow编排模块后端实现.md index 0a5c727..036722a 100644 --- a/docs/后端实现文档/4.Workflow编排模块后端实现.md +++ b/docs/后端实现文档/4.Workflow编排模块后端实现.md @@ -36,3 +36,4 @@ - 节点类型必须来自枚举。 - LLM 节点必须配置任务类型。 - Knowledge Retrieval 节点必须配置知识库或继承项目默认知识库。 + diff --git a/docs/后端实现文档/5.Agent会话模块后端实现.md b/docs/后端实现文档/5.Agent会话模块后端实现.md index dfd7ffd..1dff4a0 100644 --- a/docs/后端实现文档/5.Agent会话模块后端实现.md +++ b/docs/后端实现文档/5.Agent会话模块后端实现.md @@ -27,3 +27,4 @@ - 消息内容不能为空。 - `citation_json` 必须是数组结构。 - 会话关闭后不允许继续写入消息。 + diff --git a/docs/后端实现文档/6.MCP能力接入模块后端实现.md b/docs/后端实现文档/6.MCP能力接入模块后端实现.md index 60b1fe5..fabb7e7 100644 --- a/docs/后端实现文档/6.MCP能力接入模块后端实现.md +++ b/docs/后端实现文档/6.MCP能力接入模块后端实现.md @@ -18,3 +18,4 @@ - 能力编码在 Server 下唯一。 - 导入方式必须来自枚举。 - 能力 schema 必须为合法 JSON。 + diff --git a/docs/后端实现文档/7.Skill编辑模块后端实现.md b/docs/后端实现文档/7.Skill编辑模块后端实现.md index fd7fc3e..866f5ac 100644 --- a/docs/后端实现文档/7.Skill编辑模块后端实现.md +++ b/docs/后端实现文档/7.Skill编辑模块后端实现.md @@ -18,3 +18,4 @@ - 版本号在 Skill 内唯一。 - Prompt、Code、Config 至少一种非空。 - 变量 schema 必须为合法 JSON。 + diff --git a/docs/后端实现文档/8.运行观测模块后端实现.md b/docs/后端实现文档/8.运行观测模块后端实现.md index 3dd8538..1c02901 100644 --- a/docs/后端实现文档/8.运行观测模块后端实现.md +++ b/docs/后端实现文档/8.运行观测模块后端实现.md @@ -22,3 +22,4 @@ - 只允许查询脱敏后的运行摘要。 - 导出接口必须过滤密钥和完整请求内容。 - requestId 不存在时返回空结果而不是内部异常。 + diff --git a/docs/数据库设计/0.数据库与枚举总览.md b/docs/数据库设计/0.数据库与枚举总览.md index bfc6f01..d814055 100644 --- a/docs/数据库设计/0.数据库与枚举总览.md +++ b/docs/数据库设计/0.数据库与枚举总览.md @@ -8,7 +8,7 @@ | 脚本位置 | 作用 | |----------|------| -| `script/sql/` | 可执行的模块化建表或初始化脚本 | +| `script/` | 可执行的模块化建表或初始化脚本 | | `docs/MODEL_PROVIDER_SCHEMA.sql` | 模型平台 schema 汇总 | | `docs/STUDIO_PROTOTYPE_SCHEMA.sql` | Studio 原型 schema 汇总 | @@ -16,7 +16,7 @@ ## 3. 必须保持不变的内容 -`script/sql/enum.sql` 中 `sys_enum` 表结构不变: +`script/sql/1.enum.sql` 中 `sys_enum` 表结构不变: - `catalog` - `type` @@ -37,13 +37,13 @@ Java 枚举契约 `PersistableSysEnumDefinition` 的格式不变。后续如果 | 脚本 | 内容 | |------|------| -| `script/sql/studio_project.sql` | Studio 项目空间表 | -| `script/sql/workflow.sql` | Workflow 定义、版本、运行、步骤日志 | -| `script/sql/mcp.sql` | MCP Server 与能力表 | -| `script/sql/skill.sql` | Skill 定义与版本表 | -| `script/sql/agent_session.sql` | Agent 会话与消息表 | -| `script/sql/agent_capability_binding.sql` | Agent/Workflow 与 MCP/Skill/知识能力绑定表 | -| `script/sql/studio_enum.sql` | Studio 相关枚举初始化 | +| `script/sql/11.studio_project.sql` | Studio 项目空间表 | +| `script/sql/12.workflow.sql` | Workflow 定义、版本、运行、步骤日志 | +| `script/sql/14.mcp.sql` | MCP Server 与能力表 | +| `script/sql/15.skill.sql` | Skill 定义与版本表 | +| `script/sql/13.agent_session.sql` | Agent 会话与消息表 | +| `script/sql/16.agent_capability_binding.sql` | Agent/Workflow 与 MCP/Skill/知识能力绑定表 | +| `script/sql/18.studio_enum.sql` | Studio 相关枚举初始化 | ## 5. 校验规则 @@ -52,3 +52,6 @@ Java 枚举契约 `PersistableSysEnumDefinition` 的格式不变。后续如果 - 需要跨模块引用的字段必须在文档中说明外键关系。 - JSON 扩展字段统一使用 `JSONB`。 - 枚举初始化脚本必须使用 `ON CONFLICT (catalog, type, name) DO UPDATE`,与现有脚本风格一致。 + + + diff --git a/docs/数据库设计/2.知识资产数据库设计.md b/docs/数据库设计/2.知识资产数据库设计.md index bc99be8..8ceca51 100644 --- a/docs/数据库设计/2.知识资产数据库设计.md +++ b/docs/数据库设计/2.知识资产数据库设计.md @@ -13,11 +13,11 @@ ## 2. 脚本清单 -- `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` - `docs/MODEL_PROVIDER_SCHEMA.sql` 中的 `rag_store_model_config` ## 3. 枚举组 @@ -35,3 +35,6 @@ - `rag_chunk` 使用 `(document_id, chunk_index)` 保证同文档切片序号唯一。 - `rag_chunk_embedding` 使用 `(chunk_id, embedding_model)` 防止同模型重复写入。 - RAG 现有脚本与本文档一致,本轮不调整 `sys_enum` 格式。 + + + diff --git a/docs/数据库设计/3.模型与路由数据库设计.md b/docs/数据库设计/3.模型与路由数据库设计.md index e6d2687..9aae8d3 100644 --- a/docs/数据库设计/3.模型与路由数据库设计.md +++ b/docs/数据库设计/3.模型与路由数据库设计.md @@ -33,5 +33,8 @@ ## 4. 脚本 - `docs/MODEL_PROVIDER_SCHEMA.sql` 是完整 schema 快照。 -- `script/sql/model_provider.sql` 是后续执行入口。 +- `script/sql/9.model_provider.sql` 是后续执行入口。 - 若模型枚举变更,需要同步 Java 枚举、初始化测试和 SQL 枚举脚本。 + + + diff --git a/docs/数据库设计/4.Workflow数据库设计.md b/docs/数据库设计/4.Workflow数据库设计.md index 431421d..18b4d3c 100644 --- a/docs/数据库设计/4.Workflow数据库设计.md +++ b/docs/数据库设计/4.Workflow数据库设计.md @@ -20,8 +20,8 @@ ## 3. 脚本 -- `script/sql/studio_project.sql` -- `script/sql/workflow.sql` +- `script/sql/11.studio_project.sql` +- `script/sql/12.workflow.sql` - `docs/STUDIO_PROTOTYPE_SCHEMA.sql` ## 4. JSON 字段 @@ -31,3 +31,5 @@ - `workflow_run_step.input_json` 与 `output_json` 保存节点级输入输出摘要。 JSON 字段只保存运行必要摘要,不保存敏感密钥。 + + diff --git a/docs/数据库设计/5.Agent会话数据库设计.md b/docs/数据库设计/5.Agent会话数据库设计.md index 874ab15..2219e01 100644 --- a/docs/数据库设计/5.Agent会话数据库设计.md +++ b/docs/数据库设计/5.Agent会话数据库设计.md @@ -26,7 +26,10 @@ ## 4. 脚本 -- `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` - `docs/STUDIO_PROTOTYPE_SCHEMA.sql` + + + diff --git a/docs/数据库设计/6.MCP数据库设计.md b/docs/数据库设计/6.MCP数据库设计.md index 14ca145..63eff88 100644 --- a/docs/数据库设计/6.MCP数据库设计.md +++ b/docs/数据库设计/6.MCP数据库设计.md @@ -15,6 +15,8 @@ ## 3. 脚本 -- `script/sql/mcp.sql` +- `script/sql/14.mcp.sql` - `docs/STUDIO_PROTOTYPE_SCHEMA.sql` -- `script/sql/studio_enum.sql` +- `script/sql/18.studio_enum.sql` + + diff --git a/docs/数据库设计/7.Skill数据库设计.md b/docs/数据库设计/7.Skill数据库设计.md index 266e1ab..40ecccd 100644 --- a/docs/数据库设计/7.Skill数据库设计.md +++ b/docs/数据库设计/7.Skill数据库设计.md @@ -15,6 +15,8 @@ ## 3. 脚本 -- `script/sql/skill.sql` +- `script/sql/15.skill.sql` - `docs/STUDIO_PROTOTYPE_SCHEMA.sql` -- `script/sql/studio_enum.sql` +- `script/sql/18.studio_enum.sql` + + diff --git a/docs/数据库设计/8.运行观测数据库设计.md b/docs/数据库设计/8.运行观测数据库设计.md index bc06b67..86a8e8c 100644 --- a/docs/数据库设计/8.运行观测数据库设计.md +++ b/docs/数据库设计/8.运行观测数据库设计.md @@ -23,7 +23,10 @@ 索引分散在: -- `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` - `docs/STUDIO_PROTOTYPE_SCHEMA.sql` + + + diff --git a/docs/数据库设计/9.模块一致性校验.md b/docs/数据库设计/9.模块一致性校验.md index 7265084..0810f28 100644 --- a/docs/数据库设计/9.模块一致性校验.md +++ b/docs/数据库设计/9.模块一致性校验.md @@ -9,7 +9,7 @@ - `数据库设计/` - `前端实现文档/` - `后端实现文档/` -- `script/sql/*.sql` +- `script/*.sql` - `docs/MODEL_PROVIDER_SCHEMA.sql` - `docs/STUDIO_PROTOTYPE_SCHEMA.sql` @@ -21,17 +21,17 @@ | 模块 | 汇总 schema | 模块化脚本 | 结论 | |------|-------------|------------|------| -| 模型与路由 | `docs/MODEL_PROVIDER_SCHEMA.sql` | `script/sql/model_provider.sql` | 已补齐 `rag_store_model_config.store_id` 外键 | -| Studio 项目 | `docs/STUDIO_PROTOTYPE_SCHEMA.sql` | `script/sql/studio_project.sql` | 表、唯一约束、索引一致 | -| Workflow | `docs/STUDIO_PROTOTYPE_SCHEMA.sql` | `script/sql/workflow.sql` | 定义、版本、运行、步骤表一致 | -| Agent 会话 | `docs/STUDIO_PROTOTYPE_SCHEMA.sql` | `script/sql/agent_session.sql` | 会话和消息表一致 | -| 能力绑定 | `docs/STUDIO_PROTOTYPE_SCHEMA.sql` | `script/sql/agent_capability_binding.sql` | 唯一约束和索引一致 | -| MCP | `docs/STUDIO_PROTOTYPE_SCHEMA.sql` | `script/sql/mcp.sql` | Server 与 Capability 表一致 | -| Skill | `docs/STUDIO_PROTOTYPE_SCHEMA.sql` | `script/sql/skill.sql` | 定义与版本表一致 | +| 模型与路由 | `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/11.studio_project.sql` | 表、唯一约束、索引一致 | +| Workflow | `docs/STUDIO_PROTOTYPE_SCHEMA.sql` | `script/sql/12.workflow.sql` | 定义、版本、运行、步骤表一致 | +| Agent 会话 | `docs/STUDIO_PROTOTYPE_SCHEMA.sql` | `script/sql/13.agent_session.sql` | 会话和消息表一致 | +| 能力绑定 | `docs/STUDIO_PROTOTYPE_SCHEMA.sql` | `script/sql/16.agent_capability_binding.sql` | 唯一约束和索引一致 | +| MCP | `docs/STUDIO_PROTOTYPE_SCHEMA.sql` | `script/sql/14.mcp.sql` | Server 与 Capability 表一致 | +| Skill | `docs/STUDIO_PROTOTYPE_SCHEMA.sql` | `script/sql/15.skill.sql` | 定义与版本表一致 | ## 4. 枚举一致性 -`script/sql/studio_enum.sql` 保持 `sys_enum` 既有格式: +`script/sql/18.studio_enum.sql` 保持 `sys_enum` 既有格式: - `catalog` - `type` @@ -75,5 +75,8 @@ - Java 枚举类。 - `SysEnumDataInitTests` 初始化入口。 - `EnumDefinitionTests` 稳定性断言。 -- `script/sql/studio_enum.sql` 初始化数据。 +- `script/sql/18.studio_enum.sql` 初始化数据。 - 前端字典或常量映射。 + + + diff --git a/docs/设计文档/0.模块设计总览.md b/docs/设计文档/0.模块设计总览.md index c24cd99..d812e8f 100644 --- a/docs/设计文档/0.模块设计总览.md +++ b/docs/设计文档/0.模块设计总览.md @@ -48,3 +48,4 @@ flowchart LR - 枚举设计必须保留 `sys_enum` 当前格式。 - 数据库中状态字段允许继续使用 `VARCHAR` 保存枚举代码,前后端协议层对结构化枚举继续传整型值。 - 页面展示文案来自枚举定义或前端常量映射,不在业务逻辑中散落硬编码。 + diff --git a/docs/设计文档/1.系统基础模块设计.md b/docs/设计文档/1.系统基础模块设计.md index d700c8f..ac31dd8 100644 --- a/docs/设计文档/1.系统基础模块设计.md +++ b/docs/设计文档/1.系统基础模块设计.md @@ -30,3 +30,4 @@ ## 5. 依赖关系 系统基础模块不能依赖其他业务模块。业务模块可依赖系统基础模块的枚举、附件、解析、返回体和异常处理。 + diff --git a/docs/设计文档/2.知识资产与文件解析模块设计.md b/docs/设计文档/2.知识资产与文件解析模块设计.md index bdfe63f..bcd88eb 100644 --- a/docs/设计文档/2.知识资产与文件解析模块设计.md +++ b/docs/设计文档/2.知识资产与文件解析模块设计.md @@ -42,3 +42,4 @@ flowchart LR - `rag_chunk_embedding` 必须记录模型和维度,防止向量空间混用。 - 知识库模型配置由模型与路由模块维护,但知识资产模块负责消费。 - 检索配置要面向 Workflow 和 Agent 复用,不绑定某一个页面。 + diff --git a/docs/设计文档/3.模型与路由模块设计.md b/docs/设计文档/3.模型与路由模块设计.md index 4ab9d62..a743c39 100644 --- a/docs/设计文档/3.模型与路由模块设计.md +++ b/docs/设计文档/3.模型与路由模块设计.md @@ -45,3 +45,4 @@ - 知识资产模块使用 Embedding 路由和知识库模型绑定。 - Workflow 和 Agent 使用 Chat 路由。 - 运行观测读取 `model_call_log`。 + diff --git a/docs/设计文档/4.Workflow编排模块设计.md b/docs/设计文档/4.Workflow编排模块设计.md index 7cb7b31..b22fb69 100644 --- a/docs/设计文档/4.Workflow编排模块设计.md +++ b/docs/设计文档/4.Workflow编排模块设计.md @@ -44,3 +44,4 @@ flowchart LR - MCP Tool 节点依赖 MCP 模块。 - Skill 节点依赖 Skill 模块。 - 运行记录被运行观测模块消费。 + diff --git a/docs/设计文档/5.Agent会话模块设计.md b/docs/设计文档/5.Agent会话模块设计.md index b3c84a7..d50baa1 100644 --- a/docs/设计文档/5.Agent会话模块设计.md +++ b/docs/设计文档/5.Agent会话模块设计.md @@ -48,3 +48,4 @@ - 依赖模型与路由模块完成 Chat 调用。 - 可依赖 Workflow 模块执行复杂流程。 - 运行观测模块读取会话关联的运行记录。 + diff --git a/docs/设计文档/6.MCP能力接入模块设计.md b/docs/设计文档/6.MCP能力接入模块设计.md index 54f7fe6..58b0e28 100644 --- a/docs/设计文档/6.MCP能力接入模块设计.md +++ b/docs/设计文档/6.MCP能力接入模块设计.md @@ -24,3 +24,4 @@ flowchart LR - `manifest_json` 保存原始能力声明摘要。 - `schema_json` 保存单个能力输入输出 schema。 - Server 停用时,其能力不应被新运行选择。 + diff --git a/docs/设计文档/7.Skill编辑模块设计.md b/docs/设计文档/7.Skill编辑模块设计.md index 59974e1..808b754 100644 --- a/docs/设计文档/7.Skill编辑模块设计.md +++ b/docs/设计文档/7.Skill编辑模块设计.md @@ -21,3 +21,4 @@ - `config_json` 保存运行配置。 - `variable_schema_json` 保存输入输出变量定义。 - `test_result_json` 保存最近测试结果摘要。 + diff --git a/docs/设计文档/8.运行观测模块设计.md b/docs/设计文档/8.运行观测模块设计.md index cdcaadb..377ac5f 100644 --- a/docs/设计文档/8.运行观测模块设计.md +++ b/docs/设计文档/8.运行观测模块设计.md @@ -33,3 +33,4 @@ - 观测模块只读业务运行数据。 - 不保存完整 Prompt 或敏感密钥。 - 错误信息只保存摘要,详细日志由运行环境负责。 + diff --git a/docs/需求分析/0.模块总览.md b/docs/需求分析/0.模块总览.md index 02d4f6d..260ba66 100644 --- a/docs/需求分析/0.模块总览.md +++ b/docs/需求分析/0.模块总览.md @@ -33,7 +33,7 @@ 本轮 SQL 脚本属于正式交付范围: -- `script/sql/*.sql`:面向落库执行的模块化脚本。 +- `script/*.sql`:面向落库执行的模块化脚本。 - `docs/MODEL_PROVIDER_SCHEMA.sql`:模型平台 schema 汇总。 - `docs/STUDIO_PROTOTYPE_SCHEMA.sql`:Studio 原型 schema 汇总。 @@ -64,3 +64,4 @@ - 关联后端接口草案。 最终以 `数据库设计/9.模块一致性校验.md` 统一检查跨模块冲突。 + diff --git a/docs/需求分析/1.系统基础模块需求.md b/docs/需求分析/1.系统基础模块需求.md index ff665a9..2ea30d8 100644 --- a/docs/需求分析/1.系统基础模块需求.md +++ b/docs/需求分析/1.系统基础模块需求.md @@ -33,6 +33,9 @@ - 表:`sys_enum`、`sys_attachment` - 枚举:`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` - 前端入口:系统枚举 API、文件上传组件、枚举字典调用 + + + diff --git a/docs/需求分析/2.知识资产与文件解析模块需求.md b/docs/需求分析/2.知识资产与文件解析模块需求.md index f4b4bd3..f738a04 100644 --- a/docs/需求分析/2.知识资产与文件解析模块需求.md +++ b/docs/需求分析/2.知识资产与文件解析模块需求.md @@ -32,5 +32,8 @@ - 表:`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` -- 脚本:`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` + + + diff --git a/docs/需求分析/3.模型与路由模块需求.md b/docs/需求分析/3.模型与路由模块需求.md index a720cb7..06fd3c8 100644 --- a/docs/需求分析/3.模型与路由模块需求.md +++ b/docs/需求分析/3.模型与路由模块需求.md @@ -35,5 +35,8 @@ - 表:`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` -- 脚本:`docs/MODEL_PROVIDER_SCHEMA.sql`、`script/sql/model_provider.sql` +- 脚本:`docs/MODEL_PROVIDER_SCHEMA.sql`、`script/sql/9.model_provider.sql` - 前端原型:`ModelWorkspacePage.vue` + + + diff --git a/docs/需求分析/4.Workflow编排模块需求.md b/docs/需求分析/4.Workflow编排模块需求.md index 3d7c0ad..56c6257 100644 --- a/docs/需求分析/4.Workflow编排模块需求.md +++ b/docs/需求分析/4.Workflow编排模块需求.md @@ -23,5 +23,7 @@ Workflow 编排模块负责把知识检索、模型调用、MCP 工具、Skill - 表:`studio_project`、`workflow_definition`、`workflow_version`、`workflow_run`、`workflow_run_step` - 枚举:`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` + + diff --git a/docs/需求分析/5.Agent会话模块需求.md b/docs/需求分析/5.Agent会话模块需求.md index 8dacef9..6fb8d01 100644 --- a/docs/需求分析/5.Agent会话模块需求.md +++ b/docs/需求分析/5.Agent会话模块需求.md @@ -24,6 +24,9 @@ Agent 会话模块负责 Agent 定义、对话调试、会话持久化、消息 ## 4. 关联资料 - 表:`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` - 后端入口:`AgentDefinitionController`、`AgentDefinitionServiceImpl` + + + diff --git a/docs/需求分析/6.MCP能力接入模块需求.md b/docs/需求分析/6.MCP能力接入模块需求.md index b6298bb..dc1e782 100644 --- a/docs/需求分析/6.MCP能力接入模块需求.md +++ b/docs/需求分析/6.MCP能力接入模块需求.md @@ -16,5 +16,7 @@ MCP 能力接入模块负责导入外部 MCP Server,读取能力清单,并 - 表:`mcp_server`、`mcp_capability` - 枚举:`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` + + diff --git a/docs/需求分析/7.Skill编辑模块需求.md b/docs/需求分析/7.Skill编辑模块需求.md index 3f63926..61a1271 100644 --- a/docs/需求分析/7.Skill编辑模块需求.md +++ b/docs/需求分析/7.Skill编辑模块需求.md @@ -16,5 +16,7 @@ Skill 编辑模块负责维护可复用的提示词、代码片段、配置和 - 表:`skill_definition`、`skill_version` - 枚举:`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` + + diff --git a/docs/需求分析/8.运行观测模块需求.md b/docs/需求分析/8.运行观测模块需求.md index d330bf0..9f3de29 100644 --- a/docs/需求分析/8.运行观测模块需求.md +++ b/docs/需求分析/8.运行观测模块需求.md @@ -15,5 +15,8 @@ ## 3. 关联资料 - 表:`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` + + + diff --git a/script/sql/enum.sql b/script/sql/1.enum.sql similarity index 100% rename from script/sql/enum.sql rename to script/sql/1.enum.sql diff --git a/script/sql/model_call_log_patch.sql b/script/sql/10.model_call_log_patch.sql similarity index 100% rename from script/sql/model_call_log_patch.sql rename to script/sql/10.model_call_log_patch.sql diff --git a/script/sql/studio_project.sql b/script/sql/11.studio_project.sql similarity index 74% rename from script/sql/studio_project.sql rename to script/sql/11.studio_project.sql index 953988e..fc7fd2e 100644 --- a/script/sql/studio_project.sql +++ b/script/sql/11.studio_project.sql @@ -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); 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 '更新者'; diff --git a/script/sql/workflow.sql b/script/sql/12.workflow.sql similarity index 51% rename from script/sql/workflow.sql rename to script/sql/12.workflow.sql index da45fc6..db57143 100644 --- a/script/sql/workflow.sql +++ b/script/sql/12.workflow.sql @@ -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); 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 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 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 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 '更新者'; diff --git a/script/sql/agent_session.sql b/script/sql/13.agent_session.sql similarity index 54% rename from script/sql/agent_session.sql rename to script/sql/13.agent_session.sql index 56166b0..9b5b693 100644 --- a/script/sql/agent_session.sql +++ b/script/sql/13.agent_session.sql @@ -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); 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 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 '更新者'; diff --git a/script/sql/mcp.sql b/script/sql/14.mcp.sql similarity index 51% rename from script/sql/mcp.sql rename to script/sql/14.mcp.sql index c990764..63dd701 100644 --- a/script/sql/mcp.sql +++ b/script/sql/14.mcp.sql @@ -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); 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 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 '更新者'; diff --git a/script/sql/skill.sql b/script/sql/15.skill.sql similarity index 51% rename from script/sql/skill.sql rename to script/sql/15.skill.sql index bc31678..f968b20 100644 --- a/script/sql/skill.sql +++ b/script/sql/15.skill.sql @@ -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); 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 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 '更新者'; diff --git a/script/sql/agent_capability_binding.sql b/script/sql/16.agent_capability_binding.sql similarity index 50% rename from script/sql/agent_capability_binding.sql rename to script/sql/16.agent_capability_binding.sql index c13e0c2..bafbc7b 100644 --- a/script/sql/agent_capability_binding.sql +++ b/script/sql/16.agent_capability_binding.sql @@ -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); 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 '更新者'; diff --git a/script/sql/rag_chunk_strategy_enum.sql b/script/sql/17.rag_chunk_strategy_enum.sql similarity index 100% rename from script/sql/rag_chunk_strategy_enum.sql rename to script/sql/17.rag_chunk_strategy_enum.sql diff --git a/script/sql/studio_enum.sql b/script/sql/18.studio_enum.sql similarity index 100% rename from script/sql/studio_enum.sql rename to script/sql/18.studio_enum.sql diff --git a/script/sql/attachment.sql b/script/sql/2.attachment.sql similarity index 100% rename from script/sql/attachment.sql rename to script/sql/2.attachment.sql diff --git a/script/sql/rag_store.sql b/script/sql/3.rag_store.sql similarity index 100% rename from script/sql/rag_store.sql rename to script/sql/3.rag_store.sql diff --git a/script/sql/rag_document.sql b/script/sql/4.rag_document.sql similarity index 100% rename from script/sql/rag_document.sql rename to script/sql/4.rag_document.sql diff --git a/script/sql/rag_document_parse_result.sql b/script/sql/5.rag_document_parse_result.sql similarity index 100% rename from script/sql/rag_document_parse_result.sql rename to script/sql/5.rag_document_parse_result.sql diff --git a/script/sql/rag_chunk.sql b/script/sql/6.rag_chunk.sql similarity index 100% rename from script/sql/rag_chunk.sql rename to script/sql/6.rag_chunk.sql diff --git a/script/sql/rag_chunk_embedding.sql b/script/sql/7.rag_chunk_embedding.sql similarity index 100% rename from script/sql/rag_chunk_embedding.sql rename to script/sql/7.rag_chunk_embedding.sql diff --git a/script/sql/agent_definition.sql b/script/sql/8.agent_definition.sql similarity index 100% rename from script/sql/agent_definition.sql rename to script/sql/8.agent_definition.sql diff --git a/script/sql/9.model_provider.sql b/script/sql/9.model_provider.sql new file mode 100644 index 0000000..7e3129a --- /dev/null +++ b/script/sql/9.model_provider.sql @@ -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 '更新者'; diff --git a/script/sql/model_provider.sql b/script/sql/model_provider.sql deleted file mode 100644 index fa29c67..0000000 --- a/script/sql/model_provider.sql +++ /dev/null @@ -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);