Releases: makewheels/shiftcheck-wechat-mini-program
Release list
2.5.0
2.5.0
本版改动
- 完整移除 LeanCloud 使用统计与登录链路,不再向已失效的统计域名发送请求。
删除两个不再使用的 SDK 文件,代码包从 260.9 KB 缩到约 25 KB。
设备信息、网络状态和 openid 不再上报,断网行为与联网完全一致。 - 转发、分享到朋友圈真正可用:此前 11 个页面右上角都不会出现「转发」入口,
本版统一接入(公共实现utils/share.js),分享卡片直达当前页面并带页面标题。 - 月日历配色重做:普通日一律白底(上班红字、休息绿字),法定节假日浅红底红框红字,
调休补班日橙色「班」角标,哪天放假一眼可见(两版方案截图对比后用户选定)。 - 「个人模式默认班组」对四种倒班全部生效:设置页按倒班分四行各自设置,
各个人页打开时各自生效(此前只有五班三倒在用这个设置,其余三种固定默认一班)。 - 四班四倒、三班半倒的 4 个页面补上「跳转到指定日期」,与五班三倒、经警队一致。
- 11 个页面补充导航栏标题,从二级页返回时标题栏可区分所在页面。
- 首页单位名标签由 HTML
span改为小程序text组件,写法合规。 - 保留全部 8 个倒班页、月日历和设置功能,排班计算仍在本地完成。
验证与边界
- 自动化测试 169 项(2.4.0 为 135),新增转发接线与标题对应、默认班组读写契约、
全页面沙箱加载与 wxml 禁 HTML 标签等门禁。 - 月日历配色经模拟器逐页截图核验(2026 年 10 月国庆 7 天假期与 10 日补班);
真机观感与「点某天回列表」手感仍需在体验版确认。 - 强制升级的端到端链路(上传新版 → 弹窗 → 重启)仍需等本版成为线上版本后验证。
- 上传开发版本后,由维护者在微信后台完成体验、提审与发布。
2.4.0
2.4.0
本文件是 GitHub Release v2.4.0 正文的唯一事实源。
改这里,然后同步过去:gh release edit v2.4.0 --title "<上面的标题>" --notes-file doc/releases/2.4.0.md不要直接在 GitHub 网页上改 Release 正文 —— 那样仓库里这份就过期了,两边会漂。
新功能
- 全部 8 个倒班页新增「月日历」视图,与原来的一周列表可切换。日历上标出法定节假日(
休)与调休补班日(班),点任意一天回到列表模式并从那天开始显示 7 天。节假日数据内置(来自国务院办公厅通知,已按原文逐条核对 2025、2026 两年;2027 年通知未发布,故未内置,日历会提示「该年数据尚未内置」) - 新增经警队「上一天休三天」排班(个人 / 总览两个页面);首页单位名「热电厂」→「中油电能」
本版收敛:删掉两条已经死掉的功能链路
注册页面 20 → 11,小程序收敛成「纯离线查班工具」:8 个倒班页全部本地计算,只有首页的使用统计上报还连 LeanCloud。
| 删除 | 页面 | 为什么 |
|---|---|---|
| 整条「上班推送」链路 | pushHome、newPushMission、updateMail、updatePhone、accountHome |
创建任务的入口自 2.2.x 起就被一句裸 return 堵死;PushMission 表与 7 个推送字段全部只写不读;真正发信的定时任务在已停用的后端仓库里 —— 用户填了真实邮箱手机号也永远收不到 |
| 整条 DIY 自定义规则链路 | diy、diyPush、importRuleByKey、myRuleHome |
全仓库没有任何代码能创建 Rule / RuleKey,激活码对新用户 100% 报「激活码错误」且无处申请;导入页还会在登录未完成时烧毁一次性激活码并提示成功 |
顺带消掉的问题:20 秒卡死的 loading toast(15 处全在已删页面里)、updateMail/updatePhone 的 users[0] 未判空崩溃、accountHome 的 save 竞态、pushHome 三个开关的乐观更新 + 静默失败。
微信隐私接口归零(剪贴板随激活码导入页一起删除、邮箱手机号随推送链路删除、从来没有定位)——《用户隐私保护指引》不再有必须声明的接口项。test/hygiene.test.js 用零容忍门禁守着这个性质。
广告位从 3 个减到 1 个(激励视频与 diy 页 banner 随页面删除),只剩 adunit-499feca899514736。
修复
| 问题 | 影响 |
|---|---|
| 排班基准日之前的日期算错班 | 经警队锚点是 2026-09-10,用户往前翻一天就看到错的班次;全部倒班页统一改为有符号天数差 + 负数取模 |
scope.userInfo 授权门禁早已失效 |
「我的DIY规则」和「订阅上班推送」对新用户 100% 走到「授权失败,无法使用」(这两个入口在本版随链路一起删除) |
| 21 处「登录还没回来就取 openid」 | 首次冷启动手快一点就白屏;已统一收口 + 登录重试 + 页面入口守卫 |
| 「返回主页」深链进入时点了没反应 | 从搜一搜 / 扫码 / 分享卡片直接进倒班页时页面栈只有 1 层,navigateBack 静默失败;改为栈深 ≤1 时 reLaunch 回首页 |
| 强制升级 3 处缺陷 | onUpdateReady 注册时机(冷启动可能错过、永不升级)、下载失败无兜底、非首页入口不检查 |
| 首页「5 分钟内不重复上报」从未生效 | 时间戳存在页面 data 里、每个实例都是 0;改用 storage,并补了能抓住这个 bug 的测试 |
| 首页一打开就弹「登录没成功」阻塞弹窗 | 使用统计上报走了「取不到 openid 就补登录、补不上就弹框」的路径,而首页 8 个倒班入口全是本地计算、根本不需要登录。网络不通或后端域名失效时每个用户一进来就被拦一下。改成静默跳过,并把那对弹框方法整个删掉、加门禁守着不许复活 |
2 处查询结果未判空就取 [0] |
新用户点「设置手机」会崩;看完激励视频会显示假的推送次数(两处均在本版随链路删除) |
注:本轮过程中还修过「自定义规则提醒」页打不开(页面 json 被误标成自定义组件,v2.3.2 起就有)与
pushHome把位运算&当逻辑与&&的笔误 —— 这两个页面随后在同一版里被删除,修复本身留在了 git 历史里。
隐私与清理
- 移除首页静默采集:原来启动后 800ms 会无感读取剪贴板全文、请求 ip138 查 IP 归属,连同 13 项设备信息写入 LeanCloud。剪贴板与设备信息都属微信隐私接口,未声明会被拦截,后台静默读剪贴板也是监管通报高频项
- 移除废弃 API:
wx.getSystemInfoSync、wx.getUserInfo - 收紧 sitemap:只开放首页与 8 个倒班查询页给微信索引(它们纯本地计算、不依赖登录态,被搜到直接能用)
- 删除死代码:
mta_analysis.js、未使用的 LeanCloud 打包版 SDK(165 KB)、失效的授权页、feedback空占位页、logs模板页、只写不读的homepage设置
工程化(这一版开始有质量门禁)
test/测试套件:137 项,node:test零第三方依赖。用假的Page()/wx/getApp()沙箱加载页面 js 直接断言,不启动模拟器。排班算法用五条互相独立的约束钉住:锚点守卫、周期性不变量班次(d) === 班次(d+N)、与真实排班核对过的经警队班表、金标准快照(21 组已校准输出)、列表 == 日历(保证没有第二套班次算法)- GitHub Actions 门禁(Node 24),已设为
master分支保护的必需检查 - 累计注入 20+ 个变异验证门禁有效性,全部被抓到 —— 其中两次抓到的是门禁自身的漏洞(升级回调嵌套检查看漏了第二处;豁免标记检查把自己要找的行也跳过了)
- 新增单文件行数门禁(上限 500 行),排除
libs/第三方 SDK。当前最大业务文件是pages/wbsd/worker/worker.js(352 行),留了约 30% 余量 - 新增门禁:不许恢复「取不到 openid 就弹框挡住用户」那套方法。守的是机制不是文案,换个提示措辞也一样会被拦下
- 发布说明改为以仓库文件为准:每个版本的 Release 正文存在
doc/releases/<version>.md,GitHub Release 用gh release edit --notes-file从它同步过去(见doc/releases/README.md) - 测试套件改为跨平台:原先路径判断用了
'/libs/'、'/pages/'这类正斜杠字面量,在 Windows 上一条门禁跑红、另一条(「磁盘上的页面目录都在 app.json 注册」)因为dirs恒为空而静默永远绿。现已统一归一化,本机与 CI 行为一致 - 新增
AGENTS.md(仓库须知与陷阱清单);doc/changes/一次变更一份记录,文件名带时分秒
验证与已知边界
- 137 项测试通过(本机 Node v24.15.0,与 CI 同版本);排班输出与 2.3.4 逐日比对(全部班组 × 1541 天),锚点及之后 0 处不一致
- 新增门禁做过反向验证,确认不是「永远绿的死测试」:把行数上限临时压到 300 会准确报出 4 个超标文件;从
app.json摘掉一个页面会让结构门禁立刻变红 ⚠️ 界面级验证未做:月日历的格子换行、底色对比度、点击手感,以及 8 个倒班页在窄屏上的排版,需要人工在模拟器或真机上过一遍。上传后请按doc/发布前检查单.md第 9 节真机走一遍⚠️ 强制升级全链路未跑通:「上传 → 检测到新版本 → 弹窗 → 重启」需要真的发一版才能验,代码层的 3 处缺陷已修并有测试守着⚠️ 后端api.leancloud.mp.shiftcheck.work疑似已失效:在本机 DNS 解析失败(getaddrinfo failed),经代理 CONNECT 也是502。对照测试排除了「本机 DNS 整类封个人域名」——同一台机器上其它个人域名的子域都能正常解析,而这个域名的三级子域全挂。但本机所在网络按类别封了 DoH 服务,无法从内网确认全球解析状态,需要用手机流量再验一次。
影响面:只有首页的使用统计上报依赖它,8 个倒班页与设置页全是本地计算,查班功能不受任何影响。统计上报失败现在是静默跳过的(本版修的),用户看不到任何异常。
若确认已弃用:libs/里的 LeanCloud SDK 占 237.6 KB,是本包 260.9 KB 的 91%,删掉可降到 ~25 KB- 完整逐条变更记录见
doc/changes/
升级到这一版还需要在微信后台做的事
- request 合法域名:全仓库只剩
api.leancloud.mp.shiftcheck.work一个(只有首页使用统计上报在用),线上照样要配白名单 - 《用户隐私保护指引》:已没有必须声明的隐私接口;仍建议如实说明会收集设备信息与 openid 用于使用统计
- 广告位只剩 1 个:
adunit-499feca899514736,确认属于本小程序主体且已开通流量主 - 作废两个已泄露的 ip138 token:代码里已删,但公开仓库的 git 历史里还在
- LeanCloud 后台配 ACL:小程序端 appKey 天生公开(包可反编译),不配 ACL 任何人都能往
UseMessage灌垃圾数据 - 基础库版本统一:
project.config.json是 2.8.2、project.private.config.json是 2.25.3(后者覆盖前者)
2.3.4
2.3.4
本文件是 GitHub Release v2.3.4 的正文来源。
改这里,然后用gh release edit v2.3.4 --notes-file doc/releases/2.3.4.md同步过去。
改动
- LeanCloud 改用专有域名
api.leancloud.mp.shiftcheck.work(app.js的AV.init.serverURLs) project.config.json相应调整
这是 2.4.0 之前的最后一个版本,也是 2026-09 这轮改动前的 master 基线:
2.4.0 的排班回归测试就是拿这个版本做基线逐日比对的(9 页 × 全部班组 × 1541 天,
锚点及之后 0 处不一致)。
补录说明:本 Release 于 2026-09-12 补建(此前仓库只有 tag、从未建过 Release),
GitHub 显示的发布时间是补录时间。上面的条目是作者当年写在README.md「版本更新日志」里的原文(该节 2026-09-14 已移除,原文保留在此),
「后续更正」是 2026-09 复核代码时补的。
2.3.3
2.3.3
本文件是 GitHub Release v2.3.3 的正文来源。
改这里,然后用gh release edit v2.3.3 --notes-file doc/releases/2.3.3.md同步过去。
原 README「版本更新日志」原文(该节 2026-09-14 已移除,原文保留在此)
删除 mta,修复 leancloud,修复登录 onShow 函数显示过快报 toJSON 错误问题
包含提交
2ae248d删除mta,修复leancloudb555f77test8fe2478Remdme-file ← tag 指向这里
后续更正(2026-09 复核)
- 那次「修复登录 onShow 报 toJSON 错误」实际只是把首页上报延后 800ms(
setTimeout),
把竞态掩盖了而没有解决:其余 20 多处AV.User.current().toJSON()仍在,
首次冷启动登录未回来时照样null.toJSON()崩页。2.4.0 才统一收口到
app.getOpenid()/app.withOpenid()并加登录重试与页面入口守卫 - MTA 当时只从代码里移除,
libs/mta_analysis.js文件本身留到 2.4.0 才删
补录说明:本 Release 于 2026-09-12 补建(此前仓库只有 tag、从未建过 Release),
GitHub 显示的发布时间是补录时间。上面的条目是作者当年写在README.md「版本更新日志」里的原文(该节 2026-09-14 已移除,原文保留在此),
「后续更正」是 2026-09 复核代码时补的。
2.3.2
2.3.2
本文件是 GitHub Release v2.3.2 的正文来源。
改这里,然后用gh release edit v2.3.2 --notes-file doc/releases/2.3.2.md同步过去。
原 README「版本更新日志」原文(该节 2026-09-14 已移除,原文保留在此)
- 在 diy 页面中设置 banner2 广告
- 在 diy 规则中添加推送功能,并且添加看激励视频增加推送次数功能
代码层面
- 新增
pages/diyPush/(4 个文件):自定义规则提醒 +wx.createRewardedVideoAd看视频加次数 pages/diy/diy.wxml加入adunit-d5a2055026c60752- 移除
pages/index/index.js里 16 行
后续更正(2026-09 复核)
- 本版本引入的
pages/diyPush/diyPush.json写了"component": true,而diyPush.js用的是Page()——
页面注册不上、跳过去白屏。这个错误一直留到 2.4.0 才被发现并修复,
说明这条变现路径此前很可能从未在真机上验证过
补录说明:本 Release 于 2026-09-12 补建(此前仓库只有 tag、从未建过 Release),
GitHub 显示的发布时间是补录时间。上面的条目是作者当年写在README.md「版本更新日志」里的原文(该节 2026-09-14 已移除,原文保留在此),
「后续更正」是 2026-09 复核代码时补的。
2.3.1
2.3.1
本文件是 GitHub Release v2.3.1 的正文来源。
改这里,然后用gh release edit v2.3.1 --notes-file doc/releases/2.3.1.md同步过去。
原 README「版本更新日志」原文(该节 2026-09-14 已移除,原文保留在此)
- 取消首页 Banner 广告
- mta 统计,首页的按钮,倒班规则选择。是哪个班组,个人还是总览
代码层面
app.js、pages/index/index.js(+43 行)、pages/index/index.wxml- 首页 Banner 广告块被注释掉(至今仍是注释状态,不展示)
补录说明:本 Release 于 2026-09-12 补建(此前仓库只有 tag、从未建过 Release),
GitHub 显示的发布时间是补录时间。上面的条目是作者当年写在README.md「版本更新日志」里的原文(该节 2026-09-14 已移除,原文保留在此),
「后续更正」是 2026-09 复核代码时补的。
2.3.0
2.3.0
本文件是 GitHub Release v2.3.0 的正文来源。
改这里,然后用gh release edit v2.3.0 --notes-file doc/releases/2.3.0.md同步过去。
原 README「版本更新日志」原文(该节 2026-09-14 已移除,原文保留在此)
- 开通广告,给每个页面加入 Banner 广告
- 查询 ip 的 key 更新,在 ip138
- 检查更新,如有更新,自动更新。强制更新
- 给每个页面添加转发按钮
代码层面
- 新增
sitemap.json - 各页面 wxml 加入
<ad unit-id="adunit-499feca899514736"> pages/index/index.js加入checkAppUpdate()(wx.getUpdateManager())project.config.json相应调整
后续更正(2026-09 复核)
- 「给每个页面添加转发按钮」实际未生效:全仓库没有任何页面实现
onShareAppMessage,
按微信规则右上角不会出现「转发」;20 处wx.showShareMenu()都是空操作,
且都没传menus,所以「分享到朋友圈」也不可用 - 强制更新有 3 处缺陷(
onUpdateReady注册时机、无onUpdateFailed兜底、只挂首页onShow
导致非首页入口不检查),在 2.4.0 修复 - ip138 查 IP 与静默读剪贴板的采集在 2.4.0 移除;两个硬编码 token 已随公开仓库泄露,需作废
补录说明:本 Release 于 2026-09-12 补建(此前仓库只有 tag、从未建过 Release),
GitHub 显示的发布时间是补录时间。上面的条目是作者当年写在README.md「版本更新日志」里的原文(该节 2026-09-14 已移除,原文保留在此),
「后续更正」是 2026-09 复核代码时补的。
2.2.3
2.2.3
本文件是 GitHub Release v2.2.3 的正文来源。
改这里,然后用gh release edit v2.2.3 --notes-file doc/releases/2.2.3.md同步过去。
新增
pages/setting/newPushMission/—— 新增推送任务页(4 个文件,334 行 js)libs/mta_analysis.js—— 腾讯 MTA 统计
后续:截至 2.4.0,
pushHome的「新增推送任务」按钮里仍有一句裸return+ toast「开发中」,
所以这个页面实际进不去(是否接通待定,因为它依赖的Rule表没有任何写入方);
MTA 统计在 2.3.3 从代码里移除,死文件本身留到 2.4.0 才删。
补录说明:本 Release 于 2026-09-12 补建 —— 此前仓库只有 tag、从未建过任何 Release。
提交日期均为 2021-05-28(这段历史是一次性导入的),各版本真实发布日期已无法还原;
GitHub 显示的发布时间是补录时间。说明内容是事后从提交 diff 整理的,非当时的发布说明。
2.2.2
2.2.2
本文件是 GitHub Release v2.2.2 的正文来源。
改这里,然后用gh release edit v2.2.2 --notes-file doc/releases/2.2.2.md同步过去。
五班三倒新增「跳转到指定日期」
pages/wbsd/worker/与pages/wbsd/director/各加了<picker mode="date">与bindDateChange
后续:这个日期跳转至今只有五班三倒和经警队(2.4.0 新增)两组页面有,
四班四倒与三班半倒的 4 个页面没有;doc/发布前检查单.md的自测项已按实际情况更正。
补录说明:本 Release 于 2026-09-12 补建 —— 此前仓库只有 tag、从未建过任何 Release。
提交日期均为 2021-05-28(这段历史是一次性导入的),各版本真实发布日期已无法还原;
GitHub 显示的发布时间是补录时间。说明内容是事后从提交 diff 整理的,非当时的发布说明。
2.2.1
2.2.1
本文件是 GitHub Release v2.2.1 的正文来源。
改这里,然后用gh release edit v2.2.1 --notes-file doc/releases/2.2.1.md同步过去。
推送页改造
pushHome增加「邮件剩余:N 封」「短信剩余:N 条」的显示- 「设 置 推 送」按钮改为「新增推送任务」,并加了「已有推送任务:」占位(列表本身一直没做出来)
- 修掉
bindchange="smsSwitch "的尾部空格笔误 —— 事件名带空格时绑定是失效的,短信开关此前点了没反应 - 首页与设置页的版本号文案更新到 2.2.1
diy/accountHome/home/importRuleByKey/myRuleHome/updateMail/updatePhone均有调整
补录说明:本 Release 于 2026-09-12 补建 —— 此前仓库只有 tag、从未建过任何 Release。
提交日期均为 2021-05-28(这段历史是一次性导入的),各版本真实发布日期已无法还原;
GitHub 显示的发布时间是补录时间。说明内容是事后从提交 diff 整理的,非当时的发布说明。