0ab719500be3dcea76393e36bbb1d60f27ea0fa0
Backend: - Add uuid, sync_version, is_deleted fields to all syncable models - Add SyncSettings model for WebDAV configuration (AES-256-GCM encrypted passwords) - Add crypto.py: AES-256-GCM encryption derived from JWT_SECRET via PBKDF2 - Add sync_lock.py: thread-level sync lock with 503 middleware for write blocking - Add webdav.py: WebDAV client using requests (PUT/GET/MKCOL/DELETE) - Add sync_service.py: push/pull/bidirectional merge with LWW conflict resolution - Add sync router with 8 endpoints: config, test, push, pull, sync, status, remote delete - Add UUID backfill for existing records in init_db() - Add SQLAlchemy before_update event to auto-increment sync_version - Register sync middleware to block writes during sync (503) Frontend: - Add sync API client (WebUI/src/api/sync.ts) - Add useSyncStore with config, test, push/pull/sync operations - Add WebDAV config + sync UI in SettingsView - Add 503 status code handling in axios interceptor - Add uuid field to all TypeScript type definitions Scripts: - Add scripts/start.bat and scripts/stop.bat for project management Design doc: docs/plan/webdav-sync-design.md
Elysia ToDo - 爱莉希雅待办事项
一款全栈个人信息管理应用,集待办任务、习惯打卡、纪念日提醒于一体。
功能概览
任务管理
- 待办列表 — 创建、编辑、删除任务,支持分类、标签、优先级
- 四象限视图 — 基于艾森豪威尔矩阵(重要/紧急)的四象限优先级模型
- 日历视图 — 按月/周/日查看任务排布
- 拼音搜索 — 支持中文拼音快速检索任务和分类
习惯打卡
- 习惯分组管理(学习、运动、生活等)
- 每日打卡记录,支持周期配置与休息日
- 周视图打卡进度展示,一目了然
纪念日管理
- 自定义纪念日分类
- 支持农历/公历日期
- 倒计时提醒,不错过重要日子
系统功能
- 偏好设置(站点名称、默认视图等)
- 可折叠侧边栏
- 响应式布局
- SPA 单页应用,History 路由模式
技术栈
| 层级 | 技术 |
|---|---|
| 前端框架 | Vue 3 + TypeScript |
| UI 组件库 | Element Plus |
| 状态管理 | Pinia |
| 路由 | Vue Router 4 |
| 构建工具 | Vite |
| 后端框架 | FastAPI |
| ORM | SQLAlchemy |
| 数据库 | SQLite |
| ASGI 服务器 | Uvicorn |
项目结构
ToDoList/
├── main.py # 启动入口(编译前端 + 启动后端)
├── requirements.txt # Python 依赖
├── .gitignore
├── api/ # 后端
│ └── app/
│ ├── config.py # 配置(端口、路径、CORS 等)
│ ├── database.py # 数据库引擎与会话管理
│ ├── main.py # FastAPI 应用(路由、中间件、静态文件)
│ ├── models/ # SQLAlchemy 数据模型
│ ├── schemas/ # Pydantic 请求/响应模型
│ ├── routers/ # API 路由
│ └── utils/ # 工具函数(CRUD、日志、日期)
├── WebUI/ # 前端
│ ├── package.json
│ ├── vite.config.ts
│ └── src/
│ ├── api/ # Axios 接口封装
│ ├── components/ # 通用组件
│ ├── views/ # 页面视图
│ ├── stores/ # Pinia 状态管理
│ ├── router/ # 路由配置
│ ├── styles/ # 全局样式 (SCSS)
│ └── utils/ # 前端工具(拼音、优先级、日期)
└── tests/ # 测试
快速开始
环境要求
- Python 3.10+
- Node.js 18+
- npm
安装与运行
# 1. 克隆项目
git clone <your-repo-url>
cd ToDoList
# 2. 安装 Python 依赖
pip install -r requirements.txt
# 3. 一键启动(自动编译前端 + 启动后端)
python main.py
启动后访问:
- 前端页面:http://localhost:23994
- API 文档:http://localhost:23994/docs
前端开发模式
如果需要前后端分离开发(热更新):
# 终端 1 — 启动后端
cd api
uvicorn app.main:app --host 0.0.0.0 --port 23994
# 终端 2 — 启动前端开发服务器
cd WebUI
npm install
npm run dev
前端开发服务器运行在 http://localhost:5173,已配置 API 代理到后端。
API 概览
所有接口均以 /api 为前缀,启动后端后访问 /docs 查看 Swagger 文档。
| 模块 | 前缀 | 说明 |
|---|---|---|
| 任务 | /api/tasks |
任务 CRUD、状态切换、批量操作 |
| 分类 | /api/categories |
分类 CRUD |
| 标签 | /api/tags |
标签 CRUD |
| 习惯 | /api/habits |
习惯、习惯组、打卡记录 |
| 纪念日 | /api/anniversaries |
纪念日、纪念日分类 |
| 设置 | /api/user-settings |
用户偏好设置 |
| 健康检查 | /health |
服务状态检查 |
数据模型关系
Category ──< Task >── Tag
│
HabitGroup ──< Habit ──< HabitCheckin
AnniversaryCategory ──< Anniversary
UserSettings (单例)
配置说明
在 api/app/config.py 中可以修改:
| 配置项 | 默认值 | 说明 |
|---|---|---|
| HOST | 0.0.0.0 |
监听地址 |
| PORT | 23994 |
服务端口 |
| DATABASE_PATH | api/data/todo.db |
SQLite 数据库路径 |
| WEBUI_PATH | api/webui |
前端静态文件目录 |
| CORS_ORIGINS | localhost:5173, 23994 |
允许的跨域来源 |
数据库文件和日志文件会在首次运行时自动创建,无需手动初始化。
部署
项目支持在 Windows 和 Linux 上运行。main.py 会自动处理平台差异(npm 命令、端口占用检测等)。
对于生产环境部署,建议:
- 使用
gunicorn+uvicorn worker替代直接运行 - 配置反向代理(Nginx)
- 数据库可替换为 PostgreSQL 或 MySQL(修改
config.py中的DATABASE_URL)
Description
Languages
Vue
50.8%
Python
32.6%
TypeScript
14.3%
SCSS
1.5%
Batchfile
0.5%
Other
0.3%