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