feat:基础功能实现

This commit is contained in:
ShaoHua
2026-03-31 22:44:32 +08:00
parent ed3d90cd7a
commit 81c649cb23
131 changed files with 22903 additions and 196 deletions
+161
View File
@@ -0,0 +1,161 @@
# 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 功能的限制可能影响功能实现