LIANER后端问题清单 · 筛选审查附录PDF
LIANER FITMOMENTS · ENGINEERING REVIEW
评审附录

后端问题清单

后台筛选审查时顺带扫出、但不属于「筛选正确」范围的后端问题。本次不发布,逐条待定。

适用后端研发 · 产品 · 运营负责人
来源2026-09-24 新后台筛选/字段审查
版本v1.0 · 2026-09-24
练二一下,好状态。
练二健身 · 研发中心 hellolianer.com
01
Scope

范围与结论

筛选审查只管「后台的筛选项、搜索项、列表和导出字段是否正确」。审查过程中顺带看到的其他后端问题,全部拆出来放在这里。

筛选审查 扫出的全部后端改动 fix/filter-review-scoped 只含筛选/搜索/字段 · 已上 test2 park/review-extras-20260924 本文档的问题 · 不发布,待决策
改动按范围拆成两个分支(lianer-back)
等级含义
高会改错业务数据或资金/次数,且现网可触发
中数据口径错、记录错或体验问题,影响有限
低废功能、运维注意事项,或目前现网无实际影响
说明

「已写修复」指代码已在停放分支里写好并编译通过,但没有上 test2 或生产。决定要修的条目,需要单独开分支、单独验证、单独发布。

02
Write paths

会改错数据的写操作

这一组都是后台的「导入 / 保存 / 作废」类操作,出错会直接改坏会员权益或配置。

高团课权益作废:缺参数时可能整店作废

接口:后台赠送 / 作废团课权益 · 已写修复:参数为空直接拦截
  • 作废接口按「用户 + 门店」拼条件。只要其中一个参数没传,这个条件就会缺失,结果可能把整个门店或某个用户所有门店的团课权益都置为无效。
  • 赠送接口在参数缺失或用户不存在时会抛空指针,前端只看到「操作失败」;赠送时也没写门店名。
  • 生产目前团课权益约 9.5 万条,作废记录为 0,说明还没出过事,但接口本身没有防护。

高私教批量排课(Excel 导入)

入口:后台 → 私教排课 → 批量导入 · 已写修复:整批预校验 + 事务 + 按门店匹配
  • 门店选项没生效:页面上选的「课程所属门店」没传到匹配逻辑,会扣到学员在别的门店的权益。
  • 边检查边扣次:中途某行出错(如日期格式不对、课程名为空导致空指针)时,前面已导入的行已经扣了次数,不会回滚,只导进去一半。
  • 一行失败,后面都不检查:检查用一个全批共用的标志位,第一行失败后,后续行不再校验。
  • 同批重复扣同一张次卡:多行扣同一张卡时不累计判断,剩 1 次也能排 3 节。
待决策

修复后的规则是「任何一行不通过,整批都不导入」,需要运营确认能接受。另外老后台遇到整批拒绝只提示「操作失败」,看不到哪一行错;新后台能显示逐行原因。

中批量导入权益:该拦的没拦

入口:后台 → 批量导入权益 · 已写修复:逐行校验
  • 手机号未注册的行没有算作失败,导入结果看起来全成功。
  • 场地卡可以导入已过期或开始时间晚于结束时间的数据。
  • 门店为空的行没有拦截。

中商品购买勾选项:删光的分类删不掉

入口:后台 → 商品购买勾选项(默认 / 套餐 / 课程 / 会员卡 4 个分类)
  • 保存时只删除「本次提交里出现过的分类」。某个分类的条款全部删掉再保存,这个分类的旧条款还留在库里,会员下单时仍会看到。
注意

停放分支里的修复是「4 个分类全部按提交内容覆盖」。它有副作用:如果页面某个分类加载失败、显示为空,这时保存会把线上条款清空。建议改成只覆盖本次提交的分类 + 加载失败时禁止保存,再发布。

03
Data

数据与口径问题

不会立刻改坏数据,但会让记录或展示不准。

中店管家打用户标签会清空用户渠道

