5.8 KiB
情报收集系统设计
参考文档
https://alidocs.dingtalk.com/i/nodes/NZQYprEoWoexdo1ohPdxXvDbJ1waOeDk?utm_scene=team_space
程序框架
intelligence_system/
├── config/ # 系统配置中心
│ ├── __init__.py # 配置包初始化
│ ├── config.py # 配置加载与管理
│ └── constants.py # 系统常量定义
├── data_collection/ # 数据采集层
│ ├── spiders/ # 网络爬虫子系统
│ │ ├── weibo_spider.py # 黑猫爬虫
│ │
│ ├── api_integration/ # API接口子系统
│ │ ├── news_api.py # 新闻接口
│ │
│ └── internal/ # 内部数据收集
│ ├── jian_dao_cloud.py # 简道云表单收集器
├── data_processing/ # 数据处理层
│ ├── structured/ # 结构化数据处理
│ │ ├── data_cleaner.py # 数据清洗(去重/标准化)
│ │ └── schema_mapper.py # 数据结构转换器
│ │
│ ├── unstructured/ # 非结构化数据处理
│ │ ├── 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 # 时间格式处理
└── main.py # 系统入口(启动所有服务)
程序设计原则
- 所有程序尽可能在py文件中运行,尽量避免使用命令行执行
- 配置需要在配置类中定义
- 密钥等信息直接放在配置类中
主程序设计
主程序需要一次启动,一直运行,启动时运行一次(在代码中可取消),之后每天定时生成一次报告
主程序包含爬虫/api调度器。该调度器通过查询mysql中任务调度情况按需执行,db文件中应包含任务名称、 任务路径、任务执行频率(支持按天、按周,按分钟)、上次执行时间、下次执行时间等信息
主程序应包含数据处理调度器,根据数据类别分别处理,如文本数据处理调度器、图片数据处理调度器等, 每天定时拉取db获取到的原始数据,分别进行处理,处理完成后将结果保存到mysql中
主程序应包含日报、周报等生成,根据时间定时生成报告,报告需要存储
日志设计
日志系统应兼容多个平台,如win、mac和linux,日志需要保存为log文件,并且在日志大于20mb时自动压缩
数据库链接设计
数据存储放在数据库中,数据库类型为mysql,数据库名称为intelligence_system
数据库表的命名规则与目录一致,数据采集类以collector_为开头,数据处理类以processor_为开 头,数据存储类以storage_为开头,应用层类以application_为开头 依次类推。
数据库链接为通用配置,要求数据采集或处理类等,可以直接调用封装好的数据库 链接,不必每次都重新写, 该链接包含表的增删改查功能,以及执行sql语句功能
数据库结构:
- collector_news_api:新闻api数据表
- collector_complaint_spider:投诉数据表
- processor_text_processor:文本处理数据表
- processor_image_processor:图片处理数据表
- main_task 任务调度表
- application_reporter_daily:日报数据表
- application_reporter_monthly:周报数据表
数据采集设计
每一个数据采集均为独立python文件,里面执行主程序均为main,以方便调度 每一个数据采集均会根据规则创建数据库表,数据处理类以processor_为开头,(或者统一维护到一个表中,按来源去区分)
数据处理
从多个数据库库表中获取数据,对数据进行处理,处理完成后将结果保存到数据库中,处理结果可能存储在多个表中 数据处理数据库表以processor_为开头