## 情报收集系统设计 ### 程序框架 ```angular2html intelligence_system/ ├── config/ # 配置管理 │ ├── __init__.py │ ├── settings.py # 全局参数 │ └── logging.conf # 日志配置 ├── collectors/ # 数据采集 │ ├── news_api.py │ └── complaint_spider.py ├── processors/ # 数据处理 │ ├── text_processor.py │ └── image_processor.py ├── storage/ # 数据存储 │ ├── database.py │ └── cache_manager.py ├── applications/ # 应用层 │ ├── reporter/ │ │ ├── daily.py │ │ └── monthly.py │ └── alert.py ├── utils/ # 工具类 │ ├── logger.py │ └── network.py └── main.py # 调度入口 ``` ### 程序设计原则 1. 所有程序尽可能在py文件中运行,尽量避免使用命令行执行 2. 配置需要在配置类中定义 3. 密钥等信息直接放在配置类中 ### 主程序设计 主程序需要一次启动,一直运行,启动时运行一次(在代码中可取消),之后每天定时生成一次报告 主程序包含爬虫/api调度器。该调度器通过查询mysql中任务调度情况按需执行,db文件中应包含任务名称、 任务路径、任务执行频率(支持按天、按周,按分钟)、上次执行时间、下次执行时间等信息 主程序应包含数据处理调度器,根据数据类别分别处理,如文本数据处理调度器、图片数据处理调度器等, 每天定时拉取db获取到的原始数据,分别进行处理,处理完成后将结果保存到mysql中 主程序应包含日报、周报等生成,根据时间定时生成报告 ### 日志设计 日志系统应兼容多个平台,如win、mac和linux,日志需要保存为log文件,并且在日志大于20mb时自动压缩 ### 数据库链接设计 数据存储放在数据库中,数据库类型为mysql,数据库名称为intelligence_system 数据库表的命名规则与目录一致,数据采集类以collector_为开头,数据处理类以processor_为开头,数据存储类以storage_为开头,应用层类以application_为开头 依次类推。 数据库链接为通用配置,要求数据采集或处理类等,可以直接调用封装好的数据库链接,不必每次都重新些, 该链接包含表的增删改查功能,以及执行sql语句功能 数据库结构: 1. collector_news_api:新闻api数据表 2. collector_complaint_spider:投诉数据表 3. processor_text_processor:文本处理数据表 4. processor_image_processor:图片处理数据表 5. main_task 任务调度表 6. application_reporter_daily:日报数据表 7. application_reporter_monthly:周报数据表 ### 数据采集设计 每一个数据采集均为独立python文件,里面执行主程序均为main,以方便调度 每一个数据采集均会根据规则创建数据库表,数据处理类以processor_为开头 ### 数据处理 从多个数据库库表中获取数据,对数据进行处理,处理完成后将结果保存到数据库中,处理结果可能存储在多个表中 数据处理数据库表以processor_为开头