newsreport_agent_for_traffic/README.md

139 lines
3.6 KiB
Markdown
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.

# 交通新闻自动报表系统
这是一个围绕交通行业情报的自动化项目,当前主流程是:
`多源抓取 -> 文本清洗 -> 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)