这次主要解决什么
静默模式(模式 B)下,一旦脚本中途抛异常或网络持续超时,当天运行会无声无息地失败——日志里什么都没有,看上去就像"根本没跑"。本版本从两个方向根治:
- 任何异常都会被最后一道防线捕获并写入日志,不再凭空消失
- 新增网络时间预算,保证脚本总能在计划任务的时限内主动收尾
✨ 新增
- 网络时间预算:新增环境变量
WORKBUDDY_BUDGET_SECONDS(默认420秒,上限540秒)。单次请求的超时随剩余预算收缩,预算耗尽即主动收尾并如实记录,剩余项留到下次再领 - 新的结果类型:
NETWORK(网络不可达)与TIMEOUT(预算耗尽),与NO_SESSION(登录态失效)区分开,不再一律给出"请重新登录"的误导提示 - 配置自检:环境变量非法、
≤0或超过上限时自动夹到安全值,并在输出里附config_warning
🐛 修复
- 静默模式异常兜底:
main()改为薄壳接住一切异常;日志路径不可写时回退到脚本同目录;print失败同样转写日志 - 凭据文件损坏不再被误报成
NO_SESSION(JSONDecodeError是ValueError的子类,此前被错误归类) - 凭据里
endpoint字段类型异常时不再崩溃(同样会落盘留痕) - 积分数若为字符串(如
"1.5"、"1e3")不再被当成 0;Infinity也不会让整轮失败 - 领取 Buddy 旅行礼物失败后不再派 Buddy 出发,避免覆盖尚未领取的奖励
- 成长中心各子步骤独立容错,并区分软/硬失败——"派 Buddy 已达每日上限"这类 4xx 不再让计划任务天天报红
- 未知命令给出明确提示与退出码
⚠️ 行为变更
- GET 请求失败自动重试 1 次;抽奖、领奖等写操作不重试,避免超时发生在服务端处理完成之后造成重复提交
(两个签到接口例外:状态查询是只读的,领取接口本身幂等,故允许重试)
📦 升级说明
无需修改任何配置,直接替换 signin.py 即可。已配置的定时任务(每天 00:05)不受影响,错过后补跑等设置保持不变。
完整变更:v1.0.0...v1.1.0