10 KiB
10 KiB
需求分析(ID: 313321162778084135)
1) 目标
对 /admin/mindmap(含列表页与编辑页)进行 Ant Design 组件层改造与统一,在不改变后端接口协议与业务语义的前提下:
- 统一页面视觉层级、间距、反馈与交互语义;
- 提升表单/表格/弹窗/加载态/空态的一致性与可用性;
- 保持现有功能链路(查询、新建、编辑、删除、保存、导出、AI 生成)不回归。
2) 现状(基于真实代码)
2.1 页面与前端实现
- 列表页:
web/src/app/admin/mindmap/page.tsx- 已使用部分 Ant Design:
Form/Input/Table/Modal/Popconfirm/Tag/Tooltip/Button。 - 仍混用较多 Tailwind 容器样式(
section + rounded-xl + border...),组件层级与 admin 其他页面风格并不完全一致。 - 错误反馈为自定义红色
section文案块,不是标准Alert/Result语义。 - 表格未设置移动端横向滚动参数,窄屏下列宽存在拥挤风险。
- 已使用部分 Ant Design:
- 编辑页:
web/src/app/admin/mindmap/_components/mindmap-editor.tsx- 使用
Card(Row/Col/Input/Tree/Modal/Button);基础结构可用。 - JSON 编辑区为
Input.TextArea,缺少更明确的校验反馈层级(当前以panelError + message为主)。 - AI 流式生成已实现(SSE 读取 +
[MINDMAP]解析),但交互上“进行中状态、可中断性、异常提示粒度”可进一步产品化。
- 使用
- 路由封装:
web/src/app/admin/mindmap/page.tsxweb/src/app/admin/mindmap/edit/page.tsxweb/src/app/admin/mindmap/edit/[id]/page.tsx
2.2 后端接口与约束(无需协议变更)
- 路由:
api/app/api/v1/mind_map.pyPOST /mindmap/searchGET /mindmap/get/{id}POST /mindmap/createPUT /mindmap/update-basic-infoPUT /mindmap/update-dataDELETE /mindmap/delete/{id}GET /mindmap/generate/stream
- 服务:
api/app/services/mind_map_service.py- 已具备 map_data 归一化、权限校验(按创建人)、AI 结果结构规整。
- DTO:
api/app/schemas/mind_map.py- 字段边界清晰,支持本次“仅前端组件改造”目标。
3) UI/UX 专项评估摘要(按 ui-ux-pro-max 要求)
- 反馈语义可统一为 Ant Design 体系:错误/空态/加载态目前分散在自定义块与 message,建议标准化为
Alert + Empty + Skeleton/Spin,降低理解成本。 - 表格与操作区在窄屏可用性一般:列表操作为多个 link 按钮,点击热区偏小,且表格未声明
scroll.x,移动端体验有风险。 - 表单反馈链路基本完整但可增强:已有
confirmLoading与message,建议补强字段级校验提示、首错聚焦、禁用态一致性。 - 编辑页信息密度较高:左侧 JSON + 右侧树预览是正确方向,但可用更清晰的信息分区与状态提示降低认知负担。
- AI 生成流程可读性需加强:当前技术上可用,但用户对“正在生成/已解析/失败原因”的阶段感知可提升。
4) 范围(In Scope)
/admin/mindmap列表页的 Ant Design 组件化收敛:- 页面头部/筛选区/数据区/反馈区统一为 AntD 语义组件组合;
- 表格、按钮、弹窗、空态、加载态、错误态统一交互规范。
/admin/mindmap/edit与/admin/mindmap/edit/[id]对应编辑器页组件层优化:- 信息分区、状态反馈、AI 生成弹窗交互体验优化;
- 保持现有 JSON 编辑与树预览能力。
- 与现有权限逻辑对齐:
question_bank.read/question_bank.manage的显示与可编辑态一致性。
5) 非范围(Out of Scope)
- 不修改后端 API 协议、鉴权模型、数据库结构(
mind_map表)。 - 不改变核心业务语义(数据归属、保存策略、AI 生成业务入口)。
- 不引入与本需求无关的大规模重构(如全站主题体系重写、跨模块菜单重排)。
6) 实现思路(建议分步)
Step A:列表页组件语义统一(P0)
- 将当前自定义容器块收敛为一致的 AntD 容器模式(如
Card + Space/Flex + Typography)。 - 错误反馈改为
Alert(可关闭/可重试扩展),空列表时配置Table.locale.emptyText=<Empty .../>。 - 表格增加
scroll={{ x: ... }}与列宽策略,保障小屏可读性。 - 操作区保留功能不变,但按钮层级与危险操作文案统一(删除二次确认语义强化)。
Step B:编辑页交互分层优化(P0/P1)
- 维持双栏布局,但增强“当前状态”可视化:
- 加载中:
Card loading+ 必要 Skeleton 文案; - 校验失败:字段附近提示 + 顶部
Alert; - 保存成功/失败:
message与页面局部反馈并存。
- 加载中:
- 对 JSON 结构异常提供更可定位提示(例如说明错误来源:格式非法/结构不支持)。
Step C:AI 生成弹窗体验优化(P1)
- 将“生成中/解析中/完成/失败”拆成明确阶段文案。
- 生成期间关键按钮禁用策略更清晰,避免误操作。
- 流式输出区支持更好的可读性(分段、滚动定位、错误信息高亮)。
Step D:一致性收尾(P2)
- 统一间距、字号、状态色,减少页面内 Tailwind 局部样式分叉。
- 文案统一(加载、空态、权限不足、失败提示)并与 admin 其他页面保持同风格。
7) P0 / P1 / P2 改造建议(含现状、影响、改法、建议位置)
P0-1:反馈语义标准化(错误/空态/加载)
- 现状:错误主要用自定义红色块;空态依赖表格默认;加载提示分散。
- 影响:状态感知不一致,用户难以快速判断“可恢复动作”。
- 改法:统一
Alert + Empty + Skeleton/Spin + message组合,并在关键区域固定展示。 - 建议位置:
web/src/app/admin/mindmap/page.tsx(panelError、Table 空态、首屏加载)web/src/app/admin/mindmap/_components/mindmap-editor.tsx(panelError、加载与校验反馈)
P0-2:列表表格移动端可用性
- 现状:表格列较多,未配置横向滚动,操作列在窄屏可点击性下降。
- 影响:移动端浏览与操作效率低,误触概率上升。
- 改法:补充
scroll.x、收敛列宽、必要时将次要操作收纳为下拉菜单。 - 建议位置:
web/src/app/admin/mindmap/page.tsx(Table columns + pagination + operation render)
P0-3:表单提交流程防重复与禁用态一致
- 现状:已有
saving/confirmLoading,但页面级操作与弹窗内操作禁用态一致性可加强。 - 影响:并发点击风险与状态混淆仍存在。
- 改法:细分 action loading(create/edit/save/ai),并统一按钮禁用策略。
- 建议位置:
web/src/app/admin/mindmap/page.tsxweb/src/app/admin/mindmap/_components/mindmap-editor.tsx
P1-1:编辑页信息层级优化
- 现状:JSON 输入与预览并列,但“主操作路径(编辑→校验→保存)”引导较弱。
- 影响:新用户理解成本偏高。
- 改法:增强区块标题、副标题与步骤提示;对错误给出可执行下一步。
- 建议位置:
web/src/app/admin/mindmap/_components/mindmap-editor.tsx
P1-2:AI 生成流程可读性增强
- 现状:可生成,但流式反馈偏技术化。
- 影响:用户不易判断当前阶段与失败原因。
- 改法:阶段化提示(生成中/解析中/应用结果),失败时给出重试建议。
- 建议位置:
web/src/app/admin/mindmap/_components/mindmap-editor.tsx(startAiGenerate与 Modal 展示区)
P2-1:样式与文案一致性治理
- 现状:AntD 与 Tailwind 混搭,可维护性受限。
- 影响:后续页面迭代容易继续分叉。
- 改法:沉淀 mindmap 页面的“统一容器与反馈模式”,减少自定义样式块。
- 建议位置:
web/src/app/admin/mindmap/page.tsxweb/src/app/admin/mindmap/_components/mindmap-editor.tsx
8) UI Quick Wins(可快速落地,至少 3 条)
- 列表 Table 增加
scroll.x+locale.emptyText,当天可交付,立竿见影提升窄屏与空态体验。 panelError统一替换为Alert组件,保留 message 但增强上下文提示与视觉一致性。- 操作列收敛为“主按钮 + 更多操作”(或至少增大点击热区),降低误触。
- AI Modal 增加阶段文案与失败重试按钮,提升可理解性。
- 编辑页保存按钮在非法 JSON 时前置禁用/提示,减少无效提交。
9) 影响点
前端
- 主要改动文件:
web/src/app/admin/mindmap/page.tsxweb/src/app/admin/mindmap/_components/mindmap-editor.tsx
- 可选新增:
web/src/app/admin/mindmap/_components/*(若需要抽离工具栏/状态提示子组件)。
后端
- 无接口协议变更;沿用现有
/api/v1/mindmap/*。
权限与安全
- 继续复用:
- 读权限:
question_bank.read或question_bank.manage - 管理权限:
question_bank.manage
- 读权限:
10) 风险 / 疑问
- 组件选型边界:是“纯 AntD 原生组件”优先,还是允许继续使用
ui-antd包装层混用?需明确。 - 移动端目标级别:本次是否要求完整移动端优化(操作重排)还是仅保证可用不破版。
- AI 流程期望:是否需要“取消生成”能力(当前未设计后端中断语义)。
- JSON 编辑体验上限:是否允许引入更专业编辑器(如 Monaco);若不允许则仅做 TextArea 级优化。
11) 建议验收标准
- 功能回归:查询、新建、编辑信息、删除、保存导图数据、导出 JSON/Markdown、AI 生成全链路可用。
- 协议稳定:前后端接口入参与出参不变,后端无需新增接口。
- 视觉一致性:列表页与编辑页反馈组件、间距、按钮语义与 admin 其他页保持一致。
- 状态可感知:加载、空态、错误、成功均有明确可见反馈,不出现“无响应”状态。
- 可用性:在常见窄屏(如 375px)下无关键内容遮挡或无法操作;表格可滚动/可访问。
- 权限正确:无管理权限用户不可执行写操作,读权限用户可查看数据。