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