Skip to content

GitLab

  • Projects
  • Groups
  • Snippets
  • Help
    • Loading...
  • Help
    • Help
    • Support
    • Community forum
    • Submit feedback
    • Contribute to GitLab
  • Sign in / Register
K
kb
  • Project overview
    • Project overview
    • Details
    • Activity
    • Releases
  • Repository
    • Repository
    • Files
    • Commits
    • Branches
    • Tags
    • Contributors
    • Graph
    • Compare
  • Issues 2
    • Issues 2
    • List
    • Boards
    • Labels
    • Service Desk
    • Milestones
  • Merge requests 0
    • Merge requests 0
  • Operations
    • Operations
    • Incidents
  • Analytics
    • Analytics
    • Repository
    • Value Stream
  • Wiki
    • Wiki
  • Members
    • Members
  • Activity
  • Graph
  • Create a new issue
  • Commits
  • Issue Boards
Collapse sidebar
  • granite
  • kb
  • Wiki
    • Data_stream
    • Risk
  • risk_zxgk

risk_zxgk · Changes

Page history
update:执行公开网说明 authored Jul 06, 2022 by Liu Zhiqiang's avatar Liu Zhiqiang
Show whitespace changes
Inline Side-by-side
Showing with 73 additions and 228 deletions
+73 -228
  • data_stream/risk/risk_zxgk.md data_stream/risk/risk_zxgk.md +73 -228
  • No files found.
