Skip to content

Releases: makewheels/shiftcheck-wechat-mini-program

2.5.0

Choose a tag to compare

@makewheels makewheels released this 15 Sep 13:40
5adfbc3

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

Choose a tag to compare

@makewheels makewheels released this 11 Sep 16:13

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/

升级到这一版还需要在微信后台做的事

见 doc/发布前检查单.md:

  • 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

Choose a tag to compare

@makewheels makewheels released this 11 Sep 16:52

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

Choose a tag to compare

@makewheels makewheels released this 11 Sep 16:52

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,修复leancloud
  • b555f77 test
  • 8fe2478 Remdme-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

Choose a tag to compare

@makewheels makewheels released this 11 Sep 16:52

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

Choose a tag to compare

@makewheels makewheels released this 11 Sep 16:52

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

Choose a tag to compare

@makewheels makewheels released this 11 Sep 16:52

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

Choose a tag to compare

@makewheels makewheels released this 11 Sep 16:52

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

Choose a tag to compare

@makewheels makewheels released this 11 Sep 16:52

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

Choose a tag to compare

@makewheels makewheels released this 11 Sep 16:51

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 整理的,非当时的发布说明。