彩票数据自动采集与校验系统

##实施数据##:本系统旨在自动化地从官方渠道采集最新的彩票开奖数据,并进行多重校验,确保数据的准确性。支持多种彩票类型,以满足提质、增效、降本、增效的要求。

功能列表

外部数据

官方网站数据

模拟官方网站更新开奖数据。

            
{
  "lottery_type": "双色球",
  "issue_number": "2024105",
  "draw_date": "2024-08-30",
  "red_balls": ["02", "10", "15", "23", "29", "31"],
  "blue_ball": "05",
  "sales_amount": 455000000,
  "pool_amount": 1250000000
}
            
        

预期结果:系统能够自动采集该数据,并进入校验流程。

官方API数据

模拟通过API获取开奖数据。

            
{
  "code": 200,
  "message": "success",
  "data": {
    "lottery_type": "大乐透",
    "issue_number": "24095",
    "draw_date": "2024-08-30",
    "front_balls": ["03", "11", "18", "25", "32"],
    "back_balls": ["07", "12"],
    "sales_amount": 300000000,
    "pool_amount": 900000000
  }
}
            
        

预期结果:系统能够成功调用API,获取数据,并进行校验。

采集数据

成功采集数据

模拟数据源正常,成功采集数据。

            
{
  "lottery_type": "双色球",
  "issue_number": "2024106",
  "draw_date": "2024-09-01",
  "red_balls": ["03", "11", "18", "25", "32", "33"],
  "blue_ball": "06",
  "sales_amount": 460000000,
  "pool_amount": 1300000000
}
            
        

预期结果:数据成功进入校验环节,记录采集日志为“成功”。

业务数据

格式校验

验证期号格式校验。

            
{
  "lottery_type": "双色球",
  "issue_number": "202410a",
  "draw_date": "2024-08-30",
  "red_balls": ["02", "10", "15", "23", "29", "31"],
  "blue_ball": "05"
}
            
        

预期结果:对于不符合 ^[0-9]{7}$ 格式的期号,校验失败,并记录错误信息。

范围校验

验证蓝球范围校验 (1-16)。

            
{
  "lottery_type": "双色球",
  "issue_number": "2024107",
  "draw_date": "2024-08-30",
  "red_balls": ["02", "10", "15", "23", "29", "31"],
  "blue_ball": "17"
}
            
        

预期结果:对于超出范围的蓝球号码,校验失败,并记录错误信息。

逻辑校验

模拟排列五号码不能重复。

            
{
  "lottery_type": "排列五",
  "issue_number": "2024237",
  "draw_date": "2024-08-26",
  "numbers": ["1","2","3","4","4"],
  "sales_amount": 12345678,
  "data_source": "爬虫",
  "data_validation_status": "未通过"
}
            
        

预期结果:如果号码重复,校验失败。

数据一致性校验

模拟不同数据源的开奖数据不一致。

数据源A

            
{
  "lottery_type": "双色球",
  "issue_number": "2024108",
  "red_balls": ["01", "02", "03", "04", "05", "06"],
  "blue_ball": "07"
}
            
        

数据源B

            
{
  "lottery_type": "双色球",
  "issue_number": "2024108",
  "red_balls": ["01", "02", "03", "04", "05", "07"],
  "blue_ball": "07"
}
            
        

预期结果:系统检测到数据不一致,发出告警,并记录差异信息。

自定义校验

模拟红球号码不能有连续数字。

            
{
  "lottery_type": "双色球",
  "issue_number": "2024108",
  "red_balls": ["01", "02", "03", "04", "05", "07"],
  "blue_ball": "07"
}
            
        

预期结果:如果号码有连续数字,校验失败,记录错误日志,并且不能存储到数据库。