newsreport_agent_for_traffic/README.md

139 lines
3.6 KiB
Markdown
Raw Normal View History

2026-05-09 10:49:21 +08:00
# 交通新闻自动报表系统
2026-05-09 10:46:52 +08:00
这是一个围绕交通行业情报的自动化项目,当前主流程是:
`多源抓取 -> 文本清洗 -> FAISS 向量入库 -> RAG 检索 -> 千问生成报告 -> 邮件发送`
## 当前能力
- 支持四类数据源:
- 赛文交通网
- 微信公众号(高德地图)
- 微信公众号(百度地图)
- 中国政府采购网
- 使用本地 `FAISS + JSON records` 持久化向量库
- 嵌入方式:`Ollama API -> paraphrase-multilingual:latest`
- 支持综合报表与主题报表
- 支持 QQ 邮箱发送报告
- 提供收件人管理 Web 界面
## 当前主入口
### 1. 主流程入口
```bash
python main.py --mode full --sources all
```
支持模式:
- `crawl`:抓取并写入向量库
- `report`:基于已有向量库生成综合报告
- `topic`:生成主题报告
- `full`:抓取 + 入库 + 报告
### 2. 收件人管理 Web 界面
```bash
python email_web_app.py
```
默认地址:
```text
http://127.0.0.1:7860
```
当前页面支持:
- 管理发送对象(新增 / 删除)
- 手动触发一次完整发送
- 保存每周定时发送配置
说明:当前页面中的“单次发送”会执行:
`全站抓取一次 -> 更新本地向量库 -> 生成最新报告 -> 发送邮件`
## 环境变量
请基于 `.env.example` 创建本地 `.env`
最少需要:
```env
QWEN_API_KEY=你的API密钥
QWEN_MODEL=qwen-max
DATA_DIR=./data
VECTOR_DB_DIR=./vector_db
```
如果启用公众号抓取:
```env
WECHAT_MP_COOKIE=你的微信公众号后台登录态 Cookie
```
如果启用邮件:
```env
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_*.txt`
- `report_topic_*.txt`
- `report_comprehensive_*.txt`
- `report_source_*.txt`
当前综合报告逻辑:
-`std_timestamp` 读取最近 15 天新闻
- 综合报告按来源均衡取样
- 尽量保证每个来源至少纳入 5 条新闻
## 文档索引
- 主流程参数:[MAIN_USAGE_GUIDE.md](MAIN_USAGE_GUIDE.md)
- 邮件发送:[EMAIL_GUIDE.md](EMAIL_GUIDE.md)
- 微信公众号抓取:[WECHAT_CRAWLER_GUIDE.md](WECHAT_CRAWLER_GUIDE.md)
- 微信 IP 白名单:[WECHAT_IP_WHITELIST_GUIDE.md](WECHAT_IP_WHITELIST_GUIDE.md)
- 政府采购网抓取:[CCGP_CRAWLER_GUIDE.md](CCGP_CRAWLER_GUIDE.md)
- 报告生成:[UNIFIED_REPORT_GUIDE.md](UNIFIED_REPORT_GUIDE.md)
- 项目结构:[PROJECT_STRUCTURE.md](PROJECT_STRUCTURE.md)
- Gitea 同步准备:[GITEA_SYNC_GUIDE.md](GITEA_SYNC_GUIDE.md)