Skip to content

v0.3.0 - RSS 文章持久化架构重构

Choose a tag to compare

@wxy wxy released this 05 Dec 03:06
107a29c

Silent Feed v0.3.0 发布总结

发布日期: 2024-12-05
版本类型: Minor Release
主题: 架构重构 & 性能优化 & 可视化增强


🎯 核心亮点

1. RSS 文章持久化架构重构 (Phase 10) ⭐ 重大架构升级

PR: #58
问题: RSS 更新时删除旧文章,导致推荐池中的文章消失,统计数据错误

解决方案: 重构数据架构,实现文章状态追踪而非物理删除

Sprint 1: 数据库 Schema 升级 (v15 → v16)

新增 13 个字段:

  • 推荐池管理: inPool, poolAddedAt, poolRemovedAt, poolRemovedReason
  • RSS 状态追踪: inFeed, lastSeenInFeed
  • 软删除支持: deleted, deletedAt, deleteReason
  • 元数据追踪: metadataUpdatedAt, updateCount
  • 重要性评分: importance (0-100)

新增索引: [inPool+poolAddedAt], [inFeed+published], [deleted+deletedAt]

自动迁移系统:

  • 检测是否需要迁移(检查新字段是否存在)
  • 同步推荐状态到文章表
  • 计算文章重要性评分
  • 初始化默认值

Sprint 2: RSS 增量追加策略

核心改进:

  • 删除物理删除逻辑 - 不再 bulkDelete 旧文章
  • 增量追加 - 新文章标记 inFeed=true,旧文章标记 inFeed=false
  • 保护推荐池 - inPool=true 的文章不会被标记为过期

效果:

  • 推荐池文章永久保留,统计数据准确
  • 历史文章可追溯,用户行为完整记录
  • RSS 更新不再影响已推荐内容

Sprint 3: 推荐池状态同步

实现:

  • 推荐生成时: 新增推荐 inPool=true,被替换推荐 inPool=false
  • 阅读操作时: 同步更新 read=true, inPool=false
  • 不想读操作时: 同步更新 dismissed=true, inPool=false

2. AI 摘要集成 (MVP)

PR: #54

功能: 使用 AI 生成的摘要替换 RSS 原始摘要

实现:

  • 推荐生成时自动调用 AI 分析接口
  • 提取 AI 返回的摘要字段
  • 优先显示 AI 摘要,降级到 RSS 摘要

用户价值:

  • 更准确的文章概述
  • 统一的摘要格式
  • 更好的推荐决策依据

3. 订阅源蛛网图可视化 (Phase 11)

PR: #59

实际功能: 以订阅源为轴的雷达图,直观展示每个订阅源的文章分布和用户行为

蛛网图结构:

  • 轴线: 每个已订阅的 RSS 源对应一条轴(从中心向外辐射)
  • 数据层: 每条轴上展示 4 个数据点(从外到内叠加):
    1. 文章总数 (黄色,透明度 0.2) - 包括历史文章
    2. 推荐总数 (绿色,透明度 0.3) - 已推荐 + 推荐池中的文章
    3. 不想读总数 (红色,透明度 0.4) - 用户标记为不感兴趣
    4. 阅读总数 (蓝色,透明度 0.5) - 用户已阅读的文章

技术实现:

  • 对数归一化: 使用 log(value + 1) 避免大数值遮挡小数值
  • 对称排列算法: 优化订阅源在圆周上的分布,提升视觉平衡
  • 二阶贝塞尔曲线: 平滑连接数据点,避免尖锐折角
  • 最差订阅源标记: 自动标记推荐数最低的 3 个源(红色警告 + 脉冲动画)
  • 响应式设计: 800x500 宽屏比例,适配标签展开布局

用户价值:

  • ✅ 快速识别高质量订阅源(推荐数多、阅读率高)
  • ✅ 发现低价值订阅源(推荐数少、不想读多)
  • ✅ 数据驱动的订阅管理决策

4. 推荐系统性能优化

分支: fix/recommendation-optimization

4.1 画像重建防抖机制

问题: 快速连续标记"不想读"触发多次 AI 请求,浪费 API 配额

解决方案: 5 秒防抖,批量处理拒绝记录

效果:

  • 节省 80% API 请求: 5 次快速操作 → 1 次 AI 调用
  • 用户体验无影响:拒绝行为立即记录
  • 画像更新延迟 5 秒,用户无感知

4.2 推荐池容量优化

问题: 推荐池容量 = 窗口大小(3 条),预备队列不足

解决方案: 推荐池容量扩大至 2 倍窗口大小(3 → 6 条)

效果:

  • 预备队列增加 100%
  • 提升推荐多样性
  • 更快的推荐补充

🐛 Bug 修复

1. 翻译逻辑优化

问题: 推荐翻译使用 navigator.language 而非用户设置的 i18n.language

修复: 使用 i18n.language 作为目标语言判断依据

