iBook/TODO.md

84 lines
4.7 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# 项目 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 请求、封面解析耗时)
- [ ] 国际化(中英切换)
## 3. 可选增强 (Nice to Have / Ideas)
- [ ] 缓存封面缩略图,减少重复磁盘读取与缩放开销
- [ ] 多线程并行预取下一批书封面与书评
- [ ] AI 书评提示词可定制(长度 / 语气 / 侧重点)
- [ ] 书评显示字数限制 / 展开收起
- [ ] 支持本地笔记全文搜索与高亮(跨书)
- [ ] Dark Mode 自适应 (Qt Palette + 自定义样式)
- [ ] 统计图数据导出 (CSV/JSON)
- [ ] 书籍元数据导入/刷新(重新扫描数据源)按钮
- [ ] 键盘快捷键:导出(E), 配置(C), 切换封面焦点, 上下本书(J/K)
- [ ] 自动更新检查机制
- [ ] 使用 QThreadPool + QRunnable 替代手动线程列表管理
- [ ] 添加简单单元测试框架 (pytest) 验证封面解析与导出核心逻辑
- [ ] 封面区域添加标题(“当前/下一本/再下一本”)并可隐藏
- [ ] 支持拖放本地 epub/ibooks 包,临时解析显示
- [ ] 界面字体可选择config中配置
## 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. 测试与封面解析单元测试(稳定性)
---
若需要我直接实现其中某一项,请告诉我对应条目。欢迎补充。