feat: v2.3.0 - 新闻获取准确性优化

核心改进:
1. 新增专用新闻关键词字段(sites.news_keywords)
2. 严格匹配搜索策略(双引号包裹关键词)
3. 前台手动刷新新闻功能

数据库变更:
- Sites表添加news_keywords字段(VARCHAR(200))
- 提供迁移脚本migrate_news_keywords.py

代码变更:
- models.py: Site模型添加news_keywords字段
- app.py: 后台表单配置、API路由、search_site_news调用优化
- utils/news_searcher.py: 支持news_keywords参数优先匹配
- templates/detail_new.html: 添加刷新按钮和JavaScript

新增功能:
- 后台可为每个网站设置专属新闻关键词
- 详情页"获取最新资讯"按钮(前台可用,无需登录)
- 新API端点:POST /api/refresh-site-news/<site_code>

文档:
- DEPLOY_v2.3.0.md: 完整部署指南
- DEPLOY_v2.3_QUICK.md: 快速部署指南

向后兼容:
- 现有网站自动使用网站名称作为默认关键词
- 未设置关键词时降级使用网站名称搜索

🤖 Generated with Claude Code (https://claude.com/claude-code)

Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
This commit is contained in:
Jowe
2025-12-31 11:01:51 +08:00
parent bdf31090ed
commit fdde6990fb
7 changed files with 1009 additions and 8 deletions

View File

@@ -121,6 +121,7 @@ class NewsSearcher:
self,
site_name: str,
site_url: Optional[str] = None,
news_keywords: Optional[str] = None,
count: int = 10,
freshness: str = 'oneMonth'
) -> List[Dict]:
@@ -128,16 +129,23 @@ class NewsSearcher:
搜索特定网站的相关新闻
Args:
site_name: 网站名称(用于搜索关键词)
site_name: 网站名称(用于搜索关键词如果没有news_keywords
site_url: 网站URL可选用于排除网站自身
news_keywords: 新闻专用关键词(优先使用,支持精准匹配)
count: 返回结果数量
freshness: 时间范围
Returns:
新闻列表
"""
# 构建搜索关键词:网站名称 + "最新" + "新闻"
query = f'"{site_name}" 新闻'
# 构建搜索关键词
# 优先使用news_keywords如果提供- v2.3新增
if news_keywords and news_keywords.strip():
# 使用双引号包裹关键词,确保严格匹配
query = f'"{news_keywords.strip()}" 新闻'
else:
# 降级使用网站名称(向后兼容)
query = f'"{site_name}" 新闻'
# 如果提供了网站URL排除网站自身的结果
exclude = None