Files
news-tracker/config.py
T

156 lines
8.6 KiB
Python
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# -*- coding: utf-8 -*-
"""
新闻智能跟踪系统 - 全局配置
所有环境相关配置集中在此,便于迁移与扩展。
后期接入真实数据源时,只需在 sources 适配层实现 fetch() 即可,其余逻辑不变。
"""
import os
BASE_DIR = os.path.dirname(os.path.abspath(__file__))
DATA_DIR = os.path.join(BASE_DIR, "data")
LOG_DIR = os.path.join(BASE_DIR, "logs")
STATIC_DIR = os.path.join(BASE_DIR, "static")
TEMPLATE_DIR = os.path.join(BASE_DIR, "templates")
DB_PATH = os.path.join(DATA_DIR, "news_tracker.db")
os.makedirs(DATA_DIR, exist_ok=True)
os.makedirs(LOG_DIR, exist_ok=True)
# ---------------- 服务 ----------------
SERVICE_PORT = 16100
SERVICE_HOST = "0.0.0.0"
SERVICE_NAME = "新闻智能跟踪系统"
# ---------------- 大模型(默认回退配置,运行时以网页里激活的 llm_providers 为准) ----------------
LLM_BASE_URL = "https://api.deepseek.com"
LLM_API_KEY = "sk-edb9df58ff574f8c98df1cd6a425e97c"
LLM_MODEL = "deepseek-v4-flash" # 推理型,分析质量高
LLM_TIMEOUT = 120
LLM_MAX_TOKENS = 1500
LLM_TEMPERATURE = 0.3
# 预置大模型接口(首次初始化写入 llm_providers 表,可在网页增删改 + 一键切换)
LLM_PROVIDERS_DEFAULT = [
{"name": "SiliconFlow(默认)", "base_url": "https://api.siliconflow.cn/v1",
"api_key": "sk-fhpoexpptvjghpnphtaxbkhjwulzovoqfffbckcfscjmwhcg",
"model": "deepseek-ai/DeepSeek-V4-Flash", "active": 1},
{"name": "DeepSeek 官方", "base_url": "https://api.deepseek.com",
"api_key": "sk-edb9df58ff574f8c98df1cd6a425e97c",
"model": "deepseek-v4-flash", "active": 0},
{"name": "Autodl(火山方舟中转)", "base_url": "https://www.autodl.art/api/v1",
"api_key": "F9MBfolzuapqTsD4KmUf9qen720rXvUZ3Sp3IrWiCTukqonx",
"model": "qwen3.6-plus", "active": 0},
{"name": "Local Qwen(内网)", "base_url": "http://121.40.164.32:18003/v1",
"api_key": "sk-xxxx",
"model": "unsloth/Qwen3.8-27B-Q6_K", "active": 0},
]
# ---------------- 网页采集(真实源抓取) ----------------
CRAWL_DEFAULTS = {
"per_source_links": 8, # 每源最多采集候选条目
"full_fetch_links": 5, # 其中最多几条抓取全文(存 full_text)
"crawl_timeout": 20, # 单页请求超时(秒)
"user_agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 "
"(KHTML, like Gecko) Chrome/124.0 Safari/537.36",
}
# ---------------- web-capture-api(网页提取服务,数据源抓取走该接口) ----------------
# 数据源真实网页优先通过 web-capture-api 项目接口抓取(反爬强,可滚动态/选后端)。
# 每个数据源可单独设置获取方式(fetch_method)与抓取参数(capture_params)。
WEBCAPTURE_DEFAULTS = {
"enabled": 1,
"api_url": "http://121.40.164.32:16025", # web-capture-api 地址(本机默认 16025
"timeout": 60, # 单次抓取超时(秒)
}
# ---------------- 邮件通知(默认值,可在设置区修改) ----------------
MAIL_DEFAULTS = {
"smtp_host": "mail.tphai.com",
"smtp_port": 587,
"smtp_user": "hz4th_coder@tphai.com",
"smtp_pass": "hz4th_coder@!",
"smtp_mode": "plain", # plain(无加密) / starttls / ssl
"email_to": "wlq@tphai.com",
"sender_name": "新闻智能跟踪",
}
# ---------------- 自动化(默认值,可在设置区修改) ----------------
AUTO_DEFAULTS = {
"auto_collect": 1, # 是否自动定时采集(新闻监控机制)
"scan_interval_min": 30, # 采集扫描间隔(分钟,新闻源统一值,每源可覆盖)
"realtime_threshold": 80, # 总分 >= 该值 → 实时邮件通知
"llm_threshold": 60, # 规则分 >= 该值 → 进入 LLM 深度分析
"realtime_enabled": 1, # 是否启用实时重要资讯邮件
"summary_enabled": 1, # 是否启用每日汇总
"summary_time": "10:00", # 每日汇总时间
"summary_window_hours": 24, # 汇总窗口(往前 N 小时)
"max_summary_items": 15, # 汇总邮件最多条目数
}
# ---------------- 定制监控机制(与新闻监控分开单独配置) ----------------
CUSTOM_DEFAULTS = {
"custom_enabled": 1, # 是否启用定制监控机制(采集/判断/推送/汇总)
"custom_scan_interval_min": 15, # 定制源统一采集间隔(分钟,每源可覆盖;比新闻更频繁)
"custom_summary_enabled": 1, # 是否单独发「定制监控汇总」邮件
"custom_summary_time": "18:00", # 定制监控汇总时间(独立于新闻日报)
"custom_summary_window_hours": 24,
"custom_max_summary_items": 20, # 定制汇总邮件最多条目数
}
# ---------------- 系统错误邮件通知(频率 + 静默时段) ----------------
ERRNOTIFY_DEFAULTS = {
"enabled": 1, # 是否启用错误邮件通知
"mode": "cooldown", # immediate=立即 / cooldown=按冷却时间聚合 / off=关闭
"cooldown_min": 60, # 通知频率:同类/全部错误两次邮件最小间隔(分钟)
"quiet_enabled": 1, # 是否启用静默时段
"quiet_periods": ["23:00-07:30"], # 静默时段,每段 "HH:MM-HH:MM",支持跨午夜、多段
"max_items": 10, # 单封错误邮件最多错误条数
}
# ---------------- 默认兴趣画像(可在网页修改) ----------------
DEFAULT_KEYWORDS = [
("大模型", 8), ("人工智能", 6), ("AI", 6), ("芯片", 7), ("GPU", 6),
("算力", 6), ("开源", 6), ("智能体", 7), ("Agent", 6), ("多模态", 6),
("自动驾驶", 6), ("机器人", 5), ("具身智能", 6), ("推理", 4), ("数据中心", 5),
("融资", 5), ("IPO", 5), ("收购", 6), ("政策", 4), ("监管", 6),
("制裁", 7), ("禁令", 8), ("安全", 4), ("量子计算", 5), ("人才", 3),
("裁员", 5), ("突破", 5), ("新模型", 8), ("发布会", 5),
]
DEFAULT_DOMAINS = [
("AI模型与算法", 9), ("芯片与硬件", 8), ("云计算与算力", 6),
("政策与监管", 7), ("投融资", 6), ("企业动态", 5),
("学术研究", 4), ("开源生态", 6),
]
DEFAULT_COMPANIES = [
"OpenAI", "Anthropic", "Google", "Microsoft", "Meta", "NVIDIA",
"AMD", "苹果", "Apple", "亚马逊", "Amazon", "Tesla", "特斯拉",
"华为", "百度", "阿里巴巴", "阿里", "腾讯", "字节跳动", "DeepSeek",
"智谱", "月之暗面", "Kimi", "MiniMax", "商汤", "科大讯飞", "阿里云",
"台积电", "TSMC", "三星", "英特尔", "Intel", "高通", "中芯国际",
"英伟达", "Mistral", "xAI", "Grok", "百度文心", "通义千问", "豆包",
]
# 内置数据源模板(首次初始化时写入,可在网页管理)
DEFAULT_SOURCES = [
{"name": "OpenAI 官方动态", "type": "公司动态", "url": "https://openai.com/news",
"description": "OpenAI 官方新闻与产品发布(真实抓取)", "weight": 1.0},
{"name": "AI 科技媒体(模拟)", "type": "科技媒体", "url": "https://example.com/ai-news",
"description": "综合 AI 领域科技媒体(模拟数据源)", "weight": 0.8},
{"name": "arXiv 学术论文", "type": "学术论文", "url": "https://arxiv.org/list/cs.AI/recent",
"description": "人工智能领域最新论文(真实抓取)", "weight": 0.6},
{"name": "GitHub 开源趋势", "type": "开源社区", "url": "https://github.com/trending",
"description": "开源项目趋势与发布(真实抓取)", "weight": 0.7},
{"name": "政策与监管", "type": "政策法规", "url": "https://example.com/policy",
"description": "各国 AI 政策、监管与出口管制动态(模拟源,可改真实 URL)", "weight": 0.9},
{"name": "行业报告与调研", "type": "行业报告", "url": "https://example.com/report",
"description": "行业数据报告、市场调研(模拟源,可改真实 URL)", "weight": 0.7},
{"name": "科技投资动态", "type": "投融资", "url": "https://example.com/funding",
"description": "AI 领域融资、并购、IPO 动态(模拟源,可改真实 URL)", "weight": 0.9},
# 定制监控示例:无权重,按「推送标准」由大模型判断是否推送
{"name": "英伟达重大异动监控", "type": "定制监控", "url": "https://example.com/custom-nvda",
"description": "定制监控示例:英伟达重大异动(可改真实 URL)", "kind": "custom",
"monitor_standard": "仅推送英伟达(NVIDIA)重大事件:股价单日涨跌幅超10%,或重大产品发布/回购/分拆/收购等实质性公告,或分析师大幅上调目标价。普通行情波动、日常新闻一律不推送。"},
]