接口:店管家 / ground-manager「设置用户标签」 · 已随筛选修复发布到 test2
  • 用户表查询的公共字段列表漏了「渠道」列。打标签时先读再整行写回,渠道就被写成空。
  • 补上这一列属于「列表字段正确」,已包含在筛选修复里,修好后不会再清空。
  • 历史数据不会自动恢复:生产目前渠道为空的用户有 15,615 个,其中多少是被这个问题清空的无法区分。

中已结束的活动仍在上架

已写修复:打开后台活动列表时自动下架过期活动
  • 活动过了结束时间不会自动下架。生产目前只有 1 条:id=35「练二健身-疯狂星期二」,8 月 31 日已结束。
建议

停放的修复是在「查询列表」的接口里顺带写库,不够干净。建议改成每天跑一次的定时任务,或者小程序端按结束时间过滤。下架 id=35 需要运营确认。

低礼品卡购买记录的渠道值写错

已写修复:渠道值 2 → 6
  • 团体礼品卡兑换生成的购买记录,渠道写成了 2(普通渠道),应为 6(团体礼品卡),按渠道统计时会混在一起。

低工资加项的「已发放」状态更新不上未修

  • 结算时用 6 位年月(yyyyMM)去匹配工资加项,但库里存的是 8 位日期(yyyyMMdd),永远匹配不上,状态不会变成已发放。生产目前工资加项只有 1 条,实际影响很小。
04
Legacy & Ops

废功能与运维

没有业务影响或影响在运维层面,但发版、排障时需要知道。

低旧版教练月结是废功能,但定时任务还在跑

  • 旧版月结(教练月结表、门店支出表、店长提点)已没有任何展示入口:后台菜单「帐单结算(已废弃)」已停用,新后台标为下线页面,教练端对应页面没有注册,店管家、ground-manager、会员小程序都没有调用。现行结算走 lianer-settlement。
  • 计算本身有错:店长提点按门店全部历史月份累计计算,并会改写任意一个月的店长记录;门店支出按月过滤无效;单次课时费取成了时长课时费。
  • 结论:历史错数不重算。生产 xxl-job 里「月初结算」「月初 2 号店长收益」两个任务仍开启,每月还在写这张没人看的表,建议停用;「门店支出汇总」任务在生产没有注册。

中后台账号列表接口下发了敏感字段

  • 后台账号列表接口会把不应给前端的敏感字段一起返回。已写修复,但需要先确认老后台「编辑管理员」表单不依赖这个字段,否则保存可能出问题。细节不在公开文档展开。

低生产网关不会自动注册接口

  • 测试环境发完新接口直接可用;生产的 ShenYu 网关不会自动注册新路径,也不会自动更新已有接口的入参类型,发布后需要在网关后台手工配置,否则调用报错。
  • 因此:凡是新增后台接口或改接口入参类型的需求,排期时要算上网关配置这一步。本次团课类型筛选就因此改成了前端本地筛选。

低两个接口并发时偶发超时

  • 「门店教练树」和「课程批次」两个接口在并发请求时偶发超过网关 3 秒超时,返回 500。本次没有改动它们,属于已有的性能问题。
05
Decisions

待决策清单

每条修不修、怎么修,需要对应的人拍板。确定要修的,单独开分支发布。

问题需要确认
高团课权益作废建议直接修(参数拦截,无业务规则变化)
高批量排课导入运营:能否接受「一行错整批不导入」
中批量导入权益运营:未注册手机号、过期场地卡是否一律拦截
中购买勾选项研发:按「只覆盖提交的分类 + 加载失败禁止保存」改完再发
中过期活动下架运营:id=35 能否下架;研发:改为定时任务
中用户渠道被清空运营:15,615 个空渠道用户是否要尝试恢复
中账号列表敏感字段研发:确认老后台编辑表单后发布
低旧版月结定时任务运维:在 xxl-job 停用两个任务
低礼品卡渠道值 / 工资状态研发:顺手修,优先级低
↑