89 lines
5.0 KiB
Markdown
89 lines
5.0 KiB
Markdown
# 项目 TODO 总览
|
||
|
||
> 汇总此前在对话中提出或实现的需求与改进想法。分为:已完成、待办、可选增强。
|
||
|
||
## 1. 已完成 (Done)
|
||
- [x] 多策略解析封面图片(直接 cover.*, cover*.html 内引用, OPF meta cover, xlink:href, URL decode, 递归搜索)
|
||
- [x] 将 AI 书籍简评接入(DashScopeChatClient),生成 3 段 400 字左右精炼书评
|
||
- [x] AI 简评加入 JSON (`bookintro.json`) 缓存,避免重复请求
|
||
- [x] AI 调用改为后台线程,防止 UI 卡顿;增加线程列表与窗口关闭时的优雅等待,修复 QThread destroyed while running 问题
|
||
- [x] 书籍信息与简评改为 HTML 展示;标题加粗彩色(紫红/洋红色)
|
||
- [x] 保留 AI 书评段落结构(按空行/空白拆分为多段 `<p>`)
|
||
- [x] 单封面右上角自适应缩放实现
|
||
- [x] 扩展为三张封面并排展示(当前 + 后两本)
|
||
- [x] 三张封面与文本区域对齐,初版等宽缩放
|
||
- [x] 封面支持失真填充模式(IgnoreAspectRatio + setScaledContents)
|
||
- [x] 封面宽度锁定 150,并按比例(1:1.4 初版 -> 1:1.2)设定高度上限自适应
|
||
- [x] 将封面布局与 text edit 合并到 `.ui` 文件(`ibook_export_app.ui`)而非运行时动态创建
|
||
- [x] 导出笔记功能(Markdown 命名含时间戳 + 书名截断)
|
||
- [x] 统计标签页:原生 Qt 图表(周 / 30 天 / 12 月 / 气泡汇总)集成
|
||
- [x] 窗口几何尺寸持久化 (QSettings)
|
||
- [x] 错误/无封面显示文本占位
|
||
|
||
## 2. 待办 (Backlog / 未实现需求)
|
||
- [ ] 封面点击交互:点击第 2 / 3 张封面切换列表选中对应书籍
|
||
- [ ] 缺失封面使用统一图片占位 (placeholder.png) 替代文字
|
||
- [ ] 封面高度完全由窗口高度动态拉伸(移除当前 45% 与 400 上限策略或做成配置)
|
||
- [ ] 可配置封面显示模式:等比缩放 / 失真填充 / 居中裁剪
|
||
- [ ] AI 书评请求取消 / 防抖(快速切换书籍时取消前一线程)
|
||
- [ ] AI 简评失败后重试按钮或自动重试逻辑
|
||
- [ ] 配置对话框持久化写回 `config.py`(当前仅本次运行)
|
||
- [ ] 导出格式可选 (Markdown / HTML / PDF)
|
||
- [ ] 导出时附带封面图片(复制到输出目录或转换为 Base64 嵌入)
|
||
- [ ] 书籍列表支持搜索 / 过滤 (作者 / 书名 / 最近打开时间)
|
||
- [ ] 异步加载封面(当前是同步文件系统扫描)
|
||
- [ ] 提取封面解析逻辑为独立模块并加单元测试
|
||
- [ ] 统计图表:添加 hover 提示/数据标签开关
|
||
- [ ] 年度 / 月度阅读统计图表空数据时的占位样式统一
|
||
- [ ] 增加日志记录(AI 请求、封面解析耗时)
|
||
- [ ] 国际化(中英切换)
|
||
- [ ] 转化为iPAD APP,熟悉iOS APP上架等流程。
|
||
- [ ] 前后端分离,后端云上部署,开放restful接口给前端调用。
|
||
|
||
## 3. 可选增强 (Nice to Have / Ideas)
|
||
- [ ] 缓存封面缩略图,减少重复磁盘读取与缩放开销
|
||
- [ ] 多线程并行预取下一批书封面与书评
|
||
- [ ] AI 书评提示词可定制(长度 / 语气 / 侧重点)
|
||
- [ ] 书评显示字数限制 / 展开收起
|
||
- [ ] 支持本地笔记全文搜索与高亮(跨书)
|
||
- [ ] Dark Mode 自适应 (Qt Palette + 自定义样式)
|
||
- [ ] 统计图数据导出 (CSV/JSON)
|
||
- [ ] 书籍元数据导入/刷新(重新扫描数据源)按钮
|
||
- [ ] 键盘快捷键:导出(E), 配置(C), 切换封面焦点, 上下本书(J/K)
|
||
- [ ] 自动更新检查机制
|
||
- [ ] 使用 QThreadPool + QRunnable 替代手动线程列表管理
|
||
- [ ] 添加简单单元测试框架 (pytest) 验证封面解析与导出核心逻辑
|
||
- [ ] 封面区域添加标题(“当前/下一本/再下一本”)并可隐藏
|
||
- [ ] 支持拖放本地 epub/ibooks 包,临时解析显示
|
||
- [ ] 界面字体可选择,config中配置
|
||
- [ ] **提供书籍下载功能(我的600+的书籍可以分享,版权问题?),web版本**(最好单独申请域名,容易被封)
|
||
|
||
## 4. 技术债 (Tech Debt)
|
||
- [ ] `ibook_export_app.py` 体积过大(UI/业务/AI/封面解析混杂)→ 拆分模块:`cover_finder.py` / `ai_review.py` / `ui_main.py`
|
||
- [ ] 缺少异常分类(目前大量 bare except 打印)
|
||
- [ ] 无统一日志(建议 logging + 级别控制)
|
||
- [ ] 缺少类型注解与 mypy 校验
|
||
- [ ] 缺少依赖检查与缺包提示 (PyQt6, charts)
|
||
|
||
## 5. 配置项建议
|
||
| 功能 | 建议配置键 | 说明 |
|
||
|------|------------|------|
|
||
| 封面模式 | COVER_MODE | stretch / keep_ratio / crop |
|
||
| 封面固定宽度 | COVER_FIXED_WIDTH | 默认 150 |
|
||
| 高宽比例 | COVER_HW_RATIO | 默认 1.2 |
|
||
| AI 书评开关 | ENABLE_AI_REVIEW | bool |
|
||
| AI 提示词模板 | AI_REVIEW_PROMPT | 可包含 {bookname} |
|
||
| 线程超时 | WORKER_TIMEOUT_SEC | 默认 8 |
|
||
|
||
## 6. 下一步优先级建议
|
||
1. 点击封面切换书籍(提升可用性)
|
||
2. 占位图与封面缓存(视觉一致 + 性能)
|
||
3. AI 请求取消/防抖(提升体验)
|
||
4. 模块拆分 + 日志/类型注解(降低维护成本)
|
||
5. 测试与封面解析单元测试(稳定性)
|
||
|
||
---
|
||
若需要我直接实现其中某一项,请告诉我对应条目。欢迎补充。
|
||
|
||
|