7cbbbff3eae651c4a4ba29b61b5f273919f369f7
ci/woodpecker/tag/build Pipeline was successful
从线上签到 H5 拿到源码(counselor-front.campusphere.net/...
wec-counselor-sign-apps/prod/prod_v2.1.1.1357_4DnD/stu/mobile/js/app.js),
按其中实现重写判定,不再依赖推测。
H5 关键实现:
xt = { sign: 1, noSign: 2, leave: 5 } // signStatus 枚举
Rt = { noStart, running, finished } // 任务阶段
$t(): isLoop 时把 signDate.substring(0,10) 与时刻拼接,否则用时刻本身
Gt(): current > end → finished
current <= begin → noStart
否则 → running
handlerButtonClick: if (signed && !isAllowUpdate) toast("更新签到开关已关闭")
updateSign: !updateLimit || leftNum 才允许提交,否则提示"已超出最大更新次数"
对补签的结论:签到 H5 全量 JS 中不存在 supply / 补签 字样。
所谓"补签"在 H5 里就是"更新签到"——已签到后再次提交,
受 isAllowUpdate 与 updateLimit/leftNum 控制。
查寝详情另有 supplyTime 字段(实测为空串),但签到 H5 未使用它。
改动:
- SignWindow/ParseSignWindow:singleTask*(查寝,完整日期时间)优先,
否则用 rateSignDate + rateTaskBeginTime/EndTime(sign、return_register);
解析失败一律 Parsed=false 放行,避免时间格式差异误杀
- EvalTaskPhase:复现 Gt(),含"等于开始时刻算 noStart"的边界
- SignUpdateBlocked:已签到且 isAllowUpdate=false → 拦截;
updateLimit=true 且 leftNum<=0 → 拦截(次数用尽)
- handler 在执行前先查"已签到不允许更新",再查时间段,
两者拦截时都写 fail 状态、记日志、发 task_error 事件且不扣次数
- 时间字段实测:sign/return_register 用 rateSignDate+时刻,
sleep_check 用 singleTaskBeginTime/EndTime 完整时间
测试覆盖:两种时间格式解析、时段内/外/边界、信息缺失不拦截、
signStatus 枚举各值、次数限制、EvalTaskPhase 三态与边界。
Description
No description provided
Languages
Go
58.2%
Vue
35.3%
TypeScript
4.1%
CSS
1.5%
JavaScript
0.6%
Other
0.2%