# ZJPB v2.2.0 Git Patch 部署指南 ## 版本信息 - **版本号**: v2.2.0 - **发布日期**: 2025-12-30 - **主要功能**: 博查新闻搜索集成 --- ## 新功能概述 ### 1. 博查Web Search API集成 - 自动获取网站相关新闻 - 支持手动和批量获取 - 新闻来源展示(网站名称+图标) ### 2. 智能新闻更新机制 - **每日首次访问触发更新**:用户访问网站详情页时,如果今天还没有更新过新闻,自动获取最新3条 - **历史新闻保留**:如果没有访问,保留历史新闻不会被删除 - **一周内新闻**:只获取最近一周的相关新闻 - **自动去重**:根据URL防止重复新闻 ### 3. 数据库扩展 - News表新增字段: - `source_name`: 新闻来源网站名称 - `source_icon`: 新闻来源网站图标URL ### 4. 用户界面优化 - 网站详情页新增"相关新闻"模块 - 新闻展示包括:标题、摘要、来源、发布时间、阅读链接 - "相似推荐"移至右侧边栏,界面更加清晰 ### 5. 管理功能 - 后台新闻管理界面优化 - 支持批量获取所有网站的新闻 - 定期任务脚本 `fetch_news_cron.py` --- ## 部署前准备 ### 1. 环境要求 - Python 3.8+ - MySQL 5.7+ - Git已配置 - 虚拟环境已创建 ### 2. 配置检查 **必需配置**(生产服务器.env文件): ```bash # 博查 Web Search API配置(必需!) BOCHA_API_KEY=your_api_key_here BOCHA_BASE_URL=https://api.bocha.cn ``` 如果没有配置BOCHA_API_KEY: - 新闻功能不会运行 - 不会影响其他功能 - 详情页会正常显示,只是没有新闻模块 ### 3. 备份数据库 在1Panel中备份数据库: ```bash # 或者使用命令行 mysqldump -h 112.124.42.38 -u ai_nav -p ai_nav > backup_before_v2.2_$(date +%Y%m%d).sql ``` --- ## 部署步骤 ### 方法一:Git Patch部署(推荐) #### 1. 上传文件到服务器 需要上传2个文件到 `/opt/1panel/apps/zjpb/`: - `v2.2.0.patch` (56KB) - `git_patch_deploy_v2.2.sh` **使用1Panel文件管理器**或**SCP命令**: ```bash scp v2.2.0.patch root@your-server:/opt/1panel/apps/zjpb/ scp git_patch_deploy_v2.2.sh root@your-server:/opt/1panel/apps/zjpb/ ``` #### 2. 执行部署脚本 SSH登录服务器或使用1Panel终端: ```bash cd /opt/1panel/apps/zjpb # 赋予执行权限 chmod +x git_patch_deploy_v2.2.sh # 执行部署 ./git_patch_deploy_v2.2.sh ``` #### 3. 脚本自动完成的操作 ``` 1. 停止应用 2. 检查Git状态 3. 备份未提交的修改(如有) 4. 应用v2.2.0补丁 - 添加NewsSearcher工具类 - 更新app.py(新闻路由+智能更新) - 更新models.py(News字段扩展) - 更新config.py(博查API配置) - 更新detail_new.html(新闻展示UI) - 添加数据库迁移脚本 - 添加测试脚本和定期任务脚本 5. 提交到Git 6. 激活虚拟环境 7. 安装依赖 8. 运行数据库迁移(添加source_name和source_icon字段) 9. 重启应用 10. 检查状态 ``` --- ## 部署后验证 ### 1. 前台验证 **访问网站详情页**: ``` http://your-domain.com/site/xxxxxxxx ``` 检查项: - [ ] 页面正常加载 - [ ] 如果配置了BOCHA_API_KEY,首次访问会自动获取新闻 - [ ] "相关新闻"模块显示在左侧主栏 - [ ] "相似推荐"显示在右侧边栏 - [ ] 新闻显示来源名称和图标 - [ ] 点击新闻标题可以跳转到原文 ### 2. 后台验证 **登录后台管理**: ``` http://your-domain.com/admin/login ``` 检查项: - [ ] 进入"新闻管理" `/admin/newsadmin/` - [ ] 列表显示包含source_name和source_icon - [ ] 可以搜索和过滤新闻 - [ ] 编辑新闻时可以看到新字段 ### 3. 数据库验证 ```sql -- 检查news表结构 DESCRIBE news; -- 应该看到新字段 -- source_name VARCHAR(100) -- source_icon VARCHAR(500) -- 检查现有新闻数据 SELECT id, title, source_name, source_icon FROM news ORDER BY created_at DESC LIMIT 5; ``` ### 4. API测试(可选) 如果配置了BOCHA_API_KEY,可以测试API: ```bash # 在服务器上 cd /opt/1panel/apps/zjpb source venv/bin/activate # 运行测试脚本 python test_news_feature.py ``` ### 5. 日志检查 ```bash # 查看应用日志 ./manage.sh logs # 或者查看Gunicorn日志 tail -f logs/gunicorn_error.log ``` --- ## 配置博查API(重要) ### 1. 获取API Key 如果还没有博查API Key: 1. 访问 https://api.bocha.cn 2. 注册并获取API Key 3. 充值(建议至少10元,用于测试) ### 2. 配置.env文件 编辑生产服务器的.env文件: ```bash nano /opt/1panel/apps/zjpb/.env ``` 添加或更新: ```bash # 博查 Web Search API配置 BOCHA_API_KEY=sk-your-actual-api-key-here BOCHA_BASE_URL=https://api.bocha.cn ``` ### 3. 重启应用 ```bash cd /opt/1panel/apps/zjpb ./manage.sh restart ``` --- ## 定期任务配置(可选) 如果想定期批量更新所有网站的新闻,可以配置cron任务: ### 1. 编辑crontab ```bash crontab -e ``` ### 2. 添加定时任务 ```bash # 每天凌晨2点更新前10个网站的新闻(每个网站获取3条) 0 2 * * * cd /opt/1panel/apps/zjpb && source venv/bin/activate && python fetch_news_cron.py --limit 10 --count 3 >> logs/cron_news.log 2>&1 ``` ### 3. 查看定期任务日志 ```bash tail -f /opt/1panel/apps/zjpb/logs/cron_news.log ``` --- ## 常见问题排查 ### 1. 新闻不显示 **检查项**: - BOCHA_API_KEY是否配置正确? - API Key是否有余额? - 网站是否有相关新闻? - 查看应用日志是否有错误 **测试命令**: ```bash cd /opt/1panel/apps/zjpb source venv/bin/activate python test_news_feature.py ``` ### 2. 数据库迁移失败 **症状**:source_name或source_icon字段不存在 **解决方案**: ```bash cd /opt/1panel/apps/zjpb source venv/bin/activate python migrate_news_fields.py ``` ### 3. 页面报错 **检查**: ```bash # 查看错误日志 ./manage.sh logs # 检查进程状态 ./manage.sh status # 重启应用 ./manage.sh restart ``` ### 4. 补丁应用失败 **症状**:`git apply --check` 失败 **原因**:可能有未提交的本地修改冲突 **解决方案**: ```bash # 查看冲突文件 git status # 备份本地修改 git stash # 重新应用补丁 git apply v2.2.0.patch # 如需恢复本地修改 git stash pop ``` --- ## 回滚方案 如果部署后发现问题,可以快速回滚: ### 1. 回滚代码 ```bash cd /opt/1panel/apps/zjpb ./manage.sh stop # 回滚到上一个提交(v2.1.0) git reset --hard HEAD~2 # 如果有stash备份,恢复它 git stash list git stash pop ./manage.sh start ``` ### 2. 回滚数据库(如需要) ```bash # 删除新添加的字段 mysql -h 112.124.42.38 -u ai_nav -p ai_nav ALTER TABLE news DROP COLUMN source_name; ALTER TABLE news DROP COLUMN source_icon; ``` --- ## 性能说明 ### 1. 智能更新策略 - **触发条件**:用户首次访问网站详情页 + 今天还没更新过新闻 - **更新频率**:每个网站每天最多更新一次 - **查询数量**:每次获取3条新闻 - **时间范围**:最近一周内的新闻 - **API调用**:只有满足更新条件时才会调用 ### 2. 对用户体验的影响 - **首次加载**:如果触发新闻更新,页面加载时间增加1-3秒 - **后续访问**:使用缓存的新闻,无额外延迟 - **错误处理**:API调用失败不影响页面正常显示 - **异步加载**:后续可优化为异步加载新闻模块 ### 3. 成本估算 - 假设每天100个网站被访问,每个网站触发一次新闻更新 - 每次查询约0.01元(参考博查API定价) - 每天成本约1元,每月约30元 --- ## 版本对比 | 功能 | v2.1.0 | v2.2.0 | |------|--------|--------| | Prompt管理 | ✅ | ✅ | | 标签生成 | ✅ | ✅ | | 功能生成 | ✅ | ✅ | | 详细介绍生成 | ✅ | ✅ | | 新闻搜索 | ❌ | ✅ | | 新闻展示 | ❌ | ✅ | | 智能更新 | ❌ | ✅ | | 新闻来源信息 | ❌ | ✅ | | 定期任务 | ❌ | ✅ | --- ## 后续优化建议 1. **新闻模块异步加载**:使用AJAX加载新闻,不阻塞页面 2. **缓存优化**:使用Redis缓存新闻数据 3. **全文搜索**:支持在新闻内容中搜索关键词 4. **RSS订阅**:为网站新闻生成RSS feed 5. **新闻分类**:根据新闻类型自动分类 6. **新闻推荐**:基于用户行为推荐相关新闻 --- ## 完整部署命令(一键复制) ```bash # SSH登录服务器后执行 cd /opt/1panel/apps/zjpb # 检查上传的文件 ls -lh v2.2.0.patch git_patch_deploy_v2.2.sh # 赋予执行权限 chmod +x git_patch_deploy_v2.2.sh # 执行部署 ./git_patch_deploy_v2.2.sh # 配置API Key(如果还没配置) nano .env # 添加:BOCHA_API_KEY=your-key-here # 重启应用(如果修改了.env) ./manage.sh restart # 验证部署 ./manage.sh status git log --oneline -3 ``` --- ## 技术支持 如有问题,请检查: 1. 应用日志:`./manage.sh logs` 2. 数据库连接:检查.env中的DB_配置 3. API配置:检查BOCHA_API_KEY是否正确 4. 网络连接:确认服务器可以访问 api.bocha.cn --- ## 更新日志 ### v2.2.0 (2025-12-30) - 新增博查Web Search API集成 - 新增智能新闻更新机制 - News模型扩展(source_name, source_icon) - 新增网站详情页新闻模块 - 新增定期任务脚本和测试工具 - 优化详情页布局(新闻左侧,推荐右侧) --- **部署文档版本**: v1.0 **最后更新**: 2025-12-30 **维护者**: ZJPB开发团队