data_stream/risk/risk_zxgk.md
View page @ 409a4f97
......@@ -3,25 +3,31 @@
1.数据获取来源于官网
* 因为此前发现综合查询入口查询数据不全的情况,便选择从子入口获取不同维度数据。
* 目前爬取的数据包括失信被执行人,限制消费人员,被执行人,终结本次案件和财产处置的询价评估
* 失信被执行人:目前业务库数据来源于第三方,我们也爬取了官网的数据,
* 失信被执行人:
目前业务库数据来源于第三方,我们也爬取了官网的数据未入业务库,
表位于bdp-ext.rwlb.rds.aliyuncs.com bdp_risk.risk_shixin_spider_find_new。
* 被执行人,限制消费人员与终结本次案件:目前业务库更新与例行都依靠从官网爬取的数据。
业务库中存在第三方数据,标识为update_source字段非空。
表位于bdp-rds-001.mysql.rds.aliyuncs.com utn_ng_risk
* 询价评估:处于开发阶段。
2.数据关系
* 详见 [zxgk找新说明](data_stream/risk/risk_zxgk_find_new)
* 一条名称+案号的数据先进入被执行人,再可能进入终本或失信,再可能进入限制消费。
## 数据例行与找新
1.例行
* 被执行人
* 通过zhixing_id进行例行。例行更新发布的zhixing_id都是use_flag为0的数据。
表内的唯一键是对名称+案号拼接后的字符串进行md5加密生成的。
表内的唯一键是对规范处理后的名称+案号拼接后的字符串进行md5加密生成的。
zhixing_id爬取结果为1101时,标记为历史数据,即将表内use_flag置为9。
爬取结果为1000时,进行插入或更新。
* 通过pname进行例行。每天取前一天use_flag被置为9的数据中的pname发布任务。
这是因为同一条数据的zhixing_id会变化,为了避免误置为历史数据才发布此任务。
* 终结本次案件
* 通过zhongben_id进行例行,zhixing_id爬取结果为1101时,标记为历史数据,即将表内is_history置为1。
爬取结果为1000时,进行插入或更新。业务表没有唯一键,通过入库的代码通过案号和名称保证数据不重复。
爬取结果为1000时,进行插入或更新。业务表没有唯一键,通过入库的代码验证案号和名称保证数据不重复。
* 终本暂未开发按名称查询的爬虫。
* 限制消费人员
......@@ -33,236 +39,75 @@
2.找新
* 详见 [zxgk找新说明](data_stream/risk/risk_zxgk_find_new)
* 被执行人
* 通过zhixing_id进行找新。
* 通过任务表中的zhixing_id进行找新。zhixing_id一般为连续自增。
* 也存在zhixing_id跳跃的情况,比如正常找新zhixing_id在13开头号段,突然跳跃到15开头。 这种情况暂时没有预防措施。
* 终结本次案件
* 通过zhongben_id进行找新。
* 通过任务表中的zhongben_id进行找新。
* 每天zhongben_id找新的范围取决于当天从网页上获取的zhongben_id。zhongben_id存在重复的情况。
* 失信被执行人
* 通过失信id ep_id进行找新。
* 限制消费人员
* 通过name进行找新。
## 数据问题
## 清洗程序及部署
## 找新简述
```buildoutcfg
执行公开找新(包含:'zhixing','shixin','xianxiao','zhongben')
zhixing: 通过任务表增加的zhixing_id和爬取结果1101的zhixing_id进行找新
shixin: 通过任务表增加的ep_id和爬取结果1101的ep_id进行找新
zhongben: 通过任务表增加的zhongben_id和爬取结果1101的zhongben_id进行找新
xianxiao: 通过shixin和zhongben新增数据的name进行找新
```
### 数据关系
执行公开网站信息首先进入被执行人数据库,如果被执行人未履行生效法律文书确定的义务并具有相关法律规定的情形则纳入失信被执行人。如果被执行人确无可供执行财产,则纳入终本案件。失信和终本都可能被纳入限消名单。
```plantuml
@startuml
left to right direction
database zxgk_info as zxgk1
file zhixing as zhixing
file zhongben as zhongben
file shixin as shixin
file xianxiao as xianxiao
* 通过前一天失信和终本新增数据中的name发布任务,进行找新。
zxgk1 --> zhixing
zhixing --> zhongben:被执行人无可执行财产
zhixing --> shixin:被执行人拒不履行
shixin --> xianxiao:部分进入
zhongben --> xianxiao:部分进入
@enduml
```
## 找新策略详情
<!--新增数据怎么来?无需单独采集新增数据?-->
```buildoutcfg
## 问题跟踪
* 详见 [zxgk问题跟踪](http://192.168.109.110/granite/project-lake/-/wikis/data_issues_tracking/zxgk%E6%95%B0%E6%8D%AE%E9%97%AE%E9%A2%98%E8%B7%9F%E8%B8%AA)
* 被执行人
* 每天发布四次任务,每次发布的zhixing_id为距今十五天内且爬取失败次数小于80次且爬取结果为1101或null的zhixing_id
* 每次发布任务前,判断任务表内执行结果为1000的最大zhixing_id id1与表内最大zhixing_id id2,若两个id之差(id2-id1)小于七万,就补充差额的zhixing_id到任务表内。
* 终本案件
* 根据每天终本网页上的最大zhongben_id(有些zhongben_id为错误值,需要排除),按照向上增加2万,向下增加6万的范围补充执行任务表内没有的id
* 每天发布四次任务,每次发布的zhongben_id为距今3天内且爬取失败次数小于80次且爬取结果为1101或null的zhongben_id
* 限制高消费
* 使用每天失信和终本新增的name作为任务进行查找
* 失信被执行人
* 与被执行招新策略一致,增大ep_id后发布任务
```
```发布id的时间范围,最大失败次数以及补充id的范围都可通过data_pump的参数进行调整```
### data_pump参数说明
| task_type<br/>(任务类型) | search_days<br/>(任务表发布时间范围) | incre<br/>(向上扩大id数量) | decre<br/>(向下扩大id数量) | max_failure_number<br/>(爬取失败最大次数,默认80) |
|:---------------:|:----------------------:|:--------------------:|:--------------------:|:--------------------------------------:|
| zhixing | -v search_days 16 | -v incre 70000 | -v decre 0 | 80 |
| zhongben | -v search_days 4 | -v incre 20000 | -v decre 40000 | 80 |
| shixin | -v search_days 16 | -v incre 70000 | -v decre 0 | 80 |
## 队列名称及队列地址
<!--redis host port db key 优先级说明-->
* redis host: redis://:utn@0818@bdp-mq-001.redis.rds.aliyuncs.com:6379/7
* redis port: 6379
* redis db: 7
* redis key:
* risk_zxgk
### 优先级队列说明
* risk_zxgk 支持队列优先级
* 找新任务
* zhixing:risk_zxgk:101
* shixin:risk_zxgk:102
* zhongben:risk_zxgk:103
* xianxiao:risk_zxgk:4
* 存量循环更新任务
* zhixing:risk_zxgk:51
* shixin:risk_zxgk:52
* zhongben:risk_zxgk:53
* xianxiao:risk_zxgk:2
* 补漏及其他任务
* risk_zxgk:60
## 任务输入参数(样例)
找新任务
```json
zhixing
{
"zhixing_id": "1371041114",
"task_type": "spider_zhixing_task",
"update_id_type": "zhixing"
}
shixin
{
"shixin_id": "1371041114",
"task_type": "spider_shixin_task",
"update_id_type": "shixin"
}
* 同一条数据zhixing_id发生变化。原有的zhixing_id查不到数据,导致误置为历史数据。
* 官网上存在同一条数据列表展示多条,我们库内按照姓名+案号去重,只保留一条。
xianxiao
{
"pname": "刘春志",
"task_type": "spider_xianxiao_task",
"update_id_type": "xianxiao"
}
zhongben
{
"zhongben_id": "1371041114",
"task_type": "spider_zhongben_task",
"update_id_type": "zhongben"
}
```
例行更新任务
```angular2html
任务参数中update_id_type变化
zhixing
{
"zhixing_id": "1371041114",
"task_type": "spider_zhixing_task",
"update_id_type": "zhixing_routine"
}
shixin
{
"shixin_id": "1371041114",
"task_type": "spider_shixin_task",
"update_id_type": "shixin_routine"
}
xianxiao
{
"pname": "刘春志",
"task_type": "spider_xianxiao_task",
"update_id_type": "xianxiao_routine"
}
zhongben
{
"zhongben_id": "1371041114",
"task_type": "spider_zhongben_task",
"update_id_type": "zhongben_routine"
}
```
## 代码地址
| data_type | 代码简介 |代码地址 |
|:-------------------------:|:--------------------------------:| :--------|
| zhixing, shixin, zhongben | 通过任务表发布任务到redis | http://192.168.109.110/granite/project-collie-app/-/blob/master/app_risk/data_pump/zxgk_update_id_to_redis.yml |
| zhixing, shixin, zhongben | 将爬虫结果更新到任务表中 |http://192.168.109.110/granite/project-collie-app/-/blob/master/app_risk/data_pump/zxgk_update_id.yml |
| xianxiao | 将新增的shixin和zhongben的name发布到redis |http://192.168.109.110/granite/project-collie-app/-/blob/master/app_risk/data_pump/xianxiao_find_new_to_redis.yml|
## 数据存储表地址
```angular2html
任务表:主要包括id(zhixing_id,ep_id,zhongben_id),task_result(1000/1101/null),
failures_number(爬取失败次数:0--max_failure_number)等字段
```
| data_type | 表简介 | 数据库地址 | 表名 |
|:------------------:|:--------------------:|:-----------------------------:|:----------|
| zhixing| zhixing任务表,用于发布爬虫任务 | bdp-ext.rwlb.rds.aliyuncs.com | bdp_risk.risk_zhixing_loss
| shixin | shixin任务表,用于发布爬虫任务 | bdp-ext.rwlb.rds.aliyuncs.com | bdp_risk.risk_shixin_loss
| zhongben | zhongben任务表,用于发布爬虫任务 | bdp-ext.rwlb.rds.aliyuncs.com | bdp_risk.risk_zhongben_loss
```angular2html
业务表:业务数据,包含爬虫结果(id,name等)以及内部分析字段(company_name_digest等)
```
| data_type | 表简介 | 数据库地址 | 表名 |
|:---------:|:--------------------:|:----------------------------------:|:----------|
| zhixing | zhixing业务表,记录所有业务字段 | bdp-rds-001.mysql.rds.aliyuncs.com | utn_ng_risk.risk_zhixing
| shixin | shixin业务表,记录所有业务字段 | bdp-rds-003.mysql.rds.aliyuncs.com | utn_risk.risk_shixin
| zhongben | zhongben业务表,记录所有业务字段 | bdp-rds-001.mysql.rds.aliyuncs.com | utn_ng_risk.risk_zhongben
| xianxiao | xianxiao业务表,记录所有业务字段 | bdp-rds-001.mysql.rds.aliyuncs.com | utn_ng_risk.risk_xianxiao
## 钉钉预警
**找新预警:以zhongben找新为例,其余三种数据预警逻辑一致,每天找新成功的爬虫日志少于10条时预警**
```angular2html
报警信息:zhongben24小时内找新失败
索引:public-company-spider-data-*
监控频率:每4小时一次
监控起止时间: 06:00到20:00
报警条件:spider_name=risk_zxgk 且 task_params.update_id_type=zhongben 且 task_result=1000 24小时内量少于10条
```
**补漏预警:以zhongben补漏为例,zhixing与shixin预警逻辑一致,统计每天任务表内未更新的数据写到total字段,total>10报警,或补漏预警程序失败未向es写入数据时报警**
```angular2html
报警内容:"报警:zhongben补漏数据24小时内未更新"
索引:mysql_stat-*
监控频率:每天两次
监控时间:10:00和16:00
报警条件:db_host=bdp-ext.rwlb.rds.aliyuncs.com且db_name=bdp_risk且db_table=risk_zhongben_loss 24小时内量为0条
或db_host=bdp-ext.rwlb.rds.aliyuncs.com且db_name=bdp_risk且db_table=risk_zhongben_loss 且total>10 24小时内量大于1条
```
**例行更新预警:zhixing T+3预警,统计三天内es例行任务量与业务表中满足例行条件的数据量进行比较,差值计入total字段,total<0,说明三天内未例行完成,进行报警**
```angular2html
报警内容:"报警:被执行表T+3更新未完成"
索引:mysql_stat-*
监控频率:每天一次
监控时间:10:00
报警条件:db_host=bdp-rds-001.mysql.rds.aliyuncs.com且db_name=utn_ng_risk且db_table=risk_zhixing且total<0 24小时内量大于0条
```
## 部署地址
<!--机器及线上代码地址-->
```angular2html
10.8.6.18
```
## 部署方法及说明
<!--运行方法及运行命令、supervisor配置、supervisor的program等-->
- [X] crontab + data_pump
- [ ] supervisor + data_pump
- [ ] supervisor + consumer
## 数据接收来源
```angular2html
1.爬虫数据进行数据更新
2.代码生成新的执行id进行爬虫任务发布
```
* 终结本次案件
* zhongben_id变化,业务库中同一个zhongben_id对应多条数据,导致更新异常。因为只有此zhongben_id爬不到时才会把库内此zhongben_id的数据置为历史数据。
<!--来源于kafka还是归集的文件、topic的group?-->
\ No newline at end of file
* 限制消费人员
* 通过前一天失信和终本新增数据中的name发布任务。无法确认找新是否找全。
## 相关程序及部署
* 清洗入库程序
* 部署机器:10.8.6.228
* 部署方式:supervisor + data_pump
* [supervisor文件地址](http://192.168.109.110/granite/project-collie-app/-/blob/master/app_risk/supervisor/zxgk_spider.conf)
* [data_pump配置文件地址](http://192.168.109.110/granite/project-collie-app/-/blob/master/app_risk/data_pump/zxgk_spider.yml)
* reader:读爬虫文件或kafka
* 最初是读爬虫文件,只能单进程,数据量多时无法及时入库。测试时可以读文件。
* 已更新为读kafka,多进程清洗入库。
* filter:清洗入库,包含字段清洗及入库逻辑
* 字段清洗:对姓名、案号半角转全角,关联公司digest等
* 入库逻辑:
* 被执行人:按照姓名+案号生成唯一键进行更新
* 终本:与被执行人逻辑一致
* 限消:按照xianxiao_id进行更新
* 失信:按照外部数据源更新。我们自己爬的数据按照ep_id进行更新。
* writer:写到kafka,推送到水滴
* 程序中只有被执行人做了推送数据的处理。 后来由企业监控项目统一推送,程序中的推送被取消了。
* 例行更新程序
* 部署机器:10.8.6.63
* 部署方式:crontab + data_pump
* [data_pump配置文件地址](http://tech.pingansec.com/granite/project-gravel/-/blob/develop_general_taxpayer/app_risk_zxgk/data_pump/app_risk_zxgk.yaml)
* 找新程序
* 部署机器:10.8.6.18
* 部署方式:crontab + data_pump
* data_pump配置文件地址
* [任务表发布任务到redis](http://192.168.109.110/granite/project-collie-app/-/blob/master/app_risk/data_pump/zxgk_update_id_to_redis.yml)
* [读爬虫结果更新mysql任务表](http://192.168.109.110/granite/project-collie-app/-/blob/master/app_risk/data_pump/zxgk_update_id.yml)
* 预警程序
* 详见 [zxgk找新说明](data_stream/risk/risk_zxgk_find_new)
* 部署机器:10.8.6.18
* 部署方式:crontab + data_pump
* data_pump配置文件地址
* [将表中统计结果写到es,配置报警](http://192.168.109.110/granite/project-collie-app/-/blob/master/app_risk/data_pump/zxgk_update_id_alert.yml)
## 爬虫说明
* 详见[爬虫说明](data_stream/risk/risk_zhixing)
* 任务参数
* 任务id:
<br>"zhixing_id": "1371041114"
* 任务类型:
<br>"task_type": "spider_zhixing_task"
* 是否通过pname查询:
<br>"pname_id_task": true
* 数据类型:为了进一步区分不同任务类型增加的字段
<br>"update_id_type": "zhixing_routine"
\ No newline at end of file
Clone repository
  • README
  • basic_guidelines
  • basic_guidelines
    • basic_guidelines
    • dev_guide
    • project_build
    • 开发流程
  • best_practice
  • best_practice
    • AlterTable
    • RDS
    • azkaban
    • create_table
    • design
    • elasticsearch
    • elasticsearch
      • ES运维
    • logstash
View All Pages