feat: 完善 Prompt 管理与生成流程配置

This commit is contained in:
王鹏
2026-07-15 17:31:13 +08:00
parent 84d3c8fc05
commit de98ea59b1
93 changed files with 3474 additions and 980 deletions

View File

@@ -10,11 +10,9 @@
- 在线调试:草稿、已发布和已退役版本均可测试,记录输入、输出、模型、耗时、成功状态和人工评分。
- A/B 测试:同一模板下选择两个不可变版本,用相同输入运行对比,统计成功次数、平均耗时与人工评分。
## 初始化 V1
## 唯一来源
首次启用后,在 Prompt 中心点击“初始化 V1”。系统会把每个生成类型各自的业务 Prompt 写成 `V1` 并立即发布,包括对应任务、输出格式和业务约束的 System Prompt、Builder 合约、`{{input}}` User Prompt 模板和模型网关配置
初始化是幂等的:处理完全没有版本的模板;早期由系统生成且内容同质化的唯一 V1 会被安全修复。已有人工草稿、后续版本或实验版本的模板都会跳过,不覆盖后台维护内容。
Prompt 中心的数据库发布版是运行时唯一来源。系统不提供代码内置 Prompt、初始化 V1 或缺失回退;模板没有当前已发布版本、被停用或版本内容校验失败时,生成任务会明确失败。首个版本应通过部署 SQL 导入,或由管理员在 Prompt 中心创建并发布
## 数据库升级
@@ -25,13 +23,13 @@
3. `sql/factory_prompt_lab.sql`
4. `sql/prompt_registry_menu.sql`
然后将 `factory.prompt-registry.database-enabled`(环境变量 `FACTORY_PROMPT_REGISTRY_DATABASE_ENABLED`)设为 `true`,数据库中的已发布版本才会替代内置 Prompt。关闭时仍使用应用内置资源版本作为安全后备
完成升级后,确认每个正在使用的生成类型都有当前已发布版本。运行时始终读取数据库,不存在切换到代码内置 Prompt 的配置项
## 结构化上下文契约
前台 AI 生成入口只向 Prompt Registry 传递 JSON 动态上下文。角色设定、输出格式、字段约束、禁止项和纠错规则均由 Prompt 中心的 System Prompt 与 User Prompt 模板控制User Prompt 模板必须保留 `{{input}}`
当前可执行契约使用 `context-json:<generateType>:v1`。升级前发布`legacy-builder:*` 版本依赖 Java 内置规则,系统会将其视为过期版本并安全回退到资源模板;需要在 Prompt 中心基于新的 JSON 契约创建并发布新版本,才能重新由数据库版本接管
当前版本通常使用 `context-json:<generateType>:v1`契约和 Prompt 正文均随后台版本保存;升级前的 `legacy-builder:*` 版本不会触发代码回退,应在 Prompt 中心创建并发布完整的新版本
## 权限

View File

@@ -1195,20 +1195,20 @@ P1-B 已完成,见下方记录。
- 新增 `factory_prompt_template``factory_prompt_version`:模板保存稳定 Prompt code、生成类型、启用状态和当前发布指针版本保存不可变的 system Prompt、user Prompt builder 合约、provider/model、规范化 SHA-256 和发布状态。
- Prompt 版本正文创建后不可更新;版本号在模板行锁内单调递增,草稿发布与历史版本回滚会在同一事务中退役旧版本、切换状态并移动当前指针。
- 新增 `PromptFingerprintService`内置发布、数据库发布和发布服务复用同一规范化指纹算法;运行时会重新计算数据库内容哈希并拒绝漂移。
- 新增主运行实现 `DatabasePromptRegistry`显式开启数据库开关后按生成类型解析当前发布,并支持按 Prompt code/version 精确解析已发布或已退役版本,保证排队任务可重放。
- 数据库功能未开启、没有当前数据库发布或模板被停用时继续回落到内置 Prompt,确保迁移前和逐步启用期间不阻断现有生成链路
- 发布与回滚前校验内容指纹、当前代码真实实现的 user Prompt builder 合约和已注册 ModelGateway provider避免发布无法执行的虚假版本。
- 新增 `PromptFingerprintService`,数据库发布和发布服务复用同一规范化指纹算法;运行时会重新计算数据库内容哈希并拒绝漂移。
- 新增主运行实现 `DatabasePromptRegistry`始终按生成类型解析数据库当前发布,并支持按 Prompt code/version 精确解析已发布或已退役版本,保证排队任务可重放。
- 没有当前数据库发布或模板被停用时直接失败,不回落到代码内置 Prompt。
- 发布与回滚前校验内容指纹和已注册 ModelGateway provider避免发布无法执行的虚假版本。
- 新增带权限控制的模板列表、详情、创建、元数据编辑、版本创建、发布和回滚 APIPrompt code 与生成类型创建后不可变。
- 新增 RuoYi Prompt 管理页面和 API可搜索模板、查看当前发布与指纹、创建不可变草稿、发布草稿、回滚已退役版本,并从内置发布预填首个数据库版本
- 新增 RuoYi Prompt 管理页面和 API可搜索模板、查看当前发布与指纹、创建不可变草稿、发布草稿、回滚已退役版本;新版本只从当前后台版本复制内容
- 新增 `prompt_registry_menu.sql` 菜单权限脚本;`factory_prompt_registry.sql` 提供现有库升级和 11 类内置生成用途的模板元数据种子,完整建库脚本同步更新。
启用顺序:
1. 执行 `sql/factory_prompt_registry.sql` 创建表并写入模板元数据。
2. 执行 `sql/prompt_registry_menu.sql` 创建 Prompt 管理菜单和权限。
3. 设置 `FACTORY_PROMPT_REGISTRY_DATABASE_ENABLED=true`
4. 重启后端;首个数据库版本可在管理页基于内置发布创建并发布
3. 在管理页或部署 SQL 中为每个生成类型创建并发布数据库版本
4. 启动生成任务;缺少发布版时系统会明确报错
验证结果: