3.6 KiB
3.6 KiB
交通新闻自动报表系统
这是一个围绕交通行业情报的自动化项目,当前主流程是:
多源抓取 -> 文本清洗 -> FAISS 向量入库 -> RAG 检索 -> 千问生成报告 -> 邮件发送
当前能力
- 支持四类数据源:
- 赛文交通网
- 微信公众号(高德地图)
- 微信公众号(百度地图)
- 中国政府采购网
- 使用本地
FAISS + JSON records持久化向量库 - 嵌入方式:
Ollama API -> paraphrase-multilingual:latest - 支持综合报表与主题报表
- 支持 QQ 邮箱发送报告
- 提供收件人管理 Web 界面
当前主入口
1. 主流程入口
python main.py --mode full --sources all
支持模式:
crawl:抓取并写入向量库report:基于已有向量库生成综合报告topic:生成主题报告full:抓取 + 入库 + 报告
2. 收件人管理 Web 界面
python email_web_app.py
默认地址:
http://127.0.0.1:7860
当前页面支持:
- 管理发送对象(新增 / 删除)
- 手动触发一次完整发送
- 保存每周定时发送配置
说明:当前页面中的“单次发送”会执行:
全站抓取一次 -> 更新本地向量库 -> 生成最新报告 -> 发送邮件
环境变量
请基于 .env.example 创建本地 .env。
最少需要:
QWEN_API_KEY=你的API密钥
QWEN_MODEL=qwen-max
DATA_DIR=./data
VECTOR_DB_DIR=./vector_db
如果启用公众号抓取:
WECHAT_MP_COOKIE=你的微信公众号后台登录态 Cookie
如果启用邮件:
EMAIL_SENDER=你的QQ邮箱@qq.com
EMAIL_PASSWORD=你的QQ邮箱SMTP授权码
EMAIL_RECIPIENTS=收件人1@qq.com,收件人2@qq.com
数据源说明
赛文交通网
- 实现:
crawler/news_crawler.py - 特点:抓取新闻列表和正文,保存为
news_*.json - 说明:独立运行爬虫只会保存 JSON,不会自动写入向量库;通过
main.py --mode crawl/full才会统一入库
微信公众号(高德 / 百度)
- 入口实现:
crawler/wechat_crawler.py、crawler/baidu_map_crawler.py - 共用基类:
crawler/wechat_mp_crawler_base.py - 底层后台接口:
crawler/wechat_mp_backend_client.py - 当前主流程依赖
WECHAT_MP_COOKIE
中国政府采购网
- 实现:
crawler/ccgp_crawler.py - 当前逻辑:优先走搜索接口,若被限流或阻断,则自动回退到公告栏目扫描并按关键词过滤
- 支持诊断文件输出:
ccgp_probe_*.json
报告与向量库
向量库
- 目录:
vector_db/ - 形式:本地持久化
FAISS + records.json - 去重方式:以
url为业务唯一键,更新时删除旧片段后重新写入
报告
- 输出目录:
data/ - 文件格式:当前统一为
.txt - 常见文件名:
report_summary_*.txtreport_topic_*.txtreport_comprehensive_*.txtreport_source_*.txt
当前综合报告逻辑:
- 按
std_timestamp读取最近 15 天新闻 - 综合报告按来源均衡取样
- 尽量保证每个来源至少纳入 5 条新闻
文档索引
- 主流程参数:MAIN_USAGE_GUIDE.md
- 邮件发送:EMAIL_GUIDE.md
- 微信公众号抓取:WECHAT_CRAWLER_GUIDE.md
- 微信 IP 白名单:WECHAT_IP_WHITELIST_GUIDE.md
- 政府采购网抓取:CCGP_CRAWLER_GUIDE.md
- 报告生成:UNIFIED_REPORT_GUIDE.md
- 项目结构:PROJECT_STRUCTURE.md
- Gitea 同步准备:GITEA_SYNC_GUIDE.md