Files
fquiz/tmp/req_313321162778084067_detail.json
T
2026-04-24 15:50:52 +08:00

22 lines
8.7 KiB
JSON
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
{
"id": "313321162778084067",
"createDate": "2026-04-24T00:59:36.202455",
"createUser": "openclaw",
"createUserName": "小龙虾",
"updateDate": "2026-04-24T09:14:38.969026",
"updateUser": "openclaw",
"updateUserName": "小龙虾",
"groupName": null,
"groupLabel": null,
"tagNames": null,
"tagLabels": null,
"title": "fquiz页面Ant Design组件改造:/admin/models",
"projectName": "fquiz",
"gitUrl": null,
"branch": "main",
"descr": "# 需求分析(313321162778084067\n\n## 1. 目标\n- 将 `/admin/models` 页面完成 **Ant Design 组件层改造与一致性收敛**,统一视觉与交互规范。\n- 在不改变后端 API 协议与核心业务语义的前提下,提升页面可维护性、可用性和管理效率。\n- 保持模型管理主链路(查询、新建/编辑、状态流转、路由规则、健康检查、测试)行为一致。\n\n## 2. 现状(基于真实代码)\n- 主页面代码集中在:`web/src/app/admin/models/page.tsx`(超大单文件,承载列表、汇总卡片、模型弹窗、路由弹窗、冒烟测试弹窗、对话测试弹窗、全部 mutation 与提示逻辑)。\n- UI 组件使用:`@/components/ui-antd`AntD 二次封装),但页面仍混用大量 Tailwind/自定义类,存在“AntD + 自定义样式并存”的状态。\n- 该页面被多个后台路由复用:\n - `web/src/app/admin/orchestration/page.tsx`\n - `web/src/app/admin/mcp-server/page.tsx`\n - `web/src/app/admin/agent/page.tsx`\n - `web/src/app/admin/api-tester/page.tsx`\n 均 `export { default } from \"@/app/admin/models/page\";`,说明改造会同时影响多个入口页面体验。\n- 可见 UI/交互问题(代码级证据):\n 1) 消息区样式重复拼接:`pre` 上存在重复 class(如 `overflow-auto ...` 重复两套)——`page.tsx` 约 657、660、1375 行附近。\n 2) 表格 body 使用 `className=\"divide-y divide-y\"`(重复 token)——`page.tsx` 多处(模型表、路由表、测试记录表)。\n 3) 关键危险/敏感操作仍使用原生 `window.confirm/window.prompt`(删除、轮换密钥),交互不统一且可用性弱——`page.tsx` 约 772、822、923 行附近。\n 4) 列表空态处理不足:模型列表、路由列表无显式 Empty 引导(仅 map 渲染);仅测试记录有“暂无测试记录”。\n 5) 多弹窗内表单虽可用,但错误反馈聚合在顶部字符串,不够字段级、就近化。\n\n## 3. 范围(In Scope\n1. `/admin/models` 页面及其复用入口的 **前端组件层改造**(布局、表单、表格、弹窗、按钮、反馈、空态/加载态)。\n2. 将当前页面的主要展示/操作区域逐步收敛为 Ant Design 语义组件能力(如 Alert/Result/Empty/Spin/Modal/Popconfirm/Form/Table 等)。\n3. 交互一致性与可访问性增强(禁用态、确认态、错误提示位置、加载反馈、键盘可操作性)。\n4. 样式体系整理:减少重复 class 与无效 class,统一组件 token 风格。\n\n## 4. 非范围(Out of Scope)\n- 后端接口协议、字段语义、权限模型(`model.read/model.manage`)不调整。\n- 模型路由、健康检查、测试执行的业务规则不改。\n- 不新增全新业务模块(仅做页面组件改造与体验优化)。\n- 不在本需求中拆分/重构后端服务或数据库结构。\n\n## 5. UI/UX 专项评估(按 P0/P1/P2\n\n### 执行摘要\n- 页面功能完整,但单页承载过重,导致视觉层级与反馈模式不统一。\n- 危险/敏感操作依赖原生浏览器对话框,缺乏品牌一致性与审计友好体验。\n- 列表/状态/错误反馈缺乏“结构化空态+就近错误”设计,增加学习成本。\n- 多路由复用同一页面,任何 UI 改动均是“高影响面”,需采用低风险渐进式改造。\n- 建议以“组件替换优先于业务变更”为主线,先统一交互基线,再做结构拆分。\n\n### P0(必须优先)\n1. **危险操作确认机制统一(删除/轮换密钥)**\n - 现状:`window.confirm/window.prompt`。\n - 影响:体验割裂、移动端/可访问性较差、缺乏一致视觉语义。\n - 改法:替换为 AntD `Popconfirm` + `Modal`(含明确文案、二次确认、loading 态、错误态)。\n - 建议位置:`web/src/app/admin/models/page.tsx` 操作列按钮区域。\n\n2. **错误与成功反馈统一组件化**\n - 现状:顶部 `pre` + 重复 class,信息层级弱。\n - 影响:可读性与可扫描性差,不利于快速定位问题。\n - 改法:统一为 `Alert`error/success),保留可复制详情;必要时补充 `message`/`notification`。\n - 建议位置:页面顶部反馈区、对话测试结果区。\n\n3. **列表空态与加载态标准化**\n - 现状:模型列表、路由列表无明确 Empty。\n - 影响:用户难区分“无数据 / 过滤无结果 / 请求异常”。\n - 改法:为表格内容区域引入 `Empty`、`Spin`、错误重试入口。\n - 建议位置:模型表、路由表、测试记录表。\n\n### P1(应在本次一并推进)\n1. **表单体验升级为字段级反馈**\n - 现状:主要依赖提交后统一报错。\n - 影响:修复路径长,输入错误定位成本高。\n - 改法:结合 AntD Form 或现封装组件补齐必填校验、格式提示、就近错误文本。\n - 建议位置:模型弹窗、路由弹窗、测试弹窗。\n\n2. **表格可读性与可操作性增强**\n - 现状:操作按钮密集平铺,信息密度偏高。\n - 影响:误触概率高,主次不清。\n - 改法:主操作保留按钮,次级操作收敛到 Dropdown/Menu;状态字段统一 Tag/Badge。\n - 建议位置:模型列表、路由规则列表。\n\n3. **页面结构拆分(仅前端组件层)**\n - 现状:单文件过大,可维护性低。\n - 影响:后续改造与测试成本高。\n - 改法:拆为 `SummaryCards`、`ModelTable`、`RouteTable`、`ModelFormModal`、`RouteFormModal`、`TestModal`、`ChatTestModal`。\n - 建议位置:`web/src/app/admin/models/` 下新增组件目录。\n\n### P2(可后续迭代)\n1. 提升响应式:中小屏优化列展示与操作折叠。\n2. 提升可访问性:操作按钮 aria 标签、焦点顺序与对话框首焦点。\n3. 增强信息架构:汇总卡片增加趋势提示(仅 UI 呈现,不改后端字段)。\n\n## 6. 实现思路\n- Phase 1(低风险替换):先替换反馈组件、确认弹窗、空态/加载态,确保功能不变。\n- Phase 2(结构收敛):拆分大文件组件,沉淀可复用表格/表单片段。\n- Phase 3(体验增强):优化操作密度、字段校验、可访问性细节。\n- 全程保持 API 调用路径与 mutation/query key 不变,避免引入业务回归。\n\n## 7. 影响点\n- 直接影响页面:`web/src/app/admin/models/page.tsx`。\n- 间接影响入口(同页面复用):\n - `/admin/orchestration`\n - `/admin/mcp-server`\n - `/admin/agent`\n - `/admin/api-tester`\n- 可能涉及封装层:`web/src/components/ui-antd.tsx`(若需补齐 Popconfirm/Empty/Tag 等封装出口)。\n\n## 8. 风险 / 疑问\n1. 复用页面是否允许“按路由场景差异化展示文案/功能”尚未明确(当前是完全复用)。\n2. 如果仅改 `/admin/models` 文案,可能导致其它复用入口语义不匹配。\n3. 表单校验策略(即时校验 vs 提交校验)需产品确认以避免体验突变。\n4. 操作聚合为下拉菜单后,是否影响管理员高频操作效率需评估。\n\n## 9. UI Quick Wins(可快速落地,建议至少先做)\n1. 将删除/轮换密钥从 `window.confirm/prompt` 切到 AntD `Popconfirm/Modal`,统一危险操作风格。\n2. 将顶部 `pre` 错误/成功提示替换为 `Alert`,并清理重复 class。\n3. 为模型列表和路由列表补齐 Empty 态(含“调整筛选/清空筛选”提示按钮)。\n\n## 10. 建议验收标准\n1. 功能一致性:模型 CRUD、状态流转、路由规则维护、健康检查、冒烟测试、对话测试均可正常执行。\n2. 交互一致性:页面不再出现浏览器原生 confirm/prompt;关键操作均有统一确认与加载反馈。\n3. 反馈可读性:错误/成功信息使用统一组件展示,且可快速定位问题。\n4. 空态完整性:模型列表、路由列表、测试记录在无数据时均有明确空态。\n5. 样式质量:删除明显重复/无效 class,页面主视觉与 Ant Design token 风格保持一致。\n6. 复用兼容性:`/admin/models`、`/admin/orchestration`、`/admin/mcp-server`、`/admin/agent`、`/admin/api-tester` 均可正常访问且关键链路可用。",
"resultMsg": "批量从待评审改为待处理(程凯指令)",
"progressPercent": 0,
"status": "OPEN",
"priority": "MEDIUM"
}