舆情报告系统采集端与报告端共享的中间件、存储与外部服务。MongoDB 是两端最关键的衔接点。
┌─────────────── 共享 ───────────────┐
│ │
采集端 chrome-pa-api 报告端 deep-research-python
:8000 │ │ :8000
├── MongoDB (deep-research) ◄──────共享衔接──────► ┤
├── RabbitMQ (:5672) ├── Redis (缓存)
├── XXL-JOB (执行器 :19999) ├── MinIO (图片/图表)
├── DeepSeek LLM ◄──────────两端共用─────────────► ┤
└── Tavily 搜索 └── ECharts 服务 (:3000)
| 服务 | 类别 | 端口/标识 | 使用方 |
|---|---|---|---|
| MongoDB | 数据库 | 27017 · 库 deep-research | 采集端 + 报告端(共享) |
| RabbitMQ | 消息队列 | 5672 | 采集端 |
| XXL-JOB | 调度 | 执行器 19999 | 采集端 |
| Redis | 缓存 | — | 报告端 |
| MinIO | 对象存储 | — | 报告端 |
| DeepSeek | 外部 LLM | api.deepseek.com | 采集端 + 报告端 |
| Tavily | 外部搜索 | api.tavily.com | 采集端 |
| ECharts 服务 | 渲染微服务 | 3000 | 报告端 |
两端共享同一个库 deep-research,是采集端与报告端的主链路衔接。
html_md — 采集端抓取的原文(Markdown)主集合sentiment_data — AI 标注后的舆情成品,报告端从此读取素材reports — 报告端的报告文档(带 5 步进度)adminutils/mongodb_handler.py;报告端 utils/database.py采集端异步消息通道:消费 platform_task_queue_* 平台任务队列(异步任务分发/语义处理)。与 Chrome 插件的异步通信经 mq_api/。
5672langwell-v2 / deep-research(按环境)pika;发票管理系统 aio-pika/get-not-started-task),不依赖 MQ,故 RabbitMQ 可不接照跑。按监测任务周期(每日/每周/每月/每季/半年/每年)自动触发采集。采集端集成在 sentiment_monitor/xxl_job_*.py。
/api/ 结尾chrome-pa-api19999pyxxl报告端缓存层,连接在 utils/database.py 与 MongoDB 一同初始化。
存放采集到的图片、报告图表渲染出的 PNG。报告端经 oss_service.py 访问;采集端 requirements.txt 也含 minio 依赖。
invoice 存发票原文件与缩略图。采集端做情感判定与摘要(utils/llm_service.py),报告端做逐章报告撰写(LangChain ChatOpenAI 封装)。
https://api.deepseek.comdeepseek-chat(由 LLM_MODEL 指定)LLM_ENTITY),可按步骤换模型LLM_CHECK_ROLE_MODEL 是废弃项——仅在 config 中定义,代码无引用。采集端网页搜索能力,带 MongoDB 支撑的 API Key 轮询池(utils/api_key_manager.py)。报告端做普通研究报告时可复用采集端搜索接口(舆情报告不走此路)。
https://api.tavily.comNode.js 微服务,把报告里的 echarts 代码块渲染成 PNG(经报告端 utils/echarts_renderer.py 调用),再上传 MinIO,用于报告导出。
3000cd echarts-server && npm install && node server.js