diff --git a/docs/09-product-requirements-overview.md b/docs/09-product-requirements-overview.md index d877451..8eb10d0 100644 --- a/docs/09-product-requirements-overview.md +++ b/docs/09-product-requirements-overview.md @@ -2,8 +2,8 @@ generated: true (请先修改 Gitea Wiki,禁止直接编辑本文件) wiki_page: Product-Requirements-Overview wiki_url: https://git.ilapage.cn/OPC/chorus/wiki/Product-Requirements-Overview.- -wiki_revision: e832dfa2552c6cf97eda1927588bc85392f5fe8e -synchronized_at: 2026-08-21T06:59:52Z +wiki_revision: 31e7771f466dac3175c6d032ab598264eab04a73 +synchronized_at: 2026-08-21T07:19:14Z # 产品需求总览 @@ -29,7 +29,7 @@ synchronized_at: 2026-08-21T06:59:52Z ## 当前需求索引 -工单 [#1](https://git.ilapage.cn/OPC/chorus/issues/1) 已完成长期技术基线整理和验收。项目由 [Epic #3](https://git.ilapage.cn/OPC/chorus/issues/3) 统一跟踪;[MVP-0 #4](https://git.ilapage.cn/OPC/chorus/issues/4) 已于 2026-08-21 验收完成。当前进入 [MVP-1 #19](https://git.ilapage.cn/OPC/chorus/issues/19) 的设计门禁:技术设计 [#16](https://git.ilapage.cn/OPC/chorus/issues/16) 已于 2026-08-21 验收通过,管理端原型 [#17](https://git.ilapage.cn/OPC/chorus/issues/17) 和用户端原型 [#18](https://git.ilapage.cn/OPC/chorus/issues/18) 的前置门禁已满足,仍需分别制作和确认。生产实现工单尚未建立或放行。当前已交付边界仍是 mock 验证的唯一 ProviderModel `chat`/`images_edits` 闭环。 +工单 [#1](https://git.ilapage.cn/OPC/chorus/issues/1) 已完成长期技术基线整理和验收。项目由 [Epic #3](https://git.ilapage.cn/OPC/chorus/issues/3) 统一跟踪;[MVP-0 #4](https://git.ilapage.cn/OPC/chorus/issues/4) 已于 2026-08-21 验收完成。当前进入 [MVP-1 #19](https://git.ilapage.cn/OPC/chorus/issues/19) 的设计门禁:技术设计 [#16](https://git.ilapage.cn/OPC/chorus/issues/16) 已于 2026-08-21 验收通过;管理端原型 [#17](https://git.ilapage.cn/OPC/chorus/issues/17) 已形成 `prototypes/17/v1/index.html` 草稿并等待用户验收,用户端原型 [#18](https://git.ilapage.cn/OPC/chorus/issues/18) 仍待制作和确认。生产实现工单尚未建立或放行。当前已交付边界仍是 mock 验证的唯一 ProviderModel `chat`/`images_edits` 闭环。 | 需求领域 | 用户与场景 | 需求状态 | MVP | 详细说明 | 实施工单 | 设计证据 | |---|---|---|---|---|---|---| @@ -37,7 +37,7 @@ synchronized_at: 2026-08-21T06:59:52Z | 用户端生成页 | 种子用户登录并完成一次异步生成 | 已交付(#11~#13 已验收) | [MVP-0 #4](https://git.ilapage.cn/OPC/chorus/issues/4) | 本页“用户端布局与状态” | [#11 portal 后端](https://git.ilapage.cn/OPC/chorus/issues/11)、[#12 用户界面](https://git.ilapage.cn/OPC/chorus/issues/12) | [原型设计 #2](https://git.ilapage.cn/OPC/chorus/issues/2);`prototypes/2/v1/index.html`,2026-08-20 用户已确认 | | 默认 prompt template | 系统以数据配置而非硬编码合成提示词 | 已交付(#7/#13 已验收) | [MVP-0 #4](https://git.ilapage.cn/OPC/chorus/issues/4) | [业务规则](Business-Rules-and-Glossary.-) | [#7](https://git.ilapage.cn/OPC/chorus/issues/7) | 2026-08-20 已确认中性模板与 `{{.UserPrompt}}` | | 多 Provider 路由与故障转移 | 单上游故障时继续服务 | 已确认(#16 已验收,待实现) | [MVP-1 #19](https://git.ilapage.cn/OPC/chorus/issues/19) | [架构](Architecture-and-Code-Map.-)、[业务规则](Business-Rules-and-Glossary.-) | [#16 技术设计](https://git.ilapage.cn/OPC/chorus/issues/16) | #16 架构/API/数据/状态设计于 2026-08-21 已确认 | -| 管理端配置与记录 | 运营配置模型、路由池并排障 | 已确认(#16 已验收,待原型) | [MVP-1 #19](https://git.ilapage.cn/OPC/chorus/issues/19) | 本页“管理端页面” | [#17 管理端原型](https://git.ilapage.cn/OPC/chorus/issues/17) | 复用型/定制页原型待制作和确认 | +| 管理端配置与记录 | 运营配置模型、路由池并排障 | 原型草稿待验收(#17) | [MVP-1 #19](https://git.ilapage.cn/OPC/chorus/issues/19) | 本页“管理端页面” | [#17 管理端原型](https://git.ilapage.cn/OPC/chorus/issues/17) | `prototypes/17/v1/index.html`,v1 草稿,2026-08-21,待用户确认 | | 图片角色编辑 | 用户编辑 role_rule、角色、备注与顺序 | 已确认(#16 已验收,待原型) | [MVP-1 #19](https://git.ilapage.cn/OPC/chorus/issues/19) | 业务规则“提示词与上传” | [#18 用户端原型](https://git.ilapage.cn/OPC/chorus/issues/18) | 组件状态、键盘排序和无限滚动原型待制作和确认 | | 点数只读与发放 | 用户看余额、管理员发放留痕 | 已确认 | MVP-2 | 业务规则“点数与范围” | 待建 | 原型待确认 | | API Key 与程序调用 | 外部程序提交与查询任务 | 已确认 | MVP-2 | 本页“程序化调用” | 待建 | API/权限设计 | @@ -85,7 +85,7 @@ MVP-0 非目标: 汇总工单为 [#19](https://git.ilapage.cn/OPC/chorus/issues/19),当前处于设计门禁: - [x] [#16](https://git.ilapage.cn/OPC/chorus/issues/16) 路由、Provider、迁移、API、状态和测试设计(2026-08-21 验收通过); -- [ ] [#17](https://git.ilapage.cn/OPC/chorus/issues/17) 固定 go-admin/go-admin-ui 的 CRUD 与三个定制页原型; +- [ ] [#17](https://git.ilapage.cn/OPC/chorus/issues/17) 固定 go-admin/go-admin-ui 的 CRUD 与三个定制页原型(v1 草稿待验收:`prototypes/17/v1/index.html`); - [ ] [#18](https://git.ilapage.cn/OPC/chorus/issues/18) 文生图、图片 role_rule/role/note/排序与历史无限滚动原型。 稳定范围仍包括加权路由、gobreaker、最多 N 家故障转移、`images`/`gemini`、受审计有冷却的单次真实连通性测试和完整 retryable 测试。技术设计已确认;两个原型经用户确认后,才拆分数据库、路由/worker、协议、安全管理端、portal 和集成验收生产工单。 @@ -218,6 +218,7 @@ MVP-2 的 API Key 存哈希、身份仍属于 `users`。提交、查询、幂等 原型或替代设计证据至少记录链接/路径、版本/revision或确认日期、状态、确认人、确认时间和覆盖范围。外部原型需要保留可追溯版本;重要已确认版本按需保存快照。没有 UI 原型时,记录采用的技术设计或无需原型的原因。 - 与代码版本绑定的图片、HTML 交互稿和设计源文件放入 Git 的 `design/` 或 `prototypes/`,不要手工放入 Wiki 镜像目录 `docs/`。 +- #17 管理端运营原型:`prototypes/17/v1/index.html`,v1,2026-08-21,状态“草稿”;覆盖四类标准 CRUD、路由池编排、Provider 健康/主动探测、生成记录详情,以及加载、空、错误、无权限和边界状态;待用户确认。 - 外部 Figma 等原型记录可访问链接、版本或确认日期、负责人和适用需求;重要的已确认版本保留可追溯快照。 - 原型必须标记“草稿、已确认、已废弃”之一。草稿不能作为正式实现依据;已废弃原型保留状态和替代入口,不让 Agent 误用。 - 原型只表达界面和交互意图,不能代替文字业务规则、安全边界、异常处理和验收标准。 diff --git a/prototypes/17/v1/icons.css b/prototypes/17/v1/icons.css new file mode 100644 index 0000000..47fd1be --- /dev/null +++ b/prototypes/17/v1/icons.css @@ -0,0 +1,51 @@ +@font-face { + font-family: "remixicon"; + src: url("./remixicon.woff2") format("woff2"); + font-display: block; +} + +[class^="ri-"]::before, +[class*=" ri-"]::before { + font-family: "remixicon" !important; + font-style: normal; + font-weight: normal !important; + speak: never; + line-height: 1; +} + +.ri-add-line::before { content: "\ea13"; } +.ri-arrow-down-s-line::before { content: "\ea4e"; } +.ri-arrow-left-s-line::before { content: "\ea64"; } +.ri-arrow-right-s-line::before { content: "\ea6e"; } +.ri-check-line::before { content: "\eb7b"; } +.ri-close-line::before { content: "\eb99"; } +.ri-database-2-line::before { content: "\ec16"; } +.ri-drag-move-2-line::before { content: "\ec60"; } +.ri-edit-line::before { content: "\ec86"; } +.ri-error-warning-line::before { content: "\eca1"; } +.ri-eye-line::before { content: "\ecb5"; } +.ri-eye-off-line::before { content: "\ecb7"; } +.ri-file-text-line::before { content: "\ed0f"; } +.ri-fullscreen-line::before { content: "\ed9c"; } +.ri-history-line::before { content: "\ee17"; } +.ri-home-3-line::before { content: "\ee1b"; } +.ri-image-line::before { content: "\ee4b"; } +.ri-information-line::before { content: "\ee59"; } +.ri-key-line::before { content: "\ee71"; } +.ri-list-settings-line::before { content: "\eebd"; } +.ri-loader-4-line::before { content: "\eec6"; } +.ri-lock-line::before { content: "\eece"; } +.ri-menu-fold-line::before { content: "\ef3d"; } +.ri-more-2-line::before { content: "\ef77"; } +.ri-pulse-line::before { content: "\f035"; } +.ri-refresh-line::before { content: "\f064"; } +.ri-route-line::before { content: "\f09b"; } +.ri-save-line::before { content: "\f0b3"; } +.ri-search-line::before { content: "\f0d1"; } +.ri-send-plane-line::before { content: "\f0da"; } +.ri-server-line::before { content: "\f0e0"; } +.ri-settings-3-line::before { content: "\f0e6"; } +.ri-shield-keyhole-line::before { content: "\f107"; } +.ri-stop-circle-line::before { content: "\f19f"; } +.ri-time-line::before { content: "\f20f"; } +.ri-user-line::before { content: "\f264"; } diff --git a/prototypes/17/v1/index.html b/prototypes/17/v1/index.html new file mode 100644 index 0000000..41d94bf --- /dev/null +++ b/prototypes/17/v1/index.html @@ -0,0 +1,122 @@ + + +
+ + +