diff --git a/RuoYi-Vue/.superpowers/brainstorm/1712695621-1782569508/state/server-info b/RuoYi-Vue/.superpowers/brainstorm/1712695621-1782569508/state/server-info new file mode 100644 index 0000000..9cda528 --- /dev/null +++ b/RuoYi-Vue/.superpowers/brainstorm/1712695621-1782569508/state/server-info @@ -0,0 +1 @@ +{"type":"server-started","port":64796,"host":"127.0.0.1","url_host":"localhost","url":"http://localhost:64796","screen_dir":"D:\\codes\\yidaima\\RuoYi-Vue\\.superpowers\\brainstorm\\1712695621-1782569508\\content","state_dir":"D:\\codes\\yidaima\\RuoYi-Vue\\.superpowers\\brainstorm\\1712695621-1782569508\\state"} diff --git a/RuoYi-Vue/.superpowers/brainstorm/1712695621-1782569508/state/server.pid b/RuoYi-Vue/.superpowers/brainstorm/1712695621-1782569508/state/server.pid new file mode 100644 index 0000000..a37033a --- /dev/null +++ b/RuoYi-Vue/.superpowers/brainstorm/1712695621-1782569508/state/server.pid @@ -0,0 +1 @@ +13900 diff --git a/RuoYi-Vue/.superpowers/brainstorm/1775386462-1782569491/state/server.pid b/RuoYi-Vue/.superpowers/brainstorm/1775386462-1782569491/state/server.pid new file mode 100644 index 0000000..12ba45a --- /dev/null +++ b/RuoYi-Vue/.superpowers/brainstorm/1775386462-1782569491/state/server.pid @@ -0,0 +1 @@ +37624 diff --git a/RuoYi-Vue/.superpowers/brainstorm/807-1781880145/state/server-stopped b/RuoYi-Vue/.superpowers/brainstorm/807-1781880145/state/server-stopped new file mode 100644 index 0000000..266db8d --- /dev/null +++ b/RuoYi-Vue/.superpowers/brainstorm/807-1781880145/state/server-stopped @@ -0,0 +1 @@ +{"reason":"idle timeout","timestamp":1781882785790} diff --git a/RuoYi-Vue/.superpowers/brainstorm/807-1781880145/state/server.pid b/RuoYi-Vue/.superpowers/brainstorm/807-1781880145/state/server.pid new file mode 100644 index 0000000..882e319 --- /dev/null +++ b/RuoYi-Vue/.superpowers/brainstorm/807-1781880145/state/server.pid @@ -0,0 +1 @@ +807 diff --git a/RuoYi-Vue/.superpowers/brainstorm/codex-1783309757/state/server-stopped b/RuoYi-Vue/.superpowers/brainstorm/codex-1783309757/state/server-stopped new file mode 100644 index 0000000..8012b5e --- /dev/null +++ b/RuoYi-Vue/.superpowers/brainstorm/codex-1783309757/state/server-stopped @@ -0,0 +1 @@ +{"reason":"idle timeout","timestamp":1783312098015} diff --git a/RuoYi-Vue/.superpowers/brainstorm/codex-20260707-151010/state/server-stopped b/RuoYi-Vue/.superpowers/brainstorm/codex-20260707-151010/state/server-stopped new file mode 100644 index 0000000..e056c32 --- /dev/null +++ b/RuoYi-Vue/.superpowers/brainstorm/codex-20260707-151010/state/server-stopped @@ -0,0 +1 @@ +{"reason":"idle timeout","timestamp":1783410216217} diff --git a/RuoYi-Vue/.superpowers/brainstorm/codex-20260707-151010/state/server.pid b/RuoYi-Vue/.superpowers/brainstorm/codex-20260707-151010/state/server.pid new file mode 100644 index 0000000..9328a1e --- /dev/null +++ b/RuoYi-Vue/.superpowers/brainstorm/codex-20260707-151010/state/server.pid @@ -0,0 +1 @@ +31444 diff --git a/RuoYi-Vue/.superpowers/brainstorm/codex-22612-20260707133826/state/server-info b/RuoYi-Vue/.superpowers/brainstorm/codex-22612-20260707133826/state/server-info new file mode 100644 index 0000000..79427bd --- /dev/null +++ b/RuoYi-Vue/.superpowers/brainstorm/codex-22612-20260707133826/state/server-info @@ -0,0 +1 @@ +{"type":"server-started","port":60598,"host":"127.0.0.1","url_host":"localhost","url":"http://localhost:60598","screen_dir":"D:\\codes\\yidaima\\RuoYi-Vue\\.superpowers\\brainstorm\\codex-22612-20260707133826\\content","state_dir":"D:\\codes\\yidaima\\RuoYi-Vue\\.superpowers\\brainstorm\\codex-22612-20260707133826\\state"} diff --git a/RuoYi-Vue/.superpowers/brainstorm/codex-frontend-reorg-1779977071/state/server.pid b/RuoYi-Vue/.superpowers/brainstorm/codex-frontend-reorg-1779977071/state/server.pid new file mode 100644 index 0000000..e69de29 diff --git a/RuoYi-Vue/.superpowers/brainstorm/codex-frontend-reorg-1779977098/state/server.pid b/RuoYi-Vue/.superpowers/brainstorm/codex-frontend-reorg-1779977098/state/server.pid new file mode 100644 index 0000000..a1917e7 --- /dev/null +++ b/RuoYi-Vue/.superpowers/brainstorm/codex-frontend-reorg-1779977098/state/server.pid @@ -0,0 +1 @@ +18352 diff --git a/RuoYi-Vue/.superpowers/brainstorm/codex-frontend-reorg-1779977120/state/server.pid b/RuoYi-Vue/.superpowers/brainstorm/codex-frontend-reorg-1779977120/state/server.pid new file mode 100644 index 0000000..1d0ed60 --- /dev/null +++ b/RuoYi-Vue/.superpowers/brainstorm/codex-frontend-reorg-1779977120/state/server.pid @@ -0,0 +1 @@ +35088 diff --git a/RuoYi-Vue/.superpowers/brainstorm/codex-frontend-reorg-1779977149/state/server.pid b/RuoYi-Vue/.superpowers/brainstorm/codex-frontend-reorg-1779977149/state/server.pid new file mode 100644 index 0000000..591bcc0 --- /dev/null +++ b/RuoYi-Vue/.superpowers/brainstorm/codex-frontend-reorg-1779977149/state/server.pid @@ -0,0 +1 @@ +13008 diff --git a/RuoYi-Vue/.superpowers/brainstorm/codex-frontend-reorg-1779977177/state/server.pid b/RuoYi-Vue/.superpowers/brainstorm/codex-frontend-reorg-1779977177/state/server.pid new file mode 100644 index 0000000..5976668 --- /dev/null +++ b/RuoYi-Vue/.superpowers/brainstorm/codex-frontend-reorg-1779977177/state/server.pid @@ -0,0 +1 @@ +49784 diff --git a/RuoYi-Vue/.superpowers/brainstorm/codex-frontend-reorg-1779977251/state/server-info b/RuoYi-Vue/.superpowers/brainstorm/codex-frontend-reorg-1779977251/state/server-info new file mode 100644 index 0000000..b7d2467 --- /dev/null +++ b/RuoYi-Vue/.superpowers/brainstorm/codex-frontend-reorg-1779977251/state/server-info @@ -0,0 +1 @@ +{"type":"server-started","port":51050,"host":"127.0.0.1","url_host":"localhost","url":"http://localhost:51050","screen_dir":"D:\\codes\\yidaima\\RuoYi-Vue\\.superpowers\\brainstorm\\codex-frontend-reorg-1779977251\\content","state_dir":"D:\\codes\\yidaima\\RuoYi-Vue\\.superpowers\\brainstorm\\codex-frontend-reorg-1779977251\\state"} diff --git a/RuoYi-Vue/.superpowers/brainstorm/manual-31932-20260527140727/state/events b/RuoYi-Vue/.superpowers/brainstorm/manual-31932-20260527140727/state/events new file mode 100644 index 0000000..6c615b7 --- /dev/null +++ b/RuoYi-Vue/.superpowers/brainstorm/manual-31932-20260527140727/state/events @@ -0,0 +1,2 @@ +{"type":"click","text":"A. 集成到现有生成工作台\n \n \n \n 菜单树\n 图书目录\n 我的借阅\n 订单记录\n \n \n 页面画布\n 搜索区:书名 / 分类 / 状态\n 工具栏:新增 / 导出 / 批量删除\n 表格列:书名、作者、库存、状态、操作\n \n \n 属性面板\n \n \n 保存设计\n \n \n \n \n \n \n A. 轻量集成版(推荐先做)\n 在 easycode-web 的生成页中新增“页面设计”步骤,复用现有 appBlueprint、database、businessActions。实现最快,风险最低。","choice":"a","id":null,"timestamp":1779862739299} +{"type":"click","text":"A. 集成到现有生成工作台\n \n \n \n 菜单树\n 图书目录\n 我的借阅\n 订单记录\n \n \n 页面画布\n 搜索区:书名 / 分类 / 状态\n 工具栏:新增 / 导出 / 批量删除\n 表格列:书名、作者、库存、状态、操作\n \n \n 属性面板\n \n \n 保存设计\n \n \n \n \n \n \n A. 轻量集成版(推荐先做)\n 在 easycode-web 的生成页中新增“页面设计”步骤,复用现有 appBlueprint、database、businessActions。实现最快,风险最低。","choice":"a","id":null,"timestamp":1779862742233} diff --git a/RuoYi-Vue/.superpowers/brainstorm/manual-31932-20260527140727/state/server-info b/RuoYi-Vue/.superpowers/brainstorm/manual-31932-20260527140727/state/server-info new file mode 100644 index 0000000..9099729 --- /dev/null +++ b/RuoYi-Vue/.superpowers/brainstorm/manual-31932-20260527140727/state/server-info @@ -0,0 +1 @@ +{"type":"server-started","port":57643,"host":"127.0.0.1","url_host":"localhost","url":"http://localhost:57643","screen_dir":"D:\\codes\\yidaima\\RuoYi-Vue\\.superpowers\\brainstorm\\manual-31932-20260527140727\\content","state_dir":"D:\\codes\\yidaima\\RuoYi-Vue\\.superpowers\\brainstorm\\manual-31932-20260527140727\\state"} diff --git a/RuoYi-Vue/.superpowers/brainstorm/manual-31932-20260527140727/state/server.pid b/RuoYi-Vue/.superpowers/brainstorm/manual-31932-20260527140727/state/server.pid new file mode 100644 index 0000000..5b0851b --- /dev/null +++ b/RuoYi-Vue/.superpowers/brainstorm/manual-31932-20260527140727/state/server.pid @@ -0,0 +1 @@ +19976 diff --git a/RuoYi-Vue/.superpowers/brainstorm/manual-39820-20260527140704/state/server.pid b/RuoYi-Vue/.superpowers/brainstorm/manual-39820-20260527140704/state/server.pid new file mode 100644 index 0000000..17df2e3 --- /dev/null +++ b/RuoYi-Vue/.superpowers/brainstorm/manual-39820-20260527140704/state/server.pid @@ -0,0 +1 @@ +29288 diff --git a/RuoYi-Vue/.superpowers/brainstorm/manual-49892-20260527140633/state/server.pid b/RuoYi-Vue/.superpowers/brainstorm/manual-49892-20260527140633/state/server.pid new file mode 100644 index 0000000..e69de29 diff --git a/RuoYi-Vue/docs/prompt-management-center.md b/RuoYi-Vue/docs/prompt-management-center.md index a01cd7a..33ff612 100644 --- a/RuoYi-Vue/docs/prompt-management-center.md +++ b/RuoYi-Vue/docs/prompt-management-center.md @@ -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::v1`。升级前发布的 `legacy-builder:*` 版本依赖 Java 内置规则,系统会将其视为过期版本并安全回退到资源模板;需要在 Prompt 中心基于新的 JSON 契约创建并发布新版本,才能重新由数据库版本接管。 +当前版本通常使用 `context-json::v1`。契约和 Prompt 正文均随后台版本保存;升级前的 `legacy-builder:*` 版本不会触发代码回退,应在 Prompt 中心创建并发布完整的新版本。 ## 权限 diff --git a/RuoYi-Vue/docs/superpowers/specs/2026-07-10-ai-software-factory-roadmap.md b/RuoYi-Vue/docs/superpowers/specs/2026-07-10-ai-software-factory-roadmap.md index 3155c22..379361b 100644 --- a/RuoYi-Vue/docs/superpowers/specs/2026-07-10-ai-software-factory-roadmap.md +++ b/RuoYi-Vue/docs/superpowers/specs/2026-07-10-ai-software-factory-roadmap.md @@ -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,避免发布无法执行的虚假版本。 - 新增带权限控制的模板列表、详情、创建、元数据编辑、版本创建、发布和回滚 API;Prompt 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. 启动生成任务;缺少发布版时系统会明确报错。 验证结果: diff --git a/RuoYi-Vue/easycode-web/.vite/deps/_metadata.json b/RuoYi-Vue/easycode-web/.vite/deps/_metadata.json new file mode 100644 index 0000000..385e272 --- /dev/null +++ b/RuoYi-Vue/easycode-web/.vite/deps/_metadata.json @@ -0,0 +1,8 @@ +{ + "hash": "8f672fc6", + "configHash": "35975680", + "lockfileHash": "ed79ecfc", + "browserHash": "7a57d982", + "optimized": {}, + "chunks": {} +} \ No newline at end of file diff --git a/RuoYi-Vue/easycode-web/.vite/deps/package.json b/RuoYi-Vue/easycode-web/.vite/deps/package.json new file mode 100644 index 0000000..3dbc1ca --- /dev/null +++ b/RuoYi-Vue/easycode-web/.vite/deps/package.json @@ -0,0 +1,3 @@ +{ + "type": "module" +} diff --git a/RuoYi-Vue/easycode-web/src/views/GenerateView.vue b/RuoYi-Vue/easycode-web/src/views/GenerateView.vue index 08d1501..498947b 100644 --- a/RuoYi-Vue/easycode-web/src/views/GenerateView.vue +++ b/RuoYi-Vue/easycode-web/src/views/GenerateView.vue @@ -63,56 +63,77 @@ /> - - - - - - -