影响: 修正了英文界面下推荐条目的语言标签显示错误

2. RSS 更新覆盖用户操作状态 (Phase 10)

问题: RSS 重新抓取时覆盖用户的阅读/不想读状态

修复: 增量更新策略,保护已有用户操作数据

3. 语言标签点击无法移除推荐

问题: 点击推荐条目的语言标签后无法正确移除条目

修复: 修正事件冒泡和状态同步逻辑

4. Favicon 错误处理优化

问题: Favicon 加载失败导致控制台错误

修复: 静默失败,自动降级到扩展图标

5. 推荐统计数据不一致 (Phase 10)

问题: 推荐数统计与实际推荐池不同步

修复: 同步推荐状态到文章表,统一数据源

6. 数据迁移重复运行 (Phase 10)

问题: 重启后重复执行数据迁移

修复: 添加迁移检测逻辑,仅首次运行


🎨 UI 改进

1. 系统数据页卡片优化

  • 数值右对齐,提升可读性
  • 适用范围:学习页面数、存储占用、AI 成本统计
  • 保持多行数据的视觉一致性

2. RSS 设置优化

  • 渲染层移除标题中的历史域名后缀(不改数据库)
  • 订阅来源标签颜色区分(发现/手动/导入)
  • 已分析方块进一步变浅提升可读性

3. 推荐池进度条优化 (Phase 10)

  • 修复进度条累积问题
  • 显示推荐池管理状态

📊 版本数据对比

指标 v0.2.0 v0.3.0 变化
核心功能 7 个 11 个 +57%
架构重构 - Phase 10 新增
数据库版本 v15 v16 +13 字段
可视化组件 3 个 4 个 +1 (蛛网图)
测试用例 1,401 1,464 +63
代码覆盖率 71% 72.7% +1.7%
性能优化 - 80% API 节省 新增
Bug 修复 - 6 个 新增

🔧 技术改进

1. 数据库架构升级 (v15 → v16)

  • 新增字段: 13 个(推荐池管理、RSS 状态追踪、软删除)
  • 新增索引: 3 个复合索引提升查询性能
  • 自动迁移: 智能检测和数据迁移系统
  • 向后兼容: 自动初始化默认值

2. 测试覆盖率提升

  • 行覆盖率: 71% → 72.7% (+1.7%)
  • 函数覆盖率: 71% → 73.06% (+2.06%)
  • 分支覆盖率: 60% → 62.39% (+2.39%)
  • 新增测试: 63 个(防抖机制、蛛网图、Phase 10 迁移逻辑)

3. 代码质量

  • 所有新功能都有对应的单元测试
  • 测试套件:1464/1465 通过 (99.9%)
  • 防抖逻辑使用真实定时器测试
  • Phase 10 迁移逻辑完整测试覆盖

4. 文档完善

  • 新增 PHASE_10_COMPLETION.md: Phase 10 完成总结(400+ 行)
  • 新增 PHASE_10_DEBUGGING_GUIDE.md: 调试和验证指南
  • 新增 RECOMMENDATION_OPTIMIZATION.md: 性能优化方案文档
  • 更新 CHANGELOG.md: 详细的版本更新记录
  • 国际化文档更新:蛛网图相关翻译

5. 性能优化

  • API 成本降低 80%: 防抖机制批量处理用户操作
  • 推荐多样性提升 100%: 推荐池容量翻倍
  • 查询性能提升: 新增复合索引优化数据库查询

📝 已知问题修复

参考 docs/bugs 文件,以下问题已在 v0.3.0 修复:

  • 翻译逻辑 bug: 语言检测错误,使用浏览器语言而非用户设置
  • 快速连续操作导致 API 浪费: 防抖机制解决
  • 推荐池容量不足: 扩容至 2 倍解决
  • RSS 更新覆盖用户状态: Phase 10 架构重构解决
  • 推荐统计数据不一致: 状态同步机制解决
  • 数据迁移重复运行: 检测逻辑解决

🚀 下一步计划 (v0.4.0)

计划功能

  1. Chrome AI 集成: 免费的浏览器内置 AI 支持(Chrome 内置 Gemini Nano)
  2. 预算提醒: AI 用量预算设置和超额提醒
  3. 推荐算法优化: 基于用户反馈的机器学习改进
  4. 数据库性能优化: 进一步的查询优化和缓存策略

待处理 Bugs

参考 docs/bugs 文件中未完成的 [ ] 项目


🙏 致谢

感谢所有用户的反馈和建议!

本次发布包含:

  • 4 个主要功能: Phase 10 架构重构、AI 摘要、蛛网图、性能优化
  • 6 个 Bug 修复: 涵盖翻译、RSS、推荐系统等
  • 3 个 UI 改进: 提升用户体验和视觉效果

文档版本: 2.0
最后更新: 2024-12-05
维护者: Silent Feed Team