iBook/TODO.md

5.0 KiB
Raw Permalink Blame History

项目 TODO 总览

汇总此前在对话中提出或实现的需求与改进想法。分为:已完成、待办、可选增强。

1. 已完成 (Done)

  • 多策略解析封面图片(直接 cover., cover.html 内引用, OPF meta cover, xlink:href, URL decode, 递归搜索)
  • 将 AI 书籍简评接入DashScopeChatClient生成 3 段 400 字左右精炼书评
  • AI 简评加入 JSON (bookintro.json) 缓存,避免重复请求
  • AI 调用改为后台线程,防止 UI 卡顿;增加线程列表与窗口关闭时的优雅等待,修复 QThread destroyed while running 问题
  • 书籍信息与简评改为 HTML 展示;标题加粗彩色(紫红/洋红色)
  • 保留 AI 书评段落结构(按空行/空白拆分为多段 <p>
  • 单封面右上角自适应缩放实现
  • 扩展为三张封面并排展示(当前 + 后两本)
  • 三张封面与文本区域对齐,初版等宽缩放
  • 封面支持失真填充模式IgnoreAspectRatio + setScaledContents
  • 封面宽度锁定 150并按比例1:1.4 初版 -> 1:1.2)设定高度上限自适应
  • 将封面布局与 text edit 合并到 .ui 文件(ibook_export_app.ui)而非运行时动态创建
  • 导出笔记功能Markdown 命名含时间戳 + 书名截断)
  • 统计标签页:原生 Qt 图表(周 / 30 天 / 12 月 / 气泡汇总)集成
  • 窗口几何尺寸持久化 (QSettings)
  • 错误/无封面显示文本占位

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. 测试与封面解析单元测试(稳定性)

若需要我直接实现其中某一项,请告诉我对应条目。欢迎补充。