# 项目结构说明 ## 总体定位 这是一个以交通行业情报为目标的自动化项目,当前分成五层: 1. 数据抓取 2. 文本标准化 3. 向量入库与检索 4. 报告生成 5. 邮件分发 ## 顶层目录 ```text 交通新闻自动报表/ ├── crawler/ # 各数据源抓取与公众号后台探测工具 ├── rag/ # 向量库处理与检索 ├── report/ # 报告生成 ├── templates/ # Web 页面模板 ├── static/ # Web 静态资源 ├── data/ # JSON、报告、诊断文件 ├── vector_db/ # Chroma 本地持久化数据 ├── main.py # 主入口 ├── generate_report_from_db.py # 交互式报告入口 ├── auto_report_and_email.py # 报告 + 邮件脚本入口 ├── email_sender.py # SMTP 发送模块 ├── email_web_app.py # 收件人管理与手动发送 Web 界面 ├── check_ip.py # 微信白名单辅助脚本 └── *.md # 说明文档 ``` ## crawler/ ### 正式接入主流程的抓取器 - `news_crawler.py`:赛文交通网 - `wechat_crawler.py`:高德公众号官方接口抓取 - `baidu_map_crawler.py`:百度地图公众号官方接口抓取 - `ccgp_crawler.py`:中国政府采购网关键词抓取 ### 辅助与探测组件 - `wechat_mp_crawler_base.py`:公众号官方接口基类 - `wechat_mp_backend_client.py`:公众号后台登录态探测工具 ## rag/ - `rag_processor.py` - 加载 embedding 模型 - 文本分片 - Chroma 入库 - URL 级 upsert - 相似度检索 ## report/ - `report_generator.py` - 调用千问模型 - 生成综合/主题报告 - 保存 `report_*.txt` ## data/ 当前会出现的典型文件: - `news_*.json` - `wechat_articles_*.json` - `baidu_map_articles_*.json` - `ccgp_results_*.json` - `ccgp_probe_*.json` - `gaode_backend_probe_*.json` - `baidu_backend_probe_*.json` - `managed_recipients.json` - `scheduled_send_config.json` - `report_*.txt` ## vector_db/ 当前为本地持久化 Chroma 数据目录,典型内容: - `chroma.sqlite3` - 分段向量索引目录 ## 三个主要入口怎么选 ### `main.py` 默认首选,负责: - 抓取 - 入库 - 报告 ### `generate_report_from_db.py` 适合人工交互式分析,前提是向量库中已经有数据。 ### `auto_report_and_email.py` 适合由任务计划程序定时调用,实现“生成报告并发送”。 ## 当前需要特别注意的边界 - 后台登录态探测工具不等于主流程已切到 Cookie 抓取 - Web 界面不负责手选历史报告,它会触发新一轮抓取和报告生成 - 政府采购网抓取当前不是单一路径,而是搜索接口 + 回退栏目扫描