7.8 KiB
7.8 KiB
📱 数据验证与短信告警系统
🎯 功能概述
自动化数据验证系统,每天定时检查数据一致性,发现问题时通过阿里云短信服务发送告警。
核心功能:
- ✅ 自动验证 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
执行流程:
- 自动验证昨天的数据(JSON/CSV/数据库)
- 如果发现问题 → 发送短信告警(错误代码2222)
- 生成详细验证报告
场景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"
配置优先级
- 环境变量 (最高优先级)
- sms_config.json 配置文件
- 代码中的默认值
🔧 故障排查
❌ 短信发送失败
常见原因:
- AccessKey ID/Secret 不正确
- 短信签名未审核通过
- 短信模板未审核通过
- 账户余额不足
- 手机号格式错误
解决方法:
# 测试短信发送
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 配置是否正确。
❌ 定时任务不执行
检查项:
- 任务计划程序中任务状态
- Python路径和脚本路径是否正确
- 查看任务历史记录
📝 命令行参数
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 |
🔐 安全建议
-
✅ 使用环境变量存储敏感信息
- 不要将 AccessKey 提交到 Git
- 将
sms_config.json添加到.gitignore
-
✅ 定期轮换 AccessKey
- 建议每3-6个月更换一次
-
✅ 使用 RAM 子账号
- 为短信服务创建专用子账号
- 仅授予短信发送权限
-
✅ 设置 IP 白名单
- 在阿里云 RAM 控制台限制访问 IP
📞 技术支持
阿里云短信服务
- 控制台:https://dysms.console.aliyun.com/
- 文档:https://help.aliyun.com/product/44282.html
- API参考:https://api.aliyun.com/product/Dysmsapi
常见问题
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