Files
TodoList/docs/产品需求文档-1.1.0.md
T
ShaoHua ceb77e624e feat:基础功能实现
feat: 重构 TodoList 架构,新增动态 API 与 MAUI 内嵌 Web 服务
feat:优化交互逻辑,优化发布流程
2026-04-05 00:53:42 +08:00

162 lines
7.0 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.
# 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 功能的限制可能影响功能实现