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