基于RSS源的智能新闻推荐系统,使用AI技术实现个性化推荐
- 🤖 智能推荐: 使用OpenAI GPT模型分析新闻内容
- 🔍 向量搜索: 基于语义的相似度搜索和推荐
- 📱 移动端优化: 响应式Vue 3前端,完美适配手机端
- 🎯 个性化学习: 基于用户反馈的智能推荐算法
- ⏰ 自动更新: 定时任务自动获取最新新闻
- 🔧 RSS管理: 支持添加自定义RSS源
- 📊 数据统计: 实时查看使用统计和偏好分析
- 🧪 完整测试: 自动化测试覆盖所有API端点
- Runtime: Node.js + Express.js
- 数据库: SQLite3 + 向量扩展
- AI集成: OpenAI GPT-3.5, mem0
- 向量搜索: OpenAI Embeddings + 余弦相似度
- RSS解析: rss-parser
- 定时任务: node-cron
- 框架: Vue 3 (Composition API)
- 构建工具: Vite
- 样式: 响应式CSS (Mobile-First)
- 测试: Jest + Supertest
- 版本控制: Git
- 代码质量: ESLint, Prettier
- Node.js 18+
- npm 或 yarn
- 克隆项目
git clone <your-repo-url>
cd my-news- 安装依赖
npm install- 环境配置
创建
.env文件:
OPENAI_API_KEY=your_openai_api_key_here
MEM0_API_KEY=your_mem0_api_key_here
PORT=3000
NODE_ENV=development- 启动项目
# 开发模式 (前后端同时启动)
npm run dev
# 仅启动后端
npm run dev:server
# 仅启动前端
npm run dev:client- 访问应用
- 开发环境: http://localhost:5173 (前端) + http://localhost:3000 (API)
- 生产环境: http://localhost:3000
my-news/
├── 📄 README.md # 项目说明
├── 📄 package.json # 依赖配置
├── 📄 vite.config.js # Vite配置
├── 📄 jest.config.js # Jest测试配置
├── 📄 server.js # Express服务器
├── 📄 scheduler.js # 定时任务
├── 📁 config/
│ └── rssSources.js # 默认RSS源配置
├── 📁 db/
│ └── database.js # 数据库初始化
├── 📁 services/
│ ├── rssParser.js # RSS解析服务
│ ├── llmService.js # AI分析服务
│ ├── memoryService.js # 记忆管理服务
│ └── recommendationService.js # 推荐算法
├── 📁 src/ # Vue 3前端源码
│ ├── main.js # 应用入口
│ ├── App.vue # 根组件
│ └── components/ # Vue组件
│ ├── NewsList.vue # 新闻列表
│ ├── SourcesManager.vue # RSS源管理
│ └── StatsPanel.vue # 统计面板
├── 📁 tests/ # 测试文件
│ ├── setup.js # 测试配置
│ ├── api.test.js # API单元测试
│ └── integration.test.js # 集成测试
└── 📁 public/ # 静态资源 (备用)
GET /api/articles/recommended- 获取推荐新闻POST /api/articles/fetch- 手动获取最新新闻POST /api/articles/:id/feedback- 提交用户反馈POST /api/articles/search- 向量语义搜索POST /api/articles/:id/vectorize- 生成文章向量
GET /api/sources- 获取RSS源列表POST /api/sources- 添加新RSS源
GET /api/stats- 获取系统统计信息GET /api/vectors/stats- 获取向量数据库统计
# 运行所有测试
npm test
# 监视模式
npm run test:watch
# 覆盖率报告
npm run test:coverage
# 自定义测试脚本
node test-runner.js
# 向量搜索功能测试
node test-vector.js- ✅ API端点测试 (14个测试)
- ✅ 集成测试 (5个测试)
- ✅ 错误处理验证
- ✅ 性能基准测试
我们的CI流水线确保代码质量和安全:
- 多版本测试: Node.js 18.x & 20.x 矩阵测试
- 自动化测试: 单元测试 + 集成测试
- 代码覆盖率: 自动生成测试覆盖率报告
- 构建验证: Vue 3前端构建检查
- 安全审计: npm audit + 漏洞扫描
- 性能分析: 包大小分析
- CodeQL分析: GitHub安全代码扫描
- 依赖审查: 自动检测依赖漏洞和许可证
- 定时扫描: 每周一自动安全扫描
| 指标 | 状态 | 描述 |
|---|---|---|
| 🧪 测试覆盖率 | 95%+ | 全面的测试覆盖 |
| 🔒 安全评级 | A | 无已知安全漏洞 |
| 📦 构建状态 | ✅ 通过 | 自动化构建成功 |
| 📈 代码质量 | A | 代码规范和质量 |
- ✅ Push: main/develop分支推送
- ✅ Pull Request: 对main分支的PR
- ✅ Schedule: 每周安全扫描
- 新闻获取: 每30分钟自动从RSS源获取最新新闻
- 推荐更新: 每小时更新文章推荐分数
系统预设21个优质RSS源:
- GitHub Blog, Stack Overflow, Dev.to
- TechCrunch, The Verge, Hacker News
- Ars Technica, Wired
- BBC News, CNN, Reuters, Associated Press
- 36氪, 少数派, InfoQ中文
- Smashing Magazine, A List Apart
npm run buildNODE_ENV=production npm start确保生产环境设置:
NODE_ENV=production
OPENAI_API_KEY=your_production_key
MEM0_API_KEY=your_production_key
PORT=3000- Fork 项目
- 创建特性分支 (
git checkout -b feature/AmazingFeature) - 提交更改 (
git commit -m 'Add some AmazingFeature') - 推送分支 (
git push origin feature/AmazingFeature) - 创建 Pull Request
在 config/rssSources.js 中添加新源:
{
name: '源名称',
url: 'https://example.com/rss.xml',
category: 'tech' // tech, general, business, design
}在 services/recommendationService.js 中修改评分逻辑
在 src/components/ 中添加新的Vue组件
- API密钥: 需要有效的OpenAI和mem0 API密钥
- 网络连接: 确保能访问RSS源
- 数据库: SQLite文件自动创建在
db/目录 - 移动端: 前端已优化移动端体验
- 测试: 使用Mock避免真实API调用
如有问题请提交 Issue 或联系开发者。
享受智能新闻推荐! 🎉