Appearance
云平台计划任务
云平台长期任务较少,目前重点是门店积分日结。受控脚本在 yunapi/scripts/cron,服务器 /root/scripts/ 中的脚本应从仓库同步,不要只在宝塔面板维护不可追踪版本。
任务清单
| 脚本 | 业务含义 | 接手关注点 |
|---|---|---|
yun_store_score_daily_settlement_bt.sh | 门店积分每日结算。 | 结算日期、重复执行保护、积分来源、门店范围、日志和补跑方式。 |
脚本默认调用 https://yunapi.jingangai.cn/api/v1/internal/yun-store-score/trigger,通过 X-Task-Token 校验内部任务 token。支持的关键环境变量包括:
| 变量 | 说明 |
|---|---|
TASK_NAME | 默认 store_score_daily_settlement;也兼容来源同步类任务名。 |
TASK_TOKEN | 必填,必须与 yunapi 环境变量 INTERNAL_TASK_TOKEN 一致。 |
SETTLE_DATE | 指定补跑日期,格式 YYYY-MM-DD。 |
BEGIN_DATE、END_DATE | 来源同步任务的补跑范围。 |
FORCE | 是否强制补跑,默认 false。 |
LOG_FILE | 默认 /www/wwwlogs/yun-store-score-scheduled-worker.log。 |
LOCK_FILE | 默认 /tmp/yun_store_score_daily_settlement.lock,防止并发跑同一任务。 |
宝塔配置要求
宝塔任务命令必须使用 exec env,让脚本真实退出码传给计划任务:
bash
exec env \
TASK_NAME=store_score_daily_settlement \
TASK_DESC=云平台门店积分每日结算 \
TASK_TOKEN='<与 yunapi INTERNAL_TASK_TOKEN 一致的密钥>' \
/root/scripts/yun_store_score_daily_settlement_bt.sh不要直接写成 TASK_NAME=... /root/scripts/yun_store_score_daily_settlement_bt.sh。宝塔外层包装器可能在内部脚本失败后仍打印 Successful,导致任务误判成功。
成功判定
任务只有同时满足以下条件才算成功:
| 条件 | 说明 |
|---|---|
curl 成功 | 网络请求没有超时或连接失败。 |
HTTP 状态码为 200 | 接口正常返回。 |
响应 success=true | 内部任务执行结果成功。 |
脚本退出码为 0 | 宝塔能拿到真实退出码。 |
批次状态为 SUCCESS | store_score_settlement_batch 对应结算日期成功。 |
宝塔日志只是执行证据,最终业务状态以云平台“积分机制 -> 结算运维”和结算批次表为准。
排查步骤
- 查看宝塔或调度平台是否启用脚本,命令是否以
exec env开头。 - 确认后端地址、内部任务 token、时间范围和
FORCE是否正确。 - 查
/www/wwwlogs/yun-store-score-scheduled-worker.log,确认 HTTP 状态、响应和退出码。 - 查
yunapi日志,确认处理日期、处理数量和异常。 - 查云平台“积分机制 -> 结算运维”,确认批次状态、影响门店数和流水数。
- 如需补跑,按日期从早到晚逐日执行;流水通过
source_key幂等,不允许绕过唯一来源键批量插入。
日常顺序
| 建议时间 | 任务 | 说明 |
|---|---|---|
| 01:30 | 小羽佳开发标准单同步 | 将来源订单写入对应积分日。 |
| 01:50 | 家姐联盟旧客户续约同步 | 写入续约积分。 |
| 02:30 | 门店积分每日结算 | 汇总三嫂业绩、满佣、换人、一次性单、员工上架等日结项目。 |
调整任务时间时,来源同步必须早于每日结算,并预留足够执行间隔。
文档维护
门店积分、排行、日结口径变更时,应同步更新: