# ZJPB v2.3.0 部署指南 **版本**: v2.3.0 **发布日期**: 2025-12-31 **核心功能**: 新闻获取准确性优化 --- ## 📋 版本概述 v2.3.0版本专注于解决新闻获取准确性问题,通过引入专用新闻关键词字段和严格匹配策略,显著提升新闻相关性。 ### ✨ 核心改进 1. **专用新闻关键词字段** - Sites表新增`news_keywords`字段 - 支持为每个网站设置专属搜索关键词 - 避免网站名称混淆导致的不相关新闻 2. **严格匹配搜索策略** - 使用双引号包裹关键词,确保完整匹配 - 优先使用news_keywords,降级使用网站名称 - 提高新闻相关性和准确性 3. **前台手动刷新功能** - 详情页新增"获取最新资讯"按钮 - 用户可主动刷新最新新闻 - 无需后台权限,前台直接使用 --- ## 🔧 技术变更 ### 数据库变更 **Sites表**: ```sql ALTER TABLE sites ADD COLUMN news_keywords VARCHAR(200) COMMENT '新闻获取关键词(用于精准匹配相关新闻)' AFTER features; ``` ### 代码变更 | 文件 | 变更类型 | 说明 | |------|---------|------| | `models.py` | 修改 | Site模型添加news_keywords字段 | | `migrate_news_keywords.py` | 新增 | 数据库迁移脚本 | | `app.py` | 修改 | • 后台表单配置
• search_site_news调用
• 新API路由 | | `utils/news_searcher.py` | 修改 | 支持news_keywords参数 | | `templates/detail_new.html` | 修改 | 刷新按钮和JavaScript | --- ## 🚀 部署步骤 ### 方法一:Git Pull 部署(推荐) #### 1. 备份数据库 ```bash # SSH登录服务器 cd /opt/1panel/apps/zjpb # 备份数据库 mysqldump -h localhost -u ai_nav -p ai_nav > backup_before_v2.3_$(date +%Y%m%d_%H%M%S).sql ``` #### 2. 拉取最新代码 ```bash # 停止应用 ./manage.sh stop # 查看当前状态 git status # 如有本地修改,先暂存 git stash # 拉取最新代码 git pull origin master # 如有stash,可选择恢复 # git stash pop # 查看当前版本 git log --oneline -3 ``` #### 3. 运行数据库迁移 ```bash # 激活虚拟环境 source venv/bin/activate # 运行迁移脚本 python migrate_news_keywords.py ``` **预期输出**: ``` ============================================================ 开始执行数据库迁移 v2.3.0 ============================================================ 1. 添加 news_keywords 字段... >>> news_keywords 字段添加成功 2. 为现有网站设置默认关键词(使用网站名称)... >>> 已更新 X 个网站的默认关键词 ============================================================ >>> 数据库迁移完成! ============================================================ ``` #### 4. 重启应用 ```bash # 重启应用 ./manage.sh restart # 检查状态 ./manage.sh status # 查看日志(可选) ./manage.sh logs ``` --- ### 方法二:手动文件上传(备用) 如果Git pull失败,可以手动上传修改的文件: #### 需要上传的文件 1. `models.py` 2. `migrate_news_keywords.py` (新文件) 3. `app.py` 4. `utils/news_searcher.py` 5. `templates/detail_new.html` **上传后执行**: ```bash cd /opt/1panel/apps/zjpb source venv/bin/activate python migrate_news_keywords.py ./manage.sh restart ``` --- ## ✅ 部署验证 ### 1. 数据库验证 ```sql -- 检查sites表结构 DESCRIBE sites; -- 应该看到新字段 -- news_keywords | varchar(200) | YES -- 检查现有数据 SELECT id, name, news_keywords FROM sites LIMIT 5; ``` ### 2. 后台验证 访问后台管理:http://your-domain.com/admin/login **检查项**: - [ ] 进入"网站管理" - [ ] 点击"编辑"任意网站 - [ ] 查看是否有"新闻关键词"输入框 - [ ] 输入测试关键词,保存成功 ### 3. 前台验证 访问任意网站详情页:http://your-domain.com/site/xxxxxxxx **检查项**: - [ ] 页面正常加载 - [ ] 滚动到"相关新闻"模块 - [ ] 查看是否有"获取最新资讯"按钮 - [ ] 点击按钮测试刷新功能(需配置BOCHA_API_KEY) ### 4. API测试 ```bash # 测试刷新新闻API curl -X POST http://your-domain.com/api/refresh-site-news/12345678 \ -H "Content-Type: application/json" # 预期返回 { "success": true, "message": "成功获取 X 条新资讯", "total_found": X, "saved_count": X } ``` --- ## 📝 使用指南 ### 后台管理员 #### 设置新闻关键词 1. 登录后台:`/admin/login` 2. 进入"网站管理" → 选择要编辑的网站 3. 找到"新闻关键词"字段 4. 输入精准的搜索关键词 **关键词设置建议**: - ✅ **推荐**:使用产品官方全称或核心品牌词 - 示例:`ChatGPT`、`GitHub Copilot`、`Midjourney` - ✅ **多个关键词**:可以使用空格分隔(会被当作一个整体匹配) - 示例:`Claude AI`、`Google Gemini` - ❌ **避免**:过于宽泛的词 - 错误示例:`AI`、`工具`、`助手` #### 批量设置关键词 ```sql -- 示例:批量设置关键词 UPDATE sites SET news_keywords = 'ChatGPT' WHERE name = 'ChatGPT'; UPDATE sites SET news_keywords = 'GitHub Copilot' WHERE name = 'GitHub Copilot'; UPDATE sites SET news_keywords = 'Claude AI' WHERE name = 'Claude'; ``` ### 前台用户 #### 手动刷新新闻 1. 访问网站详情页 2. 滚动到"相关新闻"模块 3. 点击"获取最新资讯"按钮 4. 等待1-2秒,页面自动刷新 **注意**: - 刷新功能需要配置BOCHA_API_KEY - 每次刷新获取最新5条一周内的新闻 - 自动去重,不会重复保存 --- ## 🔍 问题排查 ### 1. 迁移脚本报错 **错误**:`news_keywords字段已存在` **解决**:正常现象,脚本会自动跳过已存在的字段 --- ### 2. 后台表单没有新字段 **可能原因**: - 代码未更新 - 浏览器缓存 **解决方案**: ```bash # 确认代码已更新 grep -n "news_keywords" app.py # 清除浏览器缓存,强制刷新(Ctrl + F5) # 重启应用 ./manage.sh restart ``` --- ### 3. 刷新按钮不显示 **可能原因**: - detail_new.html未更新 - 模板缓存 **解决方案**: ```bash # 确认模板已更新 grep -n "refresh-news-btn" templates/detail_new.html # 清除Flask缓存,重启应用 ./manage.sh restart ``` --- ### 4. 刷新新闻失败 **错误信息**:`新闻功能未启用` **原因**:BOCHA_API_KEY未配置 **解决方案**: ```bash # 编辑.env文件 nano /opt/1panel/apps/zjpb/.env # 添加或确认以下配置 BOCHA_API_KEY=sk-your-api-key-here BOCHA_BASE_URL=https://api.bocha.cn # 重启应用 ./manage.sh restart ``` --- ## 🔄 回滚方案 如果部署后出现问题,可以快速回滚: ### 1. 回滚代码 ```bash cd /opt/1panel/apps/zjpb ./manage.sh stop # 查看提交历史 git log --oneline -5 # 回滚到v2.2.0(假设是前一个提交) git reset --hard ./manage.sh start ``` ### 2. 回滚数据库(可选) ```bash # 删除新添加的字段(如需要) mysql -h localhost -u ai_nav -p ai_nav ALTER TABLE sites DROP COLUMN news_keywords; ``` **注意**:删除字段会丢失已设置的关键词数据,谨慎操作! --- ## 📊 性能影响 ### 数据库 - **新增字段**:1个VARCHAR(200)字段 - **存储增长**:约200字节/网站 - **查询性能**:无影响(字段不参与索引查询) ### 应用性能 - **后台表单**:无明显影响 - **前台刷新**: - API调用耗时:1-3秒(取决于博查API响应) - 不影响页面正常浏览 - 仅在用户主动点击时触发 --- ## 🆕 新增API端点 ### POST /api/refresh-site-news/ 手动刷新指定网站的新闻 **参数**: - `site_code`:网站编码(URL路径参数) **返回**: ```json { "success": true, "message": "成功获取 3 条新资讯", "total_found": 5, "saved_count": 3 } ``` **权限**:无需登录,前台可用 --- ## 📈 版本对比 | 功能 | v2.2.0 | v2.3.0 | |------|--------|--------| | 新闻搜索 | ✅ | ✅ | | 搜索关键词 | 仅网站名称 | 专用关键词优先 | | 匹配策略 | 普通匹配 | 严格匹配(双引号) | | 手动刷新 | ❌ | ✅ 前台按钮 | | 关键词管理 | ❌ | ✅ 后台配置 | --- ## 🔧 维护建议 ### 定期检查关键词 建议定期检查新闻获取效果,优化关键词设置: ```sql -- 查看没有设置关键词的网站 SELECT id, name, news_keywords FROM sites WHERE news_keywords IS NULL OR news_keywords = ''; -- 查看新闻获取较少的网站 SELECT s.name, s.news_keywords, COUNT(n.id) as news_count FROM sites s LEFT JOIN news n ON s.id = n.site_id GROUP BY s.id HAVING news_count < 3 ORDER BY news_count; ``` ### 关键词优化流程 1. 识别新闻数量少的网站 2. 访问该网站,了解官方品牌名称 3. 在后台设置更精准的关键词 4. 点击前台刷新按钮测试效果 5. 根据结果调整关键词 --- ## 📞 技术支持 **项目**: ZJPB - 焦提示词 | AI工具导航 **版本**: v2.3.0 **更新日期**: 2025-12-31 **常见问题**: 1. 查看应用日志:`./manage.sh logs` 2. 检查数据库连接:确认.env中的DB_配置 3. 验证API配置:确认BOCHA_API_KEY正确 --- ## 🎯 后续优化建议 v2.3.0之后可以考虑的优化方向: 1. **智能关键词推荐** - 根据网站URL自动提取品牌词 - AI分析网站内容推荐关键词 2. **新闻质量评分** - 使用AI评估新闻相关性 - 自动过滤低质量新闻 3. **批量关键词管理** - 后台批量设置关键词 - 导入导出关键词配置 4. **新闻效果统计** - 统计每个网站的新闻点击率 - 根据数据优化关键词策略 --- ## 📝 更新日志 ### v2.3.0 (2025-12-31) **新增**: - ✨ Sites表添加news_keywords字段 - ✨ 后台管理支持设置新闻关键词 - ✨ 详情页新增"获取最新资讯"按钮 - ✨ 新API端点:`/api/refresh-site-news/` **优化**: - 🎯 新闻搜索使用专用关键词(优先级高于网站名称) - 🎯 严格匹配策略(双引号包裹关键词) - 🎯 所有search_site_news调用传递news_keywords参数 **修复**: - 🐛 解决网站名称相似导致的新闻混淆问题 - 🐛 提高新闻相关性和准确性 --- **部署文档版本**: v1.0 **最后更新**: 2025-12-31 **维护者**: ZJPB开发团队