Files
intelligence_system/readme.md
T
2025-10-17 17:59:28 +08:00

8.8 KiB
Raw Blame History

情报收集系统设计

参考文档

https://alidocs.dingtalk.com/i/nodes/NZQYprEoWoexdo1ohPdxXvDbJ1waOeDk?utm_scene=team_space

程序框架

intelligence_system/
├── collectors/                      # 数据采集层
│   ├── weibo_spider.py              # 黑猫爬虫
│   ├── rss_subscriptions.py         # rss订阅
│   ├── news_api.py                  # 新闻接口
│   │
│   └── internal/                    # 内部数据收集
│       ├── jian_dao_cloud.py        # 简道云表单收集器
│
├── processors/                      # 数据处理层
│   ├── data_cleaner.py              # 数据清洗(去重/标准化)
│   ├── schema_mapper.py             # 数据结构转换器
│   ├── text_parser.py               # 文本解析(PDF/HTML等)
│   ├── image_analyzer.py            # 图像识别(OpenCV集成)
│   ├── video_processor.py           # 音视频分离分析
│   │
│   └── ai_engine/                   # AI分析核心
│       ├── nlp_processor.py         # 自然语言处理引擎
│       ├── sentiment_analyzer.py    # 情感分析模型
│       └── topic_modeler.py         # LDA主题建模工具
│
├── services/                        # 应用服务层
│   ├── monitoring/                  # 舆情监控
│   │   ├── opinion_monitor.py       # 实时舆情追踪
│   │   └── brand_reputation.py      # 品牌口碑分析
│   │
│   ├── analysis/                    # 竞品分析
│   │   ├── competitor_tracker.py    # 竞品动态监控
│   │   └── swot_generator.py        # SWOT分析报告
│   │
│   ├── reporting/                   # 报告服务
│   │   ├── daily_reporter.py        # 自动化日报生成
│   │   └── weekly_digest.py         # 周报汇编系统
│   │
│   └── alert/                       # 预警服务
│       ├── alert_trigger.py         # 动态阈值告警
│       └── notification_center.py   # 邮件/短信通知
│
├── system_management/               # 系统管理层
│   ├── scheduler/                   # 任务调度 
│   │   └──  task_scheduler.py        # 任务调度器
│   │
│   └── monitor/                     # 系统监控
│       ├── health_monitor.py        # 服务健康检测
│       └── performance_watcher.py    # 资源占用监控
│
├── utils/                           # 工具库
│   ├── file_handler.py              # 通用文件操作
│   ├── logger.py                    # 日志系统
│   ├── mysql_agent.py               # MySQL读写管理器
│   └── datetime_parser.py           # 时间格式处理
│
├── config.py                        # 配置加载与管理
└── main.py                          # 系统入口(启动所有服务)

程序设计原则

  1. 所有程序尽可能在py文件中运行,尽量避免使用命令行执行
  2. 配置需要在配置类中定义
  3. 密钥等信息直接放在配置类中
  4. 数据存储遵循"结构化存MySQL,非结构化存MinIO"原则,通过元数据关联

主程序设计

主程序需要一次启动,一直运行,启动时运行一次(在代码中可取消),之后每天定时生成一次报告

主程序包含爬虫/api调度器。该调度器通过查询mysql中任务调度情况按需执行,db文件中应包含任务名称、 任务路径、任务执行频率(支持按天、按周,按分钟)、上次执行时间、下次执行时间等信息

主程序应包含数据处理调度器,根据数据类别分别处理,如文本数据处理调度器、图片数据处理调度器等, 每天定时拉取db获取到的原始数据,分别进行处理,处理完成后将结果保存到mysql中

主程序应包含日报、周报等生成,根据时间定时生成报告,报告需要存储

日志设计

