becomer
|
f23ab1a261
|
v1.2.39 补充:MFA access token 服务端校验宽限——存量已签发 token 无需重新登录即可平滑过渡到 2 小时——已签发的 JWT 因签名保护无法原地修改,且 MFA 通道 access/refresh 同 TTL、刷新窗口实际不存在(refresh 与 access 同时过期,前端又仅在 401 时被动刷新),存量用户(如杨蕊宁)原本只能重新登录换发新 token;现 ValidateToken 对已过期的 MFA access token(issuer=cpdaily-new 且携带 iat)按「签发时间 + 当前 MfaAccessExpire」再放行一次,配置调大后存量 1h token 自动延用至 2 小时窗口;refresh 不享受宽限(严格按自身 exp 校验),避免出现刷新窗口导致会话被滑动静默续期、违背 MFA 短会话设计。新增 jwt_test.go 覆盖 7 个场景:宽限内放行(存量 1h token 过期 30 分钟)、超 2h 拒绝、refresh 拒绝、非 MFA 拒绝、正常有效期放行、错误签名拒绝、缺 iat 拒绝。全部测试与 go vet 通过
ci/woodpecker/tag/build Pipeline was successful
v1.2.39
|
2026-09-13 18:28:16 +08:00 |
|
becomer
|
84a602ae3b
|
v1.2.39:MFA 通道短期 JWT 有效期从 1 小时调整为 2 小时——MFA 学校(如云南大学)第三方会话无法自动续期,token 需与第三方 Cookie 有效期对齐;实测 whit 学校 MOD_AUTH_CAS cookie 签发后超过 1.5 小时仍有效(校验接口返回 errCode=0),说明第三方会话寿命大于 1 小时,故将 MFA 短期 token 放宽到 2 小时。新增独立配置项 mfaAccessExpire(默认 7200 秒,未配置时 Load 自动采用,服务器部署新版本无需修改配置文件即生效),不再复用普通登录的 accessExpire(仍为 1 小时),MFA 专属调整不影响常规登录链路;登录签发(finalizeLogin)与刷新重签(RefreshTokens 的 MFA 分支)同步改用新配置。注意:MFA 通道 access/refresh 同 TTL(现 2 小时),已签发的旧 token 无法原地延长,需重新登录后生效
|
2026-09-13 18:22:49 +08:00 |
|
becomer
|
35a2f1e432
|
v1.2.38:修复云南大学 CAS 登录 MFA 流程被 302 踢回登录页的两个根因——① simpleCookieJar 此前按 cookie 名处理删除指令,而云大 CAS 先发 CASTGC=TGT-...(Path=/authserver)再发删除指令 CASTGC=; Max-Age=0; path=/authserver/(尾部多一斜杠,Path 不匹配),浏览器与标准库 jar 按 RFC 6265 精确匹配作用域不会删除 TGT,按名删除把有效 TGT 一并误删,导致 reAuthLoginView.do 因检查不到 SSO 会话而 302 踢回登录页、MFA 页面无法渲染;现改为跳过删除指令与空值 cookie(不入库也不删除,同时避免发送空值 CASTGC 的历史问题),同名残留会在下次登录时被 CAS 重新 Set-Cookie 覆盖,离线 diff 验证与标准库 jar 对 MFA URL 的输出一致;② resty 默认重定向策略在跨 host 请求时把 User-Agent 替换为 go-resty/2.x(redirect.go checkHostAndAddHeaders),而 wisedu 定制 CAS 按请求 UA 分流渲染移动端/PC 模板,campusphere 网关跳转 ids.ynu.edu.cn 必然跨 host,UA 被替换后 CAS 渲染 PC 模板(25824 字节)导致 MFA 流程校验失败,现自定义 RedirectPolicy 在跨 host 重定向时保留原 UA,移动端模板(14283 字节)正常渲染。云大真实账号端到端验证通过:登录页移动模板 → POST 302 MFA → reAuthLoginView.do 200(29730 字节)→ reAuthType=3(短信通道)解析成功 → dynamicCodeByReauth.do 发码返回 success(短信实发至用户手机)
ci/woodpecker/tag/build Pipeline was successful
v1.2.38
|
2026-09-13 17:59:19 +08:00 |
|
becomer
|
98689f68f4
|
v1.2.37:修复 MFA 通道登录丢失邀请码导致邀请奖励不生效的问题——v1.2.35 抽取 finalizeLogin 公共函数时,MFAVerify 调用传了空邀请码且 Redis 暂存的 mfaSession 未保存 InviteCode,导致经 MFA 验证码流程注册的新用户不建立邀请关系、不发放邀请奖励;现 startMFALogin 暂存会话时一并保存登录请求中的 inviteCode,验证成功注册时正常传入 findOrCreateUser,与普通登录通道行为完全一致
ci/woodpecker/tag/build Pipeline was successful
v1.2.37
|
2026-09-12 14:56:04 +08:00 |
|
becomer
|
3632cb642e
|
v1.2.36:MFA 触发响应改为 HTTP 200 + 专用业务码,修复前端误弹「登录失败」弹窗的问题——登录触发多因子认证时不再返回 401(会被前端 catch 走登录失败 Dialog 路径),改为 code 4281(需MFA,data 含 mfaToken/expiresIn);验证码提交失败区分 code 4282(验证码错误可重试,弹窗保留清空重输)与 code 4283(验证会话过期/失效,关闭弹窗引导重新登录),cpdaily 包新增 ErrMFASessionExpired 哨兵错误供 errors.Is 判定;前端登录成功分支按 code 4281 弹出独立的多因子认证验证码弹窗,MFA 提交按 0/4282/4283 精确分支处理,与普通登录错误提示彻底解耦
ci/woodpecker/tag/build Pipeline was successful
v1.2.36
|
2026-09-12 14:42:50 +08:00 |
|
becomer
|
47401e7388
|
v1.2.35:多因子认证(MFA)登录全流程支持——CAS 账密登录 302 到 reAuthCheck/reAuthLoginView.do?isMultifactor=true 时不再误判为登录成功,自动解析 MFA 页面参数(reAuthType/service/reAuthUserId)并调用 dynamicCode/getDynamicCodeByReauth.do 自动发送验证码;CAS 会话按域暂存 Redis(mfa_session:<token>,10 分钟 TTL,密码 AES 加密),新增 POST /api/auth/login/mfa 接口提交验证码(reAuthSubmit.do)→ CAS 票据交换 → activateSession → 与普通登录一致的注册/更新流程;MFA 通道登录签发短期 JWT(access/refresh 均与第三方 Cookie 有效期对齐,默认 1 小时,Claims 携带 mfa 标记且刷新不延长会话),静默重登遇 MFA 学校返回明确提示需重新登录;前端登录页处理 needMFA 响应弹出多因子认证 Dialog(验证码输入/10 分钟倒计时/输错可重试),验证成功后进入正常登录态。已用待适配学校(合肥幼儿师范高等专科学校)真实账号端到端验证:发码→收码→提交→reAuth_success→用户注册成功→第三方接口可正常拉取用户信息
ci/woodpecker/tag/build Pipeline was successful
v1.2.35
|
2026-09-12 14:32:13 +08:00 |
|
becomer
|
c5fe95b3ec
|
v1.2.34:后台用户管理表格四列合并为两列——「学工号」「真实姓名」合并为「学工号/姓名」列(主行学工号 font-mono、副行姓名小灰字),「学校」「设备码」合并为「学校/设备码」列(主行学校名、副行脱敏设备码 mono 小字保留复制按钮),均采用与「最后登录」列一致的两行主副格式,列宽调整为 10%/12%,腾出的横向空间还给其余列;顺带提交打卡页收藏本站贴边窄竖条按钮的圆角微调(rounded-l-full 改 rounded-l-md,接近长方形观感)
ci/woodpecker/tag/build Pipeline was successful
v1.2.34
|
2026-09-12 13:16:05 +08:00 |
|
becomer
|
0f49e7b1da
|
v1.2.33:收藏本站贴边按钮修正为窄竖条——上一版把 writing-mode 加在按钮容器上导致 flex 主轴随竖排书写模式转为水平,图标被挤到右侧、整体过宽;现改为容器保持常规纵排、仅文字 span 用 writing-mode 竖排,效果为图标在上、竖排文字在下、贴屏幕右缘的窄条(宽约 28px),并按需求移除上下浮动跳动动画及相关 keyframes/降级样式
ci/woodpecker/tag/build Pipeline was successful
v1.2.33
|
2026-09-12 12:50:19 +08:00 |
|
becomer
|
95988c3ca9
|
v1.2.32:打卡页「收藏本站」悬浮气泡改为贴屏幕右缘竖排标签——全局引导入口上移后与原收藏气泡(right-3 bottom-20)位置重叠互相遮挡,收藏按钮改为 writing-mode 竖排、right-0 贴边、左侧圆角、位置抬高至引导按钮上方(bottom-32),两者横向纵向均错开互不遮挡,保留浮动跳动动画
ci/woodpecker/tag/build Pipeline was successful
v1.2.32
|
2026-09-12 12:47:56 +08:00 |
|
becomer
|
edd2b248e2
|
v1.2.31:新手引导第四步文案统一为「执行签到」并去掉「自动」二字,引导入口按钮提升为全局显示——标题改为「执行签到」,真实任务/示例卡空态/列表兜底三种说明与第四步 mock 提示中的「自动完成今天的签到」「自动完成每日签到」「开始今天的自动签到」分别改为「完成今天的签到」「完成每日签到」「开始今天的签到」;「忘记操作?再次查看引导」悬浮气泡从个人中心(ProfileView)移至移动端布局层(MobileLayout,含 guide-bob 浮动动画与 prefers-reduced-motion 降级),打卡/销假/个人中心所有页面恒定显示,引导展示期间自动隐藏,ProfileView 移除旧入口及 inject/Sparkles/样式残留
ci/woodpecker/tag/build Pipeline was successful
v1.2.31
|
2026-09-12 12:43:57 +08:00 |
|
becomer
|
985748a3d3
|
v1.2.30:新手引导第四步(执行任务自动签到)在用户无真实任务时补齐示例任务卡 mock——原第三步的示例卡机制扩展为第三/四步共用:第四步先高亮空态区并展示示例卡,随后定位轮询自动升级命中示例卡自身的「执行」按钮(data-guide 按步骤动态挂载,第三步不抢焦点),按钮加蓝色脉冲动画强调,气泡文案切换为「点示例卡片右侧的执行按钮即可开始今天的自动签到」;示例卡锚定改为空态区 rect(轮询持续校正),不随高亮框滑移错位,mock 判定用 guide-root 归属区分真实任务按钮避免乒乓循环;有真实任务时第四步仍高亮真实执行按钮,行为不变
ci/woodpecker/tag/build Pipeline was successful
v1.2.30
|
2026-09-12 12:37:01 +08:00 |
|
becomer
|
c0ea9ecd8f
|
v1.2.29:前端新增亮暗主题按时间自动切换与底部导航改版——利用 Tailwind v4 颜色工具类引用 --color-* 变量的特性,globals.css 在 .dark 作用域整体覆盖灰阶/彩色浅底/语义 token 调色板,全站 1000+ 处硬编码颜色类一次性适配暗色(深彩色与遮罩黑保持原值),蓝底彩底上的白字/半透明白元素用类名级规则恢复纯白;切换规则为浏览器系统时间 18:00–次日 06:00 暗色(useTheme.ts 立即校正+分钟级轮询自动切换,index.html 内联脚本首屏渲染前预设 .dark 防白闪,theme-color 同步状态栏色),纯自动无手动开关;底部导航「首页」改名「打卡」(CalendarCheck2 图标,路由 name 保持 home 零逻辑改动),新增「销假」tab(CalendarX2)与 /leave 可爱风占位页(🚧 弹跳+糖果漂浮装饰+马卡龙渐变+颜文字,暗色自动适配);绑定成功文案「即将进入首页」同步改为「即将进入打卡页」,布局内容区 bg-[#f5f5f5] 改语义类 bg-background
ci/woodpecker/tag/build Pipeline was successful
v1.2.29
|
2026-09-12 12:17:51 +08:00 |
|
becomer
|
e7e106c606
|
v1.2.28:验证码字体子集化——用 fonttools pyftsubset 从 Sour Gummy ExtraBold 提取仅含 0-9 的数字子集(验证码只需数字),嵌入体积从 58KB 降至 3.3KB,cmap 仅保留 U+0030-0039,渲染效果不变
ci/woodpecker/tag/build Pipeline was successful
v1.2.28
|
2026-09-12 10:44:28 +08:00 |
|
becomer
|
240e1226ef
|
v1.2.27:验证码全面改版为可爱风——弃用 7x9 像素点阵,嵌入 Sour Gummy ExtraBold 开源字体(OFL 授权,猫啃网)渲染数字,字符按字形包围盒精确居中并随机旋转 ±10°,白描边贴纸效果;画布 180x60 且代码级保障最小尺寸,四周统一 15px 留白;干扰线改为绘制在数字上层的贯穿式弯曲斜线(强制大倾角、四向随机、线身带 1~2 个正弦拱似抛物线/波浪),专用冷色色池避开红粉;马卡龙背景+白色气泡+糖珠点缀;引入 golang.org/x/image 字体渲染依赖
ci/woodpecker/tag/build Pipeline was successful
v1.2.27
|
2026-09-12 10:41:00 +08:00 |
|
becomer
|
643e706335
|
v1.2.26:记录用户登录 IP——认证中间件当天首次更新登录时间时同步写入客户端真实 IP(优先 nginx 转发的 X-Real-IP,其次 X-Forwarded-For 首段,兜底 RemoteAddr),真实登录接口同样记录;后台用户列表新增「最后登录」列(IP+时间)、详情弹窗新增最后登录IP展示
ci/woodpecker/tag/build Pipeline was successful
v1.2.26
|
2026-09-11 23:27:59 +08:00 |
|
becomer
|
61a8d2b3fb
|
v1.2.25:首页新增「收藏本站」右侧悬浮气泡按钮(与个人中心引导气泡同款交互),点击复制本站网址到剪贴板并按设备类型展示手动添加步骤——手机浏览器通过菜单添加书签/收藏或添加到主屏幕,电脑浏览器 Ctrl+D
ci/woodpecker/tag/build Pipeline was successful
v1.2.25
|
2026-09-11 22:29:44 +08:00 |
|
becomer
|
6532025cc0
|
v1.2.24:已打卡任务的绿色对勾改为可点击,点击后弹窗确认"您当前已经打卡,是否再次打卡",确认后以与正常执行完全相同的规则(表单校验、次数检测、限流、设备校验)再次打卡;执行中显示加载动画,失败自动回到可执行状态
ci/woodpecker/tag/build Pipeline was successful
v1.2.24
|
2026-09-11 22:20:28 +08:00 |
|
becomer
|
7a4507903f
|
v1.2.23:修复任务状态两个问题——1)跨天状态不重置:昨日成功后今天仍显示绿色对勾且无法执行,改为列表查询时按当天成功日志惰性重置为待执行;2)打卡完成后列表仍显示未签到/不刷新:成功后本地乐观更新+延迟校正刷新,显示以本地当天成功优先,并增加切回页面自动刷新
ci/woodpecker/tag/build Pipeline was successful
v1.2.23
|
2026-09-11 22:16:23 +08:00 |
|
becomer
|
a95c843bf7
|
v1.2.22:个人中心取消底部真实姓名/学号展示行,避免明文暴露敏感信息;新增右侧气泡跳动按钮「忘记操作?再次查看引导」,点击重播新手引导
ci/woodpecker/tag/build Pipeline was successful
v1.2.22
|
2026-09-11 19:51:42 +08:00 |
|
becomer
|
764bae23fc
|
v1.2.21:认证中间件补当天登录标记——token 长期有效不重新登录时,当天首次请求条件更新 last_login_at,修正后台当天登录人数统计
ci/woodpecker/tag/build Pipeline was successful
v1.2.21
|
2026-09-11 14:24:40 +08:00 |
|
becomer
|
1f4d601ffa
|
v1.2.20:后台用户管理列表中当天已登录用户的整行背景色显示为浅绿色
ci/woodpecker/tag/build Pipeline was successful
v1.2.20
|
2026-09-10 20:40:21 +08:00 |
|
becomer
|
5de7852786
|
v1.2.19:修复签到图片直传OBS被拒(改用接口返回formData字段集);执行时自动将base64照片上传换正式URL;验证码创建/校验改multipart;表单必填项为空执行前拦截
ci/woodpecker/tag/build Pipeline was successful
v1.2.19
|
2026-09-10 18:06:10 +08:00 |
|
becomer
|
98631afdc5
|
v1.2.18:代理后台仅保留仪表盘、代理管理、CDK管理菜单,其余页面路由守卫拦截重定向回仪表盘
ci/woodpecker/tag/build Pipeline was successful
v1.2.18
|
2026-09-10 11:21:18 +08:00 |
|
becomer
|
bc4e739e09
|
v1.2.17:hfnu 切换为标准 IAP 登录(绕过学校 SSO 拒绝单点登录跳转);忘记密码提示改为打开学校官方登录地址测试登录或找回密码
ci/woodpecker/tag/build Pipeline was successful
v1.2.17
|
2026-09-10 11:14:37 +08:00 |
|
becomer
|
9bffdb7026
|
恢复 CI 触发逻辑:when 保持 event: tag + tag: v*(仅打 tag 触发)
ci/woodpecker/tag/build Pipeline was successful
v1.2.16
|
2026-09-09 23:48:14 +08:00 |
|
becomer
|
42c8b66a01
|
CI 修复:when 语法适配 Woodpecker 3.16;蓝绿部署入口切换到 jinrixiaoyuan.top
- when 改为 event: tag + ref: refs/tags/v*(tag: v* 为无效遗留键导致 pipeline 被过滤)
- 反代切换文件由已废弃的 xiaozhushou 站点改为 jinrixiaoyuan.top/proxy/root.conf(frps 公网链路)
- 移除首次部署初始化分支(站点已存在),未知端口时中止部署防误切
|
2026-09-09 23:44:04 +08:00 |
|
becomer
|
81b2942cad
|
v1.2.16:hfnu 专属登录适配;拒绝改为单条记录;修复拒绝按钮换行与真实 IP 获取
- 新增 login_hfnu.go:合肥师范学院老式 jasig CAS 专用登录(URL 重写 jsessionid + 强制验证码),识别学校端 SSO 跳转被拒故障并明确报错
- 拒绝待适配学校改为仅拒绝当前记录,邮件只通知该条记录联系邮箱,不再批量拒绝同校其他记录
- 管理页操作按钮加 whitespace-nowrap 修复换行
- TrustedProxies 增加 127.0.0.1,配合 frpc PROXY protocol 透传恢复真实客户端 IP
|
2026-09-09 23:11:41 +08:00 |
|
becomer
|
4b1dea3d3c
|
待适配学校支持拒绝操作:拒绝必填理由并邮件通知联系邮箱
ci/woodpecker/tag/build Pipeline was successful
- 新增管理端接口 POST /admin/pending-schools/:id/reject,拒绝理由必填(≤500字)
- 拒绝时该校全部待处理记录标记为 rejected 并保存理由
- 新增 NotifySchoolRejected 邮件模板,拒绝理由 HTML 转义后发送至该校全部联系邮箱
- 列表接口返回 rejectReason 并支持 status=rejected 筛选
- 管理页新增拒绝按钮(组级+行级)、拒绝理由弹窗、已拒绝状态标签与理由展示、已拒绝筛选
v1.2.15
|
2026-09-09 22:31:06 +08:00 |
|
becomer
|
0d665ad0fe
|
重构任务详情获取:执行时严格按任务名从当天列表实时匹配,移除全部兜底回退
ci/woodpecker/tag/build Pipeline was successful
- 执行链路新增 FetchTodayTaskDetail:仅用当天任务列表按任务名匹配未签实例,
wid 每次执行时实时获取;匹配失败直接报明确错误(未找到/今日已签),不再退回配置 wid
- 预览/历史预填充改用 GetTaskDetailByWid 纯 wid 查询,无隐式回退
- 删除 findLatestTaskInstance 与 fetchTaskDetail 的 allowFallback 递归回退逻辑
- RealTitle 直接取列表真实任务名,去掉二次匹配
v1.2.14
|
2026-09-08 23:12:29 +08:00 |
|
becomer
|
67d925bb91
|
refactor: 任务实例 wid 改为执行时实时获取,配置快照仅作兜底
ci/woodpecker/tag/build Pipeline was successful
- 任务执行入口优先按任务名从当天列表实时匹配未签到的实例,
循环任务跨天不再依赖配置时保存的 signWid/signInstanceWid 快照
- 月度列表中的历史漏签实例不再被误当作可提交目标
(历史实例提交会被今日校园判定"已结束")
- 当天列表无可用实例(无同名任务/接口异常)时退回配置 wid 兜底,
详情为空再按任务名匹配近期已签实例还原表单结构
v1.2.13
|
2026-09-08 22:59:29 +08:00 |
|
becomer
|
bf0e1656ab
|
fix: 循环签到/查寝任务自动切换到当日任务实例,修复"查寝已结束"
ci/woodpecker/tag/build Pipeline was successful
循环任务(如每日晚归寝打卡)每天生成新的 signInstanceWid,历史实例的
详情接口仍可返回数据,导致原有的"详情为空才回退"逻辑不触发,提交到
过期实例被今日校园判定为"查寝已结束"。
现在获取任务详情时,若当日列表中同名任务存在未签到的实例且与详情返回
的实例不一致,自动切换到当日实例后再填充表单提交。
v1.2.12
|
2026-09-08 22:51:03 +08:00 |
|
becomer
|
66d07781be
|
fix: 执行日志弹窗细节优化
ci/woodpecker/tag/build Pipeline was successful
- 时间列只显示 HH:MM:SS(日期由弹窗筛选决定)
- 状态徽标禁止换行
- 说明列显示完整错误信息,不再截断
v1.2.11
|
2026-09-08 22:41:17 +08:00 |
|
becomer
|
99c16652a7
|
feat: 后台用户管理新增 VIP 列
ci/woodpecker/tag/build Pipeline was successful
- 列表接口返回 vipStatus(active/expired/none)与 vipExpireAt
- 表格新增 VIP 列:有效显示金色徽标+到期日期,过期显示已过期,未开通显示非VIP
v1.2.10
|
2026-09-08 22:31:42 +08:00 |
|
becomer
|
cc4aa1c00e
|
feat: 后台当天执行总次数可点击查看执行日志明细
ci/woodpecker/tag/build Pipeline was successful
- 后端新增 GET /admin/task-logs 接口:按日期(默认当天)、成功/失败状态、
关键字(用户名/姓名/任务标题)筛选,联表 sys_user 返回用户与学校信息,分页返回
- 前端用户管理页「当天执行总次数」卡片改为可点击,弹出日志明细弹窗
- 弹窗支持日期切换(可查历史日期)、状态筛选、关键字搜索与分页浏览
v1.2.9
|
2026-09-08 22:12:41 +08:00 |
|
becomer
|
15eceea38a
|
docs: 随机设备码适用人群提示改为帮打卡导致频繁切换设备的用户
ci/woodpecker/tag/build Pipeline was successful
v1.2.8
|
2026-09-08 20:21:54 +08:00 |
|
becomer
|
a9dbc2661d
|
feat: 设备码绑定改为非强制 + 随机绑定入口
ci/woodpecker/tag/build Pipeline was successful
- 登录后不再强制跳转设备绑定页(MobileLayout 移除拦截)
- 新建签到任务时检测未绑定设备码,弹窗提示「请先在个人中心绑定设备码」并支持跳转
- 个人中心设备码栏新增「随机」按钮:随机生成 UUID 设备码直接绑定,
前端连续两次风险确认(随机后现有手机会提示频繁切换设备无法签到)
- 后端新增 POST /device/random-bind(登录态,随机 UUID v4 绑定,mobile_type=manual)
- 新手引导在「新建每日签到任务」前新增「先绑定设备码」步骤
v1.2.7
|
2026-09-08 20:15:24 +08:00 |
|
becomer
|
ebc94ec9a0
|
fix: 复制按钮与 toast 层级修复
ci/woodpecker/tag/build Pipeline was successful
- copyToClipboard 调整为先同步 execCommand(用户手势内最可靠),
Clipboard API 仅作异步兜底;修复移动端先 await Clipboard API 被拒后
手势丢失导致 execCommand 静默失败的问题(单行复制不生效)
- 单行复制成功也弹「已复制」toast,失败提示明确,不再无反馈
- toast 容器 z-50 提至 z-[100],不再被弹窗遮罩盖住
v1.2.6
|
2026-09-08 18:27:23 +08:00 |
|
becomer
|
98cf8666f6
|
feat: 新手引导 VIP 步骤移到最后;CDK 列表展示类型与额度
ci/woodpecker/tag/build Pipeline was successful
- 引导顺序调整为:领取次数 → 新建任务 → 执行任务 → 邀请好友 → VIP 会员
- CDK 列表「次数」列拆为「类型」(次数卡/VIP周卡/VIP月卡徽标)+「额度」(N 次 / N 天)
- CDKCode 类型补充 type/vipDays 字段(后端已输出)
v1.2.5
|
2026-09-08 17:51:34 +08:00 |
|
becomer
|
ff3593f057
|
fix: VIP 展示与复制按钮等 7 项体验修复
ci/woodpecker/tag/build Pipeline was successful
- VIP 徽标:修复 position 覆盖导致徽标挤变形头像,加 z-10 浮于头像上层
- VIP 用户「可签到次数」显示无限次
- VIP 兑换弹窗标题统一「续费 VIP」,去掉提示文案;按钮统一「续费 VIP」
- 新增 utils/clipboard:兼容 HTTP/移动端的复制(Clipboard API + execCommand 回退),
修复待适配学校密码复制、CDK 结果列表单个复制按钮不生效
- 新手引导新增一步:VIP 会员与普通签到次数的区别
v1.2.4
|
2026-09-08 13:25:13 +08:00 |
|
becomer
|
74422b1848
|
fix: VIP 卡默认价改为周卡 30 元 / 月卡 100 元(对齐单次扣费 6 元的定价逻辑)
ci/woodpecker/tag/build Pipeline was successful
v1.2.3
|
2026-09-08 12:40:20 +08:00 |
|
becomer
|
84f87cd168
|
feat: VIP CDK 改为周卡/月卡两档(7天/30天),价格分开配置
ci/woodpecker/tag/build Pipeline was successful
- 后端:vip_price_week(周卡,默认5元)/ vip_price_month(月卡,默认15元),
VIP CDK 仅支持 7/30 天,vip-info 返回双价格
- 后台:生成弹窗改为周卡/月卡选择,设置页拆分周卡/月卡售价两项
- 前台:开通按钮展示 周¥x · 月¥y 双价格
v1.2.2
|
2026-09-08 12:29:59 +08:00 |
|
becomer
|
386e9269bf
|
fix: VIP 价格设置前端兜底值与后端默认一致(15 元)
ci/woodpecker/tag/build Pipeline was successful
v1.2.1
|
2026-09-08 12:23:31 +08:00 |
|
becomer
|
17a71b1e2a
|
feat: 新增 VIP 功能(CDK 兑换开通、徽标展示、免扣次数、后台管理)
ci/woodpecker/tag/build Pipeline was successful
- 数据库:sys_user.vip_expire_at、cdk_codes type/vip_days、系统设置 vip_price
- 后端:CDK 生成支持 count/vip 类型(VIP 默认 30 天),兑换延长 VIP 到期时间,/cdk/vip-info 查询售价
- 任务执行:VIP 有效期内的用户跳过次数扣减
- 前台:个人中心 VIP 徽标(反光动画)+ 到期时间 + CDK 兑换弹窗
- 后台:CDK 生成弹窗类型选择 + 系统设置 VIP 月卡售价项
v1.2.0
|
2026-09-08 12:19:23 +08:00 |
|
becomer
|
1b4f029602
|
feat: 后台用户列表增加学校列;待适配学校表格小屏横向滚动
ci/woodpecker/tag/build Pipeline was successful
用户列表在真实姓名后新增学校列(数据接口本已返回 schoolName),
各列宽度相应调整;待适配学校账号表格外层增加 overflow-x-auto
并设置最小宽度,修复手机端表格溢出被裁剪无法查看完整信息的问题。
v1.1.47
|
2026-09-08 07:40:59 +08:00 |
|
becomer
|
2246752724
|
fix: 引导页手指改指右上角菜单,浏览器打开后自动跳回原页面
ci/woodpecker/tag/build Pipeline was successful
1. 手指图标按业界通用引导样式移至右上角,指向模拟的 ···
菜单按钮并带点动动画
2. 修复微信右上角"在浏览器打开"仍停留在引导页的问题:
- 引导页在正常浏览器 UA 下由守卫自动 replace 回 redirect 原地址
- 放行纯 QQ 浏览器 App(MQQBrowser),避免安卓微信唤起 QQ
浏览器后再次被拦造成死循环;仍拦微信与手机QQ内置浏览器
v1.1.46
|
2026-09-07 22:16:38 +08:00 |
|
becomer
|
a303782ab4
|
feat: 微信/QQ 内置浏览器访问时跳转浏览器打开引导页
ci/woodpecker/tag/build Pipeline was successful
检测 MicroMessenger/QQ/MQQBrowser UA 时路由守卫优先拦截,
跳转 /open-in-browser 引导页(手指动画指向"用浏览器打开"
按钮),点击复制原地址含全部 query;系统浏览器打开后自动
回到原页面。
v1.1.45
|
2026-09-07 22:07:02 +08:00 |
|
becomer
|
2cac0cdfee
|
fix: 查寝历史位置超出签到范围时自动改用最近签到点提交
ci/woodpecker/tag/build Pipeline was successful
学校老师频繁调整查寝组签到点(小半径500~1000m),历史记录位置
卡在边缘(如距边角修正1仅540m),配置一变即触发"位置不在签到
范围内"。提交前校验历史位置与 signPlaceSelected 各点距离,全部
出界时自动改用最近签到点坐标,位置在范围内则继续沿用历史记录。
v1.1.44
|
2026-09-07 21:51:18 +08:00 |
|
becomer
|
75d334680b
|
feat: 用户新建工单时邮件提醒管理员
ci/woodpecker/tag/build Pipeline was successful
复用待适配学校通知模式: GetAdminEmails + SendMailAsync, 邮件含标题/
用户/学校/内容摘要(HTML转义防注入, 500字截断), 仅新建工单触发。
v1.1.43
|
2026-09-06 18:37:53 +08:00 |
|
becomer
|
35fa5a6560
|
feat: 后台用户管理展示邀请人
ci/woodpecker/tag/build Pipeline was successful
- sys_user 新增 inviter_id 字段, 注册时记录邀请关系
- ListUsers/GetUserDetail 返回 inviterId/inviterName(姓名优先)
- 前端用户列表加邀请人列, 详情弹窗加邀请人卡片
- 历史数据通过系统公告(邀请奖励到账/新人注册奖励 同刻配对)回填
v1.1.42
|
2026-09-05 22:06:52 +08:00 |
|
becomer
|
dbd3c88d32
|
fix: 修复芜湖职业技术大学等CAS学校登录入口错选问题
ci/woodpecker/tag/build Pipeline was successful
getCasValidLoginUrl 原来按 AmpUrl/AmpUrl2 顺序取第一个可用URL, 部分学校
AmpUrl 是自研门户(ehall), 登录后cookie落在门户域, 与后续签到/查寝任务
接口所在campusphere网关域不匹配, 导致姓名同步失败且任务拉取返回302页面。
芜湖与安徽师范结构同构(网关+AmpUrl2), 修改为先取campusphere/wec网关入口。
v1.1.41
|
2026-09-04 21:33:05 +08:00 |
|