Files
baijiahao_data_crawl/数据验证短信告警README.md

7.8 KiB
Raw Permalink Blame History

📱 数据验证与短信告警系统

🎯 功能概述

自动化数据验证系统,每天定时检查数据一致性,发现问题时通过阿里云短信服务发送告警。

核心功能:

  • 自动验证 JSON/CSV/数据库 三个数据源的一致性
  • 验证失败自动发送短信告警错误代码2222
  • 支持定时任务每天上午9点执行
  • 生成详细的验证报告
  • 支持多手机号接收告警

📁 文件结构

xhh_baijiahao/
├── data_validation.py              # 数据验证核心模块
├── data_validation_with_sms.py     # 数据验证+短信告警集成脚本 ⭐
├── sms_config.json                 # 短信服务配置文件 ⭐
├── test_validation_sms.bat         # Windows快速测试脚本
├── 数据验证短信告警使用说明.md     # 详细使用文档
└── ai_sms/                         # 阿里云短信SDK示例
    └── alibabacloud_sample/
        └── sample.py

🚀 快速开始5分钟

1 安装依赖

pip install alibabacloud_dysmsapi20170525 alibabacloud_credentials alibabacloud_tea_openapi alibabacloud_tea_util

2 配置短信服务

编辑 sms_config.json

{
  "access_key_id": "您的AccessKey ID",
  "access_key_secret": "您的AccessKey Secret",
  "sign_name": "北京乐航时代科技",
  "template_code": "SMS_486210104",
  "phone_numbers": "13621242430"
}

获取AccessKey https://ram.console.aliyun.com/manage/ak

3 测试运行

Windows用户双击运行

test_validation_sms.bat

命令行运行:

# 测试短信发送
python data_validation_with_sms.py --test-sms

# 执行数据验证
python data_validation_with_sms.py

4 配置定时任务

# 查看配置命令
python data_validation_with_sms.py --setup-schedule

按照提示配置Windows任务计划程序设置每天9点自动执行。


📖 使用场景

场景1每日自动验证

定时任务配置每天9点

  • 程序:C:\Python\python.exe
  • 参数:D:\workspace\xhh_baijiahao\data_validation_with_sms.py
  • 触发器每天上午9:00

执行流程:

  1. 自动验证昨天的数据JSON/CSV/数据库)
  2. 如果发现问题 → 发送短信告警错误代码2222
  3. 生成详细验证报告

场景2手动验证指定日期

# 验证2025-12-29的数据
python data_validation_with_sms.py --date 2025-12-29

# 验证指定表
python data_validation_with_sms.py --table ai_statistics_day --date 2025-12-29

# 只验证特定数据源
python data_validation_with_sms.py --source csv database

场景3仅验证不发短信

# 适用于调试或测试
python data_validation_with_sms.py --no-sms

🔔 短信告警说明

触发条件

发送短信告警(错误代码:2222)的情况:

问题类型 说明 示例
顺序不一致 JSON和CSV记录顺序不同 账号A在JSON第1位CSV第3位
缺失记录 某个数据源少了记录 JSON有10条CSV只有9条
多余记录 某个数据源多了记录 CSV有11条数据库只有10条
字段差异 相同记录的字段值不同 阅读量JSON=1000, CSV=999

短信内容

【北京乐航时代科技】您的验证码是2222

💡 说明:由于使用验证码模板,错误代码固定为 2222。具体错误详情请查看验证报告文件。

多号码配置

sms_config.json 中配置多个接收号码:

{
  "phone_numbers": "13621242430,13800138000,13900139000"
}

📊 验证报告

每次验证自动生成详细报告:

validation_report_20250104_090523.txt

报告内容:

  • 顺序验证结果
  • 交叉验证结果
  • 数据差异统计
  • 详细错误列表(记录级别)

示例报告片段:

交叉验证结果
----------------------------------------------------------------------
json vs csv
  共同记录: 48 条
  仅在json: 0 条
  仅在csv: 2 条
  字段不匹配: 3 条

仅在csv中的记录前5条:
  - 测试账号1|1
  - 测试账号2|1

字段值不匹配的记录前3条:
  记录: 主力账号|1
    字段 read_count:
      json: 150000
      csv: 149999

⚙️ 高级配置

环境变量方式(更安全)

Windows PowerShell

$env:ALIBABA_CLOUD_ACCESS_KEY_ID="您的AccessKey ID"
$env:ALIBABA_CLOUD_ACCESS_KEY_SECRET="您的AccessKey Secret"

Linux/macOS

export ALIBABA_CLOUD_ACCESS_KEY_ID="您的AccessKey ID"
export ALIBABA_CLOUD_ACCESS_KEY_SECRET="您的AccessKey Secret"

配置优先级

  1. 环境变量 (最高优先级)
  2. sms_config.json 配置文件
  3. 代码中的默认值

🔧 故障排查

短信发送失败

常见原因:

  1. AccessKey ID/Secret 不正确
  2. 短信签名未审核通过
  3. 短信模板未审核通过
  4. 账户余额不足
  5. 手机号格式错误

解决方法:

# 测试短信发送
python data_validation_with_sms.py --test-sms

查看控制台输出的详细错误信息和诊断地址。

导入错误

ImportError: No module named 'alibabacloud_dysmsapi20170525'

解决方法:

pip install alibabacloud_dysmsapi20170525 alibabacloud_credentials alibabacloud_tea_openapi alibabacloud_tea_util

数据库连接失败

检查 database_config.py 配置是否正确。

定时任务不执行

检查项:

  1. 任务计划程序中任务状态
  2. Python路径和脚本路径是否正确
  3. 查看任务历史记录

📝 命令行参数

python data_validation_with_sms.py [参数]
参数 说明 示例
--date 指定验证日期 --date 2025-12-29
--source 指定数据源 --source json csv
--table 指定验证表 --table ai_statistics_day
--setup-schedule 配置定时任务 --setup-schedule
--test-sms 测试短信功能 --test-sms
--no-sms 禁用短信发送 --no-sms

🔐 安全建议

  1. 使用环境变量存储敏感信息

    • 不要将 AccessKey 提交到 Git
    • sms_config.json 添加到 .gitignore
  2. 定期轮换 AccessKey

    • 建议每3-6个月更换一次
  3. 使用 RAM 子账号

    • 为短信服务创建专用子账号
    • 仅授予短信发送权限
  4. 设置 IP 白名单

    • 在阿里云 RAM 控制台限制访问 IP

📞 技术支持

阿里云短信服务

常见问题

Q短信收不到 A检查手机号是否正确短信签名和模板是否已审核通过。

Q如何查看短信发送记录 A登录阿里云短信服务控制台 → 业务统计 → 发送记录查询。

Q短信费用多少 A验证码短信约0.045元/条,具体价格以阿里云官网为准。

Q可以自定义短信内容吗 A需要在阿里云控制台申请新的短信模板审核通过后修改 template_code 配置。


🎉 快速测试检查清单

  • 安装Python依赖
  • 配置 sms_config.json
  • 运行 test_validation_sms.bat
  • 收到测试短信
  • 执行数据验证
  • 生成验证报告
  • 配置定时任务

📅 版本历史

v1.0.0 (2025-01-04)

  • 初始版本发布
  • 数据验证功能
  • 阿里云短信告警
  • 定时任务支持
  • 多数据源支持JSON/CSV/数据库)
  • 详细验证报告
  • 配置文件支持

开发团队: 北京乐航时代科技
最后更新: 2025-01-04