225 lines
7.8 KiB
Markdown
225 lines
7.8 KiB
Markdown
# Xian Favor - 收藏关注系统
|
||
|
||
一个灵活的收藏管理系统,支持文本、链接、专栏、待办等多种内容类型,提供命令行、API、Web三种操作方式。
|
||
|
||
## 功能特性
|
||
|
||
- **多种内容类型**: 文本片段、网址链接、个人专栏、待办事项
|
||
- **标签系统**: 灵活的标签分类,支持多标签
|
||
- **状态管理**: 待办事项支持待处理/进行中/已完成状态
|
||
- **优先级**: 待办事项支持低/中/高/紧急优先级
|
||
- **截止日期**: 待办事项支持设置截止日期
|
||
- **全文搜索**: 快速搜索标题、内容、备注
|
||
- **统计面板**: 实时统计各类型、状态数量
|
||
|
||
## 安装
|
||
|
||
```bash
|
||
cd works/xian-favor
|
||
pip install -e .
|
||
```
|
||
|
||
## 使用方式
|
||
|
||
### 命令行 (CLI)
|
||
|
||
```bash
|
||
# 添加文本笔记
|
||
xian_favor add text "这是我的笔记" -t "笔记,重要"
|
||
|
||
# 添加链接
|
||
xian_favor add link "https://example.com" --title "示例网站" -t "技术"
|
||
|
||
# 添加专栏
|
||
xian_favor add column "https://column.example.com/feed" --title "技术专栏" --source "RSS" -t "订阅"
|
||
|
||
# 添加待办(高优先级,截止日期)
|
||
xian_favor add todo "完成项目" -p high -d "2026-12-31" -t "工作"
|
||
|
||
# 列出所有条目
|
||
xian_favor list
|
||
|
||
# 筛选:只看待办
|
||
xian_favor list --type todo
|
||
|
||
# 筛选:只看进行中的待办
|
||
xian_favor list --type todo --status in_progress
|
||
|
||
# 筛选:按标签
|
||
xian_favor list --tag 技术
|
||
|
||
# 搜索
|
||
xian_favor search "关键词"
|
||
|
||
# 查看详情
|
||
xian_favor show 1
|
||
|
||
# 编辑
|
||
xian_favor edit 1 --status completed --note "已完成"
|
||
|
||
# 完成待办(快捷命令)
|
||
xian_favor done 1
|
||
|
||
# 删除
|
||
xian_favor delete 1
|
||
|
||
# 标签管理
|
||
xian_favor tags
|
||
xian_favor tags --delete "旧标签"
|
||
|
||
# 统计信息
|
||
xian_favor stats
|
||
|
||
# 启动API服务
|
||
xian_favor serve --port 19014
|
||
```
|
||
|
||
### API 服务
|
||
|
||
启动服务:
|
||
```bash
|
||
xian_favor serve
|
||
# 或指定端口
|
||
xian_favor serve --port 19014
|
||
```
|
||
|
||
API端点:
|
||
|
||
| 端点 | 方法 | 说明 |
|
||
|------|------|------|
|
||
| `/api/items` | GET | 列出条目 (支持 type/status/tag/keyword 参数) |
|
||
| `/api/items` | POST | 创建条目 |
|
||
| `/api/items/<id>` | GET | 获取详情 |
|
||
| `/api/items/<id>` | PUT | 更新条目 |
|
||
| `/api/items/<id>` | DELETE | 删除条目 |
|
||
| `/api/items/<id>/done` | POST | 完成待办 |
|
||
| `/api/tags` | GET | 列出标签 |
|
||
| `/api/tags` | POST | 创建标签 |
|
||
| `/api/tags/<id>` | DELETE | 删除标签 |
|
||
| `/api/emails` | GET | 列出邮箱 |
|
||
| `/api/emails` | POST | 创建邮箱 |
|
||
| `/api/emails/<id>` | PUT | 更新邮箱 |
|
||
| `/api/emails/<id>` | DELETE | 删除邮箱 |
|
||
| `/api/send-email` | POST | 发送收藏到邮箱 |
|
||
| `/api/stats` | GET | 统计信息 |
|
||
| `/api/search` | GET | 搜索 (参数 q=关键词) |
|
||
|
||
### Web 界面
|
||
|
||
访问 `http://localhost:19014` 即可使用Web界面:
|
||
|
||
- 侧边栏快速筛选(类型、状态)
|
||
- 搜索框实时搜索
|
||
- 统计卡片实时更新
|
||
- 添加/编辑/删除操作
|
||
- 一键完成待办
|
||
|
||
## 数据存储
|
||
|
||
数据保存在 `data/xian_favor.db` (SQLite数据库)
|
||
|
||
## 端口
|
||
|
||
- 默认端口: **19014**
|
||
|
||
## 项目结构
|
||
|
||
```
|
||
xian-favor/
|
||
├── xian_favor/
|
||
│ ├── __init__.py
|
||
│ ├── cli.py # 命令行工具
|
||
│ ├── api.py # API + Web服务
|
||
│ ├── db.py # 数据库操作
|
||
│ └── config.py # 配置
|
||
├── data/
|
||
│ └── xian_favor.db # 数据库
|
||
├── pyproject.toml
|
||
├── requirements.txt
|
||
└── README.md
|
||
```
|
||
|
||
## 版本历史
|
||
|
||
- **v2.4.0** (2026-04-16): 数据库备份机制
|
||
- 自动备份:每天 04:00 执行
|
||
- 手动备份:页面一键操作
|
||
- 备份清理规则:保留30天 + 每月第一天永久保留
|
||
- 手动备份最多保留10个
|
||
- 支持恢复备份和删除备份
|
||
- 备份管理页面入口在侧边栏
|
||
- **v2.3.2** (2026-04-16): 搜索功能修复
|
||
- 修复 debounce 函数定义顺序问题
|
||
- 搜索框输入后可正常过滤列表
|
||
- **v2.3.1** (2026-04-16): 日期放到标题后面,不增加卡片高度
|
||
- 日期紧跟标题,同一行显示
|
||
- 格式紧凑:`04-16 11:09→04-16 12:00`
|
||
- **v2.3.0** (2026-04-16): 卡片显示创建和更新日期
|
||
- 每个收藏卡片底部显示日期
|
||
- 格式:04-16 11:09(月-日 时:分)
|
||
- 有更新时显示:创建 → 更新
|
||
- 字体更小更淡,不影响卡片高度
|
||
- **v2.2.0** (2026-04-16): 快捷添加按钮,一键选择类型
|
||
- 顶部按钮栏分离为4个快捷添加按钮(文本、链接、待办、专栏)
|
||
- 点击直接进入对应类型的添加弹窗
|
||
- 弹窗标题显示类型图标和名称
|
||
- 不再需要下拉选择类型,操作更快捷
|
||
- **v2.1.0** (2026-04-16): 待办截止时间支持日期+时间
|
||
- 截止日期改为日期时间选择器
|
||
- 列表显示友好格式:今天 18:30、明天 09:00 等
|
||
- 详情页显示完整格式:2026年4月16日 18:30
|
||
- 后端支持多种日期格式解析
|
||
- 只有日期的待办视为当天 23:59 到期
|
||
- **v2.0.1** (2026-04-16): 转换弹窗优化
|
||
- 内容预览保留换行格式,提高可读性
|
||
- 转换方式默认改为复制创建
|
||
- **v2.0.0** (2026-04-16): 收藏转待办功能(大版本更新)
|
||
- 新增 `/api/items/<id>/convert` API
|
||
- **直接转换**:原收藏变为待办,数据合并
|
||
- **复制创建**:保留原收藏,新建待办任务
|
||
- 文本/链接/专栏类型可转换
|
||
- 内容自动合并到待办备注
|
||
- 前端列表和详情页添加转换按钮
|
||
- 弹窗配置:标题、状态、优先级、截止日期
|
||
- v1.11.0 (2026-04-16): 已完成待办可重新打开
|
||
- 新增 `/api/items/<id>/reopen` 接口
|
||
- 前端列表已完成待办显示重新打开按钮(↻图标)
|
||
- 可恢复为 pending 或 in_progress 状态
|
||
- v1.10.0 (2026-04-16): 网页端待办到期提醒功能
|
||
- 新增提醒 API `/api/reminders`
|
||
- 获取已过期、今天到期、即将到期的待办
|
||
- 前端顶部提醒栏显示提醒数量和概要
|
||
- 弹窗详情支持快速完成待办
|
||
- 每5分钟自动刷新提醒
|
||
- v1.9.2 (2026-04-14): 邮件发送历史记录
|
||
- 详情页面显示邮件发送记录(发送邮箱、时间)
|
||
- 支持多次发送,显示多条记录
|
||
- 发送成功/失败状态标记
|
||
- v1.9.0 (2026-04-14): 发送邮件功能 + 邮箱管理
|
||
- 每个收藏卡片添加"发送邮件"按钮
|
||
- 选择已有邮箱或输入新邮箱发送
|
||
- 新邮箱自动保存到邮箱管理
|
||
- 邮箱管理页面:添加、编辑、删除邮箱
|
||
- SMTP配置支持环境变量(SMTP_HOST, SMTP_PORT, SMTP_USER, SMTP_PASS)
|
||
- v1.8.0 (2026-04-13): AI自动添加功能,智能识别文本类型并整理数据
|
||
- 首页新增"AI添加"按钮
|
||
- 粘贴文本/链接/笔记等,AI自动识别类型并提取关键信息
|
||
- 支持文本、链接、专栏、待办四种类型自动识别
|
||
- 自动生成标签和标题
|
||
- v1.7.0 (2026-04-13): 编辑收藏时支持更改类型,动态显示对应字段
|
||
- v1.6.0 (2026-04-13): 标签管理添加编辑功能,支持修改标签名称
|
||
- v1.5.1 (2026-04-13): 标签管理添加搜索功能,实时过滤标签列表
|
||
- v1.5.0 (2026-04-13): 首页添加分页功能,每页20条记录
|
||
- v1.4.0 (2026-04-13): 首页添加导出按钮,一键导出所有收藏为JSON文件
|
||
- v1.3.2 (2026-04-13): 编辑和添加模态框改为大尺寸(modal-lg)
|
||
- v1.3.1 (2026-04-13): 备注改名为详情,支持换行显示,扩大输入框
|
||
- v1.3.0 (2026-04-13): 标签管理功能和输入自动提示
|
||
- 侧边栏新增"标签管理"入口
|
||
- 标签管理页面:显示所有标签、使用条目数、创建/删除标签
|
||
- 添加/编辑时标签输入支持自动提示(输入时显示匹配的已有标签)
|
||
- 点击提示标签快速添加
|
||
- v1.2.1 (2026-04-13): 卡片显示两行,第二行显示内容预览
|
||
- v1.2.0 (2026-04-13): 压缩首页卡片高度,更紧凑的列表布局
|
||
- v1.1.1 (2026-04-13): 编辑备注改为多行输入框
|
||
- v1.1.0 (2026-04-13): 网页端支持查看详情和编辑功能
|
||
- v1.0.0 (2026-04-12): 初始版本,支持CLI/API/Web三种模式 |