Files
ui/docs/prd/epic-3-details-userguide-onboarding-user-assistance.md
2025-10-15 23:40:13 +08:00

265 lines
11 KiB
Markdown
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.
# Epic 3 Details: UserGuide - Onboarding & User Assistance
### Epic Goal
实现 UserGuide 控件系列,为 AI 桌面应用提供完整的新手引导和应用内帮助系统。该 Epic 交付三个核心控件Overlay半透明遮罩、增强 Tooltip支持基础富文本、UserGuide 引导流程控件(步骤式引导)。完成后,开发者可以快速为应用添加专业的用户引导功能,提升用户体验。
---
### Story 3.1: 实现 Overlay 遮罩控件
**As a** 控件库开发者,
**I want** 创建一个 Overlay 遮罩控件,能够在当前窗口上方显示半透明遮罩层,
**so that** UserGuide 可以使用它来聚焦引导目标,同时遮挡其他区域,引导用户注意力。
#### Acceptance Criteria
1.`Penguin.AvaloniaUI/Controls/UserGuide/` 下创建 `Overlay.cs` 控件类:
- 继承自 `ContentControl``Panel`
- 能够覆盖整个父容器(通常是 Window
2. Overlay 支持以下属性:
- `IsVisible`: 控制遮罩显示/隐藏
- `BackgroundOpacity`: 遮罩的不透明度(默认 0.5,范围 0-1
- `BackgroundColor`: 遮罩颜色(默认黑色)
- `TargetControl`: 可选的目标控件,遮罩在该控件区域挖空(透明)以突出显示
3. 遮罩的视觉效果:
- 默认显示为半透明黑色覆盖层
- 如果指定了 TargetControl该控件区域应保持清晰可见通过 Clip 或透明矩形实现)
4. Overlay 应响应主题系统:
- 浅色主题下使用半透明黑色(默认)
- 暗色主题下使用半透明白色或深灰色(避免过暗)
5. 在 Example 中创建测试页面:
- 页面包含几个按钮或控件
- 添加一个"显示遮罩"按钮,点击后显示 Overlay
- 测试不指定 TargetControl全屏遮罩和指定 TargetControl挖空特定控件两种模式
6. 遮罩显示时,应阻止用户点击被遮罩区域的控件(除了 TargetControl
7. Overlay 支持动画效果(可选):
- 显示和隐藏时有淡入淡出动画200ms
---
### Story 3.2: 实现增强 Tooltip 控件(支持基础富文本)
**As a** 应用开发者,
**I want** 使用增强的 Tooltip 控件,支持基础富文本格式(粗体、斜体、换行),
**so that** 我可以在引导提示中强调关键信息,提升提示的可读性和吸引力。
#### Acceptance Criteria
1.`Penguin.AvaloniaUI/Controls/UserGuide/` 下创建 `RichTooltip.cs` 控件类:
- 继承或扩展 Avalonia 的 `ToolTip`
- 支持 Content 为 `TextBlock` 或自定义内容
2. 支持基础富文本格式:
- **粗体**: 使用 `<Bold>` 标签或支持 Markdown 的 `**text**` 语法(选其一)
- **斜体**: 使用 `<Italic>` 标签或 Markdown 的 `*text*` 语法
- **换行**: 使用 `\n` 或自动换行
- 不支持链接、图片等复杂格式(符合 YAGNI 原则)
3. RichTooltip 应响应主题系统:
- 背景色使用 `Surface``Background`
- 文本颜色使用 `TextPrimary`
- 边框颜色使用 `Primary``Secondary`
4. 提供简单的 API 设置内容:
- 接受纯文本(自动解析格式标记)
- 或接受 `TextBlock`(手动设置格式)
5. 在 Example 中创建测试页面:
- 几个按钮,鼠标悬停时显示 RichTooltip
- 测试粗体、斜体、换行的组合效果
- 示例文本:"**注意**: 这是一个重要的功能提示。\n请仔细阅读。"
6. RichTooltip 的显示位置应智能调整:
- 默认显示在目标控件下方
- 如果空间不足,自动调整到上方或左右侧
7. RichTooltip 的最大宽度应限制(如 300px超出自动换行
---
### Story 3.3: 实现 UserGuide 引导流程数据模型和步骤管理
**As a** 控件库开发者,
**I want** 定义 UserGuide 的数据模型和步骤管理逻辑,
**so that** 开发者可以配置多步引导流程UserGuide 控件可以管理步骤的流转。
#### Acceptance Criteria
1.`Penguin.AvaloniaUI/Controls/UserGuide/` 下创建以下类:
- `UserGuide.cs`: UserGuide 主控件类
- `GuideStep.cs`: 表示单个引导步骤的数据模型,包含:
- `TargetControl`: 引导目标控件Control 类型)
- `Title`: 步骤标题string
- `Content`: 步骤内容/提示文本string支持基础富文本
- `Position`: 提示框相对于目标控件的位置枚举Bottom、Top、Left、Right
- `Order`: 步骤顺序int
2. UserGuide 提供 `Steps` 属性(集合):
- 接受 `GuideStep` 列表
- 支持在 XAML 或代码中配置
3. UserGuide 提供步骤管理功能:
- `CurrentStepIndex`: 当前步骤索引int
- `NextStepCommand`: 前进到下一步
- `PreviousStepCommand`: 返回上一步
- `SkipCommand`: 跳过引导
- `FinishCommand`: 完成引导
4. 步骤流转逻辑:
- 初始状态CurrentStepIndex = 0第一步
- NextStep: CurrentStepIndex + 1如果是最后一步则触发 Finish
- PreviousStep: CurrentStepIndex - 1如果是第一步则禁用
- Skip/Finish: 隐藏 UserGuide触发完成事件
5. 创建单元测试,验证步骤管理逻辑:
- 测试 NextStep、PreviousStep 的边界条件
- 测试步骤按 Order 排序
6. 在 Example 中创建测试页面:
- 定义包含 3-5 个 GuideStep 的引导流程
- 使用调试输出或 TextBlock 显示当前步骤信息(暂时不渲染 UI
- 提供按钮手动触发 NextStep、PreviousStep验证逻辑正确
---
### Story 3.4: 实现 UserGuide UI 呈现和引导交互
**As a** 应用用户,
**I want** 看到清晰的引导提示框,并通过"上一步"、"下一步"、"跳过"按钮控制引导流程,
**so that** 我可以快速了解应用的核心功能,而不会感到困惑。
#### Acceptance Criteria
1. UserGuide 开始引导时:
- 显示 Overlay 遮罩,遮挡除当前目标控件外的其他区域
- 在目标控件附近显示引导提示框(根据 GuideStep.Position
2. 引导提示框的内容:
- 显示步骤标题GuideStep.Title使用稍大的字体或加粗
- 显示步骤内容GuideStep.Content支持基础富文本调用 RichTooltip 逻辑)
- 显示步骤进度(如 "2/5"
3. 引导提示框的按钮:
- "上一步"按钮(如果不是第一步)
- "下一步"按钮(如果不是最后一步)或"完成"按钮(如果是最后一步)
- "跳过"按钮(所有步骤都显示)
- 按钮绑定到 UserGuide 的 Command
4. 引导提示框应响应主题系统:
- 背景色使用 `Surface` 并带有阴影效果
- 按钮使用 `Primary` 颜色("下一步"/"完成")和 `Secondary` 颜色("上一步"/"跳过"
5. 步骤切换动画(可选):
- 切换步骤时提示框有淡入淡出或平移动画200ms
6. 在 Example 中创建完整的 UserGuide 演示:
- 定义一个包含 5 个步骤的引导流程
- 目标控件为页面上的不同按钮或区域
- 测试步骤:用户可以顺畅地前进、后退、跳过、完成引导
7. UserGuide 完成后,应触发事件或回调:
- 开发者可以监听完成事件,执行后续逻辑(如标记"引导已完成"
---
### Story 3.5: UserGuide 边缘情况处理和集成测试
**As a** 控件库开发者,
**I want** 处理 UserGuide 的边缘情况并进行全面测试,
**so that** 确保 UserGuide 在各种场景下稳定可用,用户体验流畅。
#### Acceptance Criteria
1. 处理边缘情况:
- **目标控件不可见或已销毁**: UserGuide 应自动跳过该步骤或显示错误提示
- **窗口缩放**: 引导提示框应随窗口调整位置,不出现错位
- **多窗口场景**: UserGuide 应只在启动它的窗口内生效
- **用户点击 Overlay 遮罩**: 默认不响应(不关闭引导),或提供配置选项
2. 主题切换测试:
- 在引导进行中切换主题UserGuide 应正确响应,无视觉错误
3. 性能测试:
- 引导流程包含 10 个步骤时,步骤切换应流畅(< 100ms
- Overlay 和提示框的动画不应卡顿
4. 用户体验测试:
- 引导流程的视觉呈现清晰,提示框不会遮挡目标控件
- 按钮的位置和文本易于理解
- 进度指示清晰(如 "3/5"
5. 在 Example 中创建综合测试页面:
- 模拟真实应用的引导场景(如"首次使用教程"
- 包含至少 5 个步骤覆盖不同位置Top、Bottom、Left、Right
- 测试跳过、返回、完成等所有操作
6. 修复测试中发现的所有 Bug
7. 在 README 中添加 UserGuide 的使用文档:
- 基础用法示例XAML 和代码)
- 如何定义 GuideStep
- 如何监听完成事件
- 最佳实践建议(如引导步骤不宜过多、提示文本应简洁)
---
### Story 3.6: MVP 整体集成测试和文档完善
**As a** 控件库的用户(开发者),
**I want** 在 Example 应用中看到所有 MVP 功能的完整演示,并有清晰的文档指导,
**so that** 我可以快速学习如何使用控件库,并在自己的项目中集成。
#### Acceptance Criteria
1. 在 Example 中创建"综合 Demo"页面:
- 集成 PropertyGrid、UserGuide、主题切换功能
- 模拟一个真实的应用场景(如"AI 模型配置工具"
- 页面包含:
- 主题切换按钮
- PropertyGrid 显示配置对象
- "开始引导"按钮,触发 UserGuide
- UserGuide 引导用户了解主题切换、PropertyGrid 使用等功能
2. 验证所有 MVP Success Criteria来自 Brief
- ✅ 颜色系统和主题框架可用:至少 2 种主题,运行时流畅切换
- ✅ 国际化框架架构预留:代码结构支持后续扩展
- ✅ PropertyGrid 可在测试项目中使用:支持常用类型,基础数据绑定
- ✅ UserGuide 可在测试项目中使用引导流程完整Tooltip 增强功能可用
- ✅ 架构支持未来 AOTMVP 阶段允许反射
- ✅ 产出 5+ 个可复用的基础控件/工具TwoColumnLayout、Overlay、RichTooltip、ThemeManager 等
3. 测试跨功能集成:
- 在 PropertyGrid 编辑时触发主题切换,验证无冲突
- 在 UserGuide 进行中修改 PropertyGrid验证无异常
4. 性能基准测试:
- PropertyGrid 50 属性生成 < 200msNFR5
- 主题切换 < 100msNFR4
- UI 渲染 60fpsNFR3
5. 完善 README.md
- 项目概述和目标
- 快速开始指南(如何运行 Example
- 控件列表和功能概述
- 核心控件的使用示例PropertyGrid、UserGuide
- 已知限制和后续计划Post-MVP
6. 创建 CHANGELOG.md
- 记录 MVP v1.0 的功能清单
- 标记已完成的 Epic 和 Story
7. 项目代码质量检查:
- 所有公开 API 有 XML 文档注释
- 代码符合 C# 编码规范
- 删除未使用的代码和注释
- 确保 Git 提交记录清晰
---