日志系统兼容Windows、Mac、Linux平台,以log文件形式存储,超过20MB自动压缩。新增存储相关日志内容:

  • MySQL操作:批量插入行数、表结构变更、事务状态
  • MinIO操作:文件上传/下载状态、路径、大小、耗时
  • 关联日志:MySQL记录与MinIO对象的绑定关系(如"ID:123 关联文件: collector/images/xxx.jpg"
  • 异常日志:MySQL连接失败、MinIO上传超时、数据关联不一致等告警信息

存储系统设计(MinIO+MySQL

核心存储分工

存储类型 适用数据 核心作用
MySQL 结构化数据、元数据、关系型数据 存储业务逻辑数据、非结构化数据的索引信息、任务调度信息等
MinIO 非结构化数据 存储图片、视频、PDF文档、原始爬取文件等二进制/大文件数据

核心存储配置

  1. MySQL配置

    • 数据库名称:intelligence_system
    • 连接管理:通过utils/mysql_agent.py封装线程安全的连接池,提供结构化数据的增删改查及SQL执行能力
    • 适配特性:支持多平台(Windows/macOS/Linux)的超时配置和批处理优化
  2. MinIO配置

    • 存储桶命名规则:按数据类型划分,如collector-images(采集层图片)、processor-videos(处理层视频)
    • 连接管理:通过utils/minio_agent.py封装客户端,提供对象上传、下载、删除、查询URL等能力
    • 路径规则:{数据层}/{来源}/{时间戳}_{唯一ID}.{后缀}(例:collector/weibo_spider/20240520_12345.jpg

表命名规则(扩展)

  • 数据采集类:以collector_为前缀(存储采集到的结构化数据及MinIO对象元数据)
  • 数据处理类:以processor_为前缀(存储处理结果的结构化数据及MinIO处理后对象的元数据)
  • 数据存储类:以storage_为前缀(存储MinIO对象的索引信息,如哈希、大小、访问权限等)
  • 应用层类:以application_为前缀(对应业务应用数据)
  • 系统类:如任务调度表等采用功能命名(如main_task

核心表结构

  1. collector_news_api:新闻API采集数据表(存储新闻标题、内容等结构化数据)
  2. collector_complaint_spider:投诉信息爬虫数据表(含投诉文本、附件MinIO路径attachment_minio_path等)
  3. collector_image_source:采集层图片元数据表(存储图片URL、MinIO路径、格式、大小等)
  4. processor_text_processor:文本处理结果表(存储NLP分析结果、关联原文ID等)
  5. processor_image_processor:图片处理结果表(存储识别标签、特征向量、处理后图片MinIO路径result_minio_path等)
  6. storage_object_index:MinIO对象索引表(存储所有对象的MinIO路径、哈希值、创建时间、过期时间等)
  7. main_task:任务调度表(存储任务名称、路径、执行频率、上次/下次执行时间等)
  8. application_reporter_daily:日报数据表(存储日报结构化内容、报表文件MinIO路径等)
  9. application_reporter_monthly:月报数据表(存储月报结构化内容、报表文件MinIO路径等)

数据交互特性

  1. MySQL交互

    • 支持DataFrame直接读写,提供分块处理(chunksize)和批量插入能力
    • 自动适配平台特性(如Windows小批次写入优化)
    • 完善的事务机制确保结构化数据一致性
  2. MinIO交互

    • 支持大文件分片上传、断点续传
  3. 联动机制

    • 非结构化数据存储时,先上传至MinIO获取路径,再将路径及元数据写入MySQL
    • 读取非结构化数据时,先从MySQL获取MinIO路径,再通过路径从MinIO下载
    • 日志同步记录MySQL操作和MinIO对象操作(如"上传文件至MinIO: {path},关联MySQL记录ID: {id}"

数据采集设计

  1. 结构化数据(如新闻文本、投诉内容):直接写入对应collector_前缀表
  2. 非结构化数据(如爬取的图片、附件):
    • 调用minio_agent.py上传至对应存储桶
    • 将MinIO路径、文件大小、格式等元数据写入collector_前缀表或storage_object_index
  3. 每个采集模块(独立py文件,main方法入口)需同时处理MySQL和MinIO交互,确保数据关联完整

数据处理设计

  1. 结构化数据处理:从MySQL读取原始数据,处理后写入processor_前缀表
  2. 非结构化数据处理:
    • 从MySQL获取MinIO路径,通过minio_agent.py下载原始文件
    • 处理后(如图片识别、视频帧提取)将结果文件上传至MinIO(处理层存储桶)
    • 将处理结果的结构化信息(如识别标签)和处理后文件的MinIO路径写入processor_前缀表
  3. 支持多表关联存储,通过source_id关联原始数据与处理结果