ceb77e624e
feat: 重构 TodoList 架构,新增动态 API 与 MAUI 内嵌 Web 服务 feat:优化交互逻辑,优化发布流程
162 lines
7.0 KiB
Markdown
162 lines
7.0 KiB
Markdown
# TodoList 产品需求文档 (PRD) v1.1.0
|
||
|
||
## 1. 项目概述
|
||
本项目是一个基于 MAUI + WebView 架构开发的跨平台待办事项管理应用 (TodoList)。旨在提供轻量、高效的任务管理体验,特别是通过快捷键快速唤起记录功能,最大化用户的操作效率。v1.1.0 版本将实现跨平台支持,覆盖 Windows、macOS、Android、iOS 和 Linux(预览)平台。
|
||
|
||
## 2. 技术架构
|
||
|
||
### 2.1 整体架构
|
||
- **开发语言**: C# (后端) + Vue.js (前端)
|
||
- **UI 框架**: MAUI (Multi-platform App UI) + WebView
|
||
- **目标框架**: .NET 10
|
||
- **前端框架**: Vue.js
|
||
- **WebView 实现**:
|
||
- Windows: WebView2 (微软官方,完美兼容)
|
||
- macOS: WKWebView
|
||
- Android: WebView
|
||
- iOS: WKWebView
|
||
- Linux: WebView (预览)
|
||
|
||
### 2.2 支持平台
|
||
- **Windows**: 完整支持
|
||
- **macOS**: 完整支持
|
||
- **Android**: 完整支持
|
||
- **iOS**: 完整支持
|
||
- **Linux**: 预览支持
|
||
|
||
### 2.3 架构分层
|
||
```
|
||
┌─────────────────────────────────────┐
|
||
│ Vue.js 前端界面 │
|
||
│ (跨平台统一的用户界面) │
|
||
└─────────────────────────────────────┘
|
||
↕
|
||
┌─────────────────────────────────────┐
|
||
│ WebView 容器层 │
|
||
│ (WebView2/WKWebView/WebView) │
|
||
└─────────────────────────────────────┘
|
||
↕
|
||
┌─────────────────────────────────────┐
|
||
│ MAUI 原生层 │
|
||
│ (平台特定功能封装) │
|
||
└─────────────────────────────────────┘
|
||
↕
|
||
┌─────────────────────────────────────┐
|
||
│ C# 业务逻辑层 │
|
||
│ (数据处理、状态管理) │
|
||
└─────────────────────────────────────┘
|
||
```
|
||
|
||
## 3. 功能需求
|
||
|
||
### 3.1 核心功能:快速记录 (Quick Entry)
|
||
- **全局快捷键**:
|
||
- Windows: 允许用户注册/使用系统级全局快捷键(例如 `Ctrl + Alt + A`)
|
||
- macOS: 支持系统级快捷键(例如 `Cmd + Option + A`)
|
||
- 移动端: 通过通知快捷方式或小组件实现快速记录
|
||
- 支持在应用后台运行时响应快捷键
|
||
- **快速唤起**:
|
||
- 按下快捷键时,若应用最小化或隐藏,应立即弹出"新建任务"窗口或主界面
|
||
- 窗口弹出后,输入框应自动获取焦点,用户可直接打字
|
||
|
||
### 3.2 任务模型 (Task Model)
|
||
每个任务需包含以下核心字段:
|
||
1. **任务名称 (Title/Content)**: 任务的具体描述
|
||
2. **紧急程度 (Priority/Urgency)**:
|
||
- 用于区分任务优先级(如:高、中、低)
|
||
- 需在界面上有直观的视觉区分(如颜色标记)
|
||
3. **完成状态 (IsCompleted)**:
|
||
- 标记任务是否已完成
|
||
|
||
### 3.3 任务列表与视图 (Task List & View)
|
||
- **列表展示**: 展示当前所有未完成的任务
|
||
- **默认过滤**:
|
||
- 应用启动或刷新时,**默认隐藏已完成的任务**
|
||
- (可选) 提供"显示已完成任务"的切换开关以便查看历史记录
|
||
|
||
### 3.4 离线与同步 (Offline & Sync)
|
||
- **离线记录**: 支持完全离线使用,数据优先保存于本地
|
||
- **数据同步**: 在网络可用时(或特定时机),自动将本地数据同步到服务端(预留同步机制)
|
||
|
||
### 3.5 跨平台适配需求
|
||
- **响应式设计**: Vue.js 界面需适配不同平台的屏幕尺寸和分辨率
|
||
- **平台特定功能**:
|
||
- Windows: 利用 WebView2 特性,如文件访问、剪贴板等
|
||
- macOS: 遵循 macOS 设计规范
|
||
- 移动端: 支持触摸手势、通知等移动端特性
|
||
- **原生功能集成**:
|
||
- 通过 MAUI 调用平台原生 API
|
||
- WebView 与 C# 代码的双向通信
|
||
|
||
### 3.6 UI设计原则
|
||
- **紧凑设计**: UI界面需采用紧凑布局,减少不必要的留白和装饰元素,最大化信息展示空间
|
||
- **高信息密度**: 在有限的屏幕空间内展示更多任务信息,提高用户浏览效率
|
||
- **简洁高效**: 去除冗余的视觉元素,聚焦核心功能,让用户快速完成操作
|
||
- **紧凑列表**: 任务列表项应采用紧凑的行高和间距,支持在单屏内显示更多任务
|
||
- **精简控件**: 使用紧凑的按钮、图标和输入框,减少控件占用的空间
|
||
- **高效布局**: 采用合理的网格或弹性布局,充分利用屏幕空间,避免大面积空白
|
||
|
||
## 4. 非功能需求
|
||
- **性能**:
|
||
- 启动速度快,快捷键响应低延迟
|
||
- WebView 加载性能优化
|
||
- **持久化**:
|
||
- 任务数据需保存到本地(如 SQLite, JSON, 或 XML)
|
||
- 保证关闭应用后数据不丢失
|
||
- **跨平台一致性**:
|
||
- 各平台功能体验保持一致
|
||
- UI 界面风格统一
|
||
- **兼容性**:
|
||
- Windows: WebView2 运行时要求
|
||
- macOS: 系统版本要求
|
||
- 移动端: Android/iOS 最低版本要求
|
||
|
||
## 5. 技术实现要点
|
||
|
||
### 5.1 WebView 通信机制
|
||
- **C# → Vue**: 通过 HTTP API 接口提供数据
|
||
- **Vue → C#:** 通过 HTTP 请求调用 C# 后端接口
|
||
- **数据序列化**: 使用 JSON 格式进行数据交换
|
||
- **本地服务器**: C# 后端启动本地 HTTP 服务器(如 Kestrel)
|
||
- **跨域处理**: 配置 CORS 支持跨域请求
|
||
- **API 设计**: RESTful API 设计风格
|
||
|
||
### 5.2 平台特定实现
|
||
- **Windows**:
|
||
- 使用 `Microsoft.Web.WebView2.Wpf` 或 MAUI 的 WebView2 控件
|
||
- 全局快捷键使用 Windows API
|
||
- **macOS**:
|
||
- 使用 `WKWebView`
|
||
- 全局快捷键使用 AppKit API
|
||
- **移动端**:
|
||
- 使用平台原生 WebView
|
||
- 快速记录通过通知快捷方式实现
|
||
|
||
### 5.3 构建与部署
|
||
- **统一构建**: 使用 MAUI 单一项目构建多平台应用
|
||
- **平台特定配置**: 针对不同平台的配置文件和资源管理
|
||
- **CI/CD**: 支持多平台的自动化构建和发布流程
|
||
|
||
## 6. 版本规划
|
||
|
||
### 6.1 v1.1.0 目标
|
||
- [ ] 完成 MAUI + WebView 架构搭建
|
||
- [ ] 实现 Windows 平台支持(基于 WebView2)
|
||
- [ ] 实现 macOS 平台支持
|
||
- [ ] 实现移动端基础支持
|
||
- [ ] Vue.js 前端界面开发
|
||
- [ ] C# 后端业务逻辑实现
|
||
- [ ] WebView 与 C# 通信机制实现
|
||
- [ ] 跨平台功能测试
|
||
|
||
### 6.2 后续版本
|
||
- **v1.2.0**: Linux 平台正式支持
|
||
- **v1.3.0**: 云同步功能完善
|
||
- **v1.4.0**: 高级功能(如标签、提醒等)
|
||
|
||
## 7. 风险与挑战
|
||
- **WebView 兼容性**: 不同平台 WebView 实现的差异可能导致兼容性问题
|
||
- **性能优化**: WebView 方案相比原生方案可能存在性能开销
|
||
- **开发复杂度**: 跨平台开发增加了测试和维护的复杂度
|
||
- **平台限制**: 某些平台对 WebView 功能的限制可能影响功能实现
|