43 lines
1.7 KiB
Markdown
43 lines
1.7 KiB
Markdown
# TickTick Integration
|
|
|
|
当前 Python 项目里的 TickTick 迁移先恢复 legacy 的最核心能力,不额外扩成更大的集成层。
|
|
|
|
## 当前已支持
|
|
|
|
- 运行时从 config 表读取 TickTick 配置,缺失时仍可 fallback `.env`
|
|
- `GET /ticktick/auth/start`
|
|
- 需要已登录 session
|
|
- 生成 OAuth `state`
|
|
- 直接重定向到 TickTick 授权页
|
|
- `GET /ticktick/auth/code`
|
|
- 校验进程内保存的 `state`
|
|
- 用 authorization code 换取 access token
|
|
- 将 `TICKTICK_TOKEN` 持久化到 `app_config` 表
|
|
- TickTick Open API 基础调用:
|
|
- 列 project
|
|
- 列 project 下 task
|
|
- 创建 task
|
|
- 按 title 精确匹配做重复创建保护
|
|
- Home Assistant inbound 已重新接回 `ticktick / create_action_task`
|
|
|
|
## 当前配置项
|
|
|
|
- `APP_HOSTNAME`
|
|
- `TICKTICK_CLIENT_ID`
|
|
- `TICKTICK_CLIENT_SECRET`
|
|
- `TICKTICK_TOKEN`
|
|
- `HOME_ASSISTANT_ACTION_TASK_PROJECT_ID`
|
|
|
|
## 兼容性说明
|
|
|
|
- 仍保留 legacy 的 OAuth authorization code flow
|
|
- OAuth callback URI 现在由 `APP_HOSTNAME` 和当前环境自动推导:`development` 使用 `http`,其他环境使用 `https`
|
|
- `state` 仍是进程内临时状态;如果服务在 start 和 callback 之间重启,本轮实现下授权需要重新开始
|
|
- 不再把 token 写回 `.env` 或其他配置文件,统一写入 config 表
|
|
- 当前没有引入 legacy 的第三方 TickTick 库,先用标准库完成兼容行为
|
|
|
|
## 后续适合单独拆分的工作
|
|
|
|
- 给 config 页面增加明确的 TickTick 授权入口
|
|
- 增加 project 探测或选择能力,减少手工填写 `HOME_ASSISTANT_ACTION_TASK_PROJECT_ID`
|
|
- 如果后续发现 OAuth/token 生命周期需要更强健,再补 refresh token 或持久化 auth state |