# 爬虫数据流水线 ## 数据流 ``` RSS 抓取 ↓ 翻译、清洗 ↓ news_storage.save_and_dedup() → 历史去重 ↓ news_content(资讯独立表,供后续消费) ↓ ↓ 去重后的新数据 ↓ situation_update(面板展示用) ↓ ↓ AI 提取(阿里云 DashScope) ↓ combat_losses / retaliation / key_location / wall_street_trend ↓ ↓ notify Node ↓ 前端 WebSocket + 轮询 ``` ## 阿里云 DashScope API Key 设置环境变量 `DASHSCOPE_API_KEY` 后,爬虫使用阿里云通义千问进行 AI 提取。不设置时回退到规则提取(`extractor_rules`)或 Ollama(若可用)。 ```bash # 本地 export DASHSCOPE_API_KEY=sk-xxx # Docker docker compose up -d -e DASHSCOPE_API_KEY=sk-xxx # 或在 .env 中写入 DASHSCOPE_API_KEY=sk-xxx ``` ## 表说明 | 表 | 用途 | |----|------| | `news_content` | 资讯原文,独立存储,支持去重(content_hash),供后续消费 | | `situation_update` | 面板「近期更新」展示 | | `combat_losses` | 战损数据(AI/规则提取) | | `key_location` | 基地状态 | | `gdelt_events` | 地图冲突点 | ## 去重逻辑 根据 `content_hash = sha256(normalize(title) + normalize(summary) + url)` 判断,相同或高度相似内容视为重复,不入库。 ## 消费资讯 - HTTP: `GET /api/news?limit=50` - 调试: `/db` 面板查看 `news_content` 表 ## 链路验证 运行脚本一键检查全链路: ```bash ./scripts/verify-pipeline.sh ``` 支持环境变量覆盖:`API_URL`、`CRAWLER_URL`