docs(readme): update README with project details

This commit is contained in:
Ching L 2025-09-11 15:41:32 +08:00
parent d7f482e95a
commit 3f6559b179

128
README.md
View File

@ -1,2 +1,128 @@
# calendar-widget
# Calendar Widget
一个基于 Flask 的任务管理系统,集成 Google Calendar 日程安排功能,并配套 iOS Scriptable 小组件展示。
## 功能特性
- 📋 **任务管理**: 基于最小执行间隔的任务追踪系统
- 📅 **Google Calendar 集成**: 自动将任务同步到 Google 日历
- 🚦 **智能状态显示**: 根据任务执行时间自动显示红黄绿三色状态
- 📱 **iOS Widget 支持**: 通过 Scriptable 在 iOS 桌面显示任务状态
- 🔄 **自动刷新**: Widget 每分钟自动更新状态
- 💾 **离线缓存**: API 不可用时自动使用本地缓存
## 系统架构
### 后端 API (Flask)
- **app.py**: 主应用程序,提供 RESTful API
- **数据库**: SQLite 存储任务信息
- **认证**: 基于 API Key 的请求认证
- **时区**: 使用亚洲/上海时区 (北京时间)
### 前端 Widget (Scriptable)
- **widget.js**: iOS Scriptable 小组件脚本
- **布局支持**: 小型、中型、大型三种尺寸
- **交互**: 点击任务即可快速记录执行
### 部署架构
- **容器化**: Docker 镜像部署
- **CI/CD**: Drone CI 自动构建和部署
- **服务编排**: Docker Compose 管理服务
## API 接口
### 获取任务列表
```
GET /tasks
Headers: X-API-Key: <your-api-key>
```
返回格式:
```json
[
{
"id": 1,
"name": "任务名称",
"color": "green|yellow|red"
}
]
```
### 创建日程
```
POST /tasks/<task_id>/schedule
Headers: X-API-Key: <your-api-key>
```
## 部署指南
### 环境变量配置
| 变量名 | 说明 | 默认值 |
| ------------------------- | ----------------------- | ---------------- |
| `API_KEY` | API 认证密钥 | change-me |
| `TASK_DB` | 数据库文件路径 | tasks.db |
| `GOOGLE_CREDENTIALS_FILE` | Google 服务账号凭证文件 | credentials.json |
| `CALENDAR_ID` | Google Calendar ID | primary |
| `PORT` | 服务端口 | 5000 |
### Docker 部署
1. 使用 Docker Compose:
```bash
docker-compose up -d
```
2. 配置要求:
- 挂载 SQLite 数据库文件: `./tasks.db:/app/tasks.db`
- 挂载 Google 凭证文件: `<path-to-credentials>:/app/credentials.json`
### Google Calendar 配置
1. 创建 Google Cloud 项目
2. 启用 Google Calendar API
3. 创建服务账号并下载 JSON 凭证
4. 将凭证文件放置在项目目录,命名为 `credentials.json`
5. 将服务账号邮箱添加到目标日历的共享用户
### iOS Widget 配置
1. 在 iPhone 上安装 [Scriptable](https://scriptable.app/) 应用
2. 将 `widget.js` 内容复制到 Scriptable
3. 修改脚本中的配置:
- `API_KEY`: 与后端一致的 API 密钥
- `API_HOST`: 后端 API 地址
4. 添加 Scriptable Widget 到桌面
5. 选择对应的脚本
## 任务状态规则
任务颜色根据最后执行时间计算:
- 🟢 **绿色**: 执行时间 ≤ 最小间隔的 2/3
- 🟡 **黄色**: 执行时间 > 最小间隔的 2/3 且 ≤ 最小间隔
- 🔴 **红色**: 执行时间 > 最小间隔
## 技术栈
- **后端**: Python 3.9+, Flask, Peewee ORM
- **数据库**: SQLite
- **容器**: Docker
- **CI/CD**: Drone CI
- **前端**: JavaScript (Scriptable iOS)
- **集成**: Google Calendar API
## 开发环境
### 依赖安装
```bash
pip install flask peewee google-api-python-client google-auth google-auth-httplib2 google-auth-oauthlib
```
### 本地运行
```bash
python app.py
```
## License
MIT