核心功能: - 集成博查Web Search API自动获取网站相关新闻 - 智能新闻更新机制(每日首次访问触发) - 精确新闻搜索(使用引号强制匹配网站名称) - News模型扩展(source_name, source_icon字段) - 网站详情页新闻展示模块 - 新闻来源网站信息展示 - 自动去重防止重复新闻 技术实现: - NewsSearcher工具类封装博查API - 数据库迁移脚本migrate_news_fields.py - 测试脚本test_news_feature.py - 定期任务脚本fetch_news_cron.py - API路由:/api/fetch-site-news, /api/fetch-all-news 配置优化: - 修复manage.sh路径和启动命令 - 博查API配置(BOCHA_API_KEY, BOCHA_BASE_URL) - 新闻搜索参数配置 界面优化: - 详情页新闻模块(左侧主栏) - 相似推荐模块(右侧边栏) - 首页标签图标修复 - 后台添加修改密码功能 - 登录页面优化 部署信息: - 部署日期: 2025-12-30 - 部署方式: 手动上传文件 - 数据库: 已迁移(添加source_name和source_icon字段)
75 lines
2.5 KiB
Python
75 lines
2.5 KiB
Python
import os
|
||
from dotenv import load_dotenv
|
||
|
||
# 加载环境变量
|
||
load_dotenv()
|
||
|
||
class Config:
|
||
"""基础配置"""
|
||
# 密钥配置
|
||
SECRET_KEY = os.environ.get('SECRET_KEY') or 'dev-secret-key-change-in-production'
|
||
|
||
# 数据库配置
|
||
DB_HOST = os.environ.get('DB_HOST') or 'localhost'
|
||
DB_PORT = os.environ.get('DB_PORT') or '3306'
|
||
DB_USER = os.environ.get('DB_USER') or 'root'
|
||
DB_PASSWORD = os.environ.get('DB_PASSWORD') or ''
|
||
DB_NAME = os.environ.get('DB_NAME') or 'ai_nav'
|
||
|
||
SQLALCHEMY_DATABASE_URI = f'mysql+pymysql://{DB_USER}:{DB_PASSWORD}@{DB_HOST}:{DB_PORT}/{DB_NAME}?charset=utf8mb4'
|
||
SQLALCHEMY_TRACK_MODIFICATIONS = False
|
||
SQLALCHEMY_ECHO = False
|
||
|
||
# 数据库连接池配置
|
||
SQLALCHEMY_ENGINE_OPTIONS = {
|
||
'pool_size': 10, # 连接池大小
|
||
'pool_recycle': 3600, # 连接回收时间(秒)
|
||
'pool_pre_ping': True, # 每次取连接前先ping,确保连接有效
|
||
'pool_timeout': 30, # 连接池超时时间
|
||
'max_overflow': 20, # 超过pool_size后最多创建的连接数
|
||
'connect_args': {
|
||
'connect_timeout': 10, # 连接超时(秒)
|
||
'read_timeout': 30, # 读取超时(秒)
|
||
'write_timeout': 30, # 写入超时(秒)
|
||
}
|
||
}
|
||
|
||
# 分页配置
|
||
SITES_PER_PAGE = 20
|
||
|
||
# 上传文件配置
|
||
UPLOAD_FOLDER = 'static/uploads'
|
||
MAX_CONTENT_LENGTH = 5 * 1024 * 1024 # 5MB
|
||
ALLOWED_EXTENSIONS = {'png', 'jpg', 'jpeg', 'gif', 'webp'}
|
||
|
||
# DeepSeek API配置
|
||
DEEPSEEK_API_KEY = os.environ.get('DEEPSEEK_API_KEY')
|
||
DEEPSEEK_BASE_URL = os.environ.get('DEEPSEEK_BASE_URL') or 'https://api.deepseek.com'
|
||
|
||
# 博查 Web Search API配置
|
||
BOCHA_API_KEY = os.environ.get('BOCHA_API_KEY')
|
||
BOCHA_BASE_URL = os.environ.get('BOCHA_BASE_URL') or 'https://api.bocha.cn'
|
||
BOCHA_SEARCH_ENDPOINT = '/v1/web-search'
|
||
|
||
# 新闻搜索配置
|
||
NEWS_SEARCH_COUNT = 10 # 每次搜索返回的新闻数量
|
||
NEWS_SEARCH_FRESHNESS = 'oneMonth' # 默认搜索一个月内的新闻
|
||
NEWS_SEARCH_SUMMARY = True # 是否显示摘要
|
||
|
||
class DevelopmentConfig(Config):
|
||
"""开发环境配置"""
|
||
DEBUG = True
|
||
SQLALCHEMY_ECHO = True
|
||
|
||
class ProductionConfig(Config):
|
||
"""生产环境配置"""
|
||
DEBUG = False
|
||
SQLALCHEMY_ECHO = False
|
||
|
||
# 配置字典
|
||
config = {
|
||
'development': DevelopmentConfig,
|
||
'production': ProductionConfig,
|
||
'default': DevelopmentConfig
|
||
}
|