Files
junhong_cmp_fiber/.scratch/ur46-estimated-final-expiry/issues/02-iot-card-list-estimated-final-expiry.md
break f7c42252c0
All checks were successful
构建并部署到测试环境(无 SSH) / build-and-deploy (push) Successful in 10m55s
补齐UR46后端验收测试
2026-07-23 16:15:02 +09:00

2.4 KiB
Raw Blame History

02 — 卡列表批量展示预计最终到期

What to build: 运营人员和代理人员查看卡列表时,每张卡都能看到与资产详情完全一致的“预计套餐到期时间”、剩余自然日、推算状态和临期标记。列表按本页资产一次批量计算,不因新增字段产生逐卡查询,也不改变普通卡列表既有筛选、分页和排序。

Blocked by: .scratch/ur46-estimated-final-expiry/issues/01-admin-asset-detail-estimated-final-expiry.md — 01 — 后台资产详情统一展示预计最终到期

Status: done后端

  • 架构主通道为 Query复用 01 已建立的批量入口和纯计算核心,完整收口普通卡列表的预计最终到期投影,不迁移卡管理写操作、套餐生命周期或未触碰的列表逻辑。
  • 卡列表每项明确返回预计日期、剩余自然日、推算状态、状态中文名称和临期标记;非 exact 时 nullable 字段返回 null,查询错误遵循统一错误规范。
  • 一次批量加载本页全部卡的参与使用记录和必要历史套餐兜底数据,再按资产分组计算;不得逐卡调用单资产 Query 或产生其他 N+1 查询。
  • 同一张卡在列表批量入口和详情单资产入口得到完全一致的结果,包含历史快照回退、等待激活、异常数据和已过期负数天数场景。
  • Count 与 Fetch 保持原有相同过滤条件,新增投影不改变总数;普通卡列表继续使用原有稳定排序,不按预计日期或临期程度重新排序。
  • 后台和代理端卡列表统一显示“预计套餐到期时间”,四种状态分别展示精确日期、待激活后起算、—、数据异常;前端不叠加套餐时长或自行计算剩余天数。(前端任务,不纳入后端交付)
  • is_expiring=true 时仅应用约定临期颜色,不引入 UR#33 的独立临期列表、03 天置顶、Dashboard 或通知行为。(前端任务,不纳入后端交付)
  • HTTP 集成测试覆盖四种状态、nullable 字段、详情与列表一致性、原筛选和分页不变;使用每页 100 张卡的代表性数据验证固定查询数量并满足项目性能目标。
  • 前端验收普通卡列表排序不变、翻页稳定,当前套餐自身到期时间不再作为资产摘要中的第二个汇总到期字段。(前端任务,不纳入后端交付)