Files
luo 8faa2ea2ef
All checks were successful
构建并部署前端到测试环境 / build-and-deploy (push) Successful in 8m8s
feat: 预计最终到期时间展示
2026-07-22 16:31:01 +08:00

3.0 KiB

ADDED Requirements

Requirement: Asset Estimated Final Expiry Contract

The admin asset information integration SHALL preserve estimated_final_expires_at, days_until_final_expiry, expiry_estimate_status, and is_expiring returned by GET /api/admin/assets/resolve/{identifier}.

Scenario: Preserve an exact final expiry estimate

  • GIVEN 用户查询后台资产详情
  • WHEN GET /api/admin/assets/resolve/{identifier} returns expiry_estimate_status=exact
  • THEN 前端状态 MUST preserve estimated_final_expires_at as string | null
  • AND 前端状态 MUST preserve days_until_final_expiry as number | null
  • AND 前端状态 MUST preserve is_expiring as a boolean

Scenario: Preserve an unavailable final expiry estimate

  • GIVEN 用户查询后台资产详情
  • WHEN 接口返回待激活或其他不可预计的 expiry_estimate_status
  • THEN 前端状态 MUST preserve expiry_estimate_status
  • AND 前端 MUST NOT derive estimated_final_expires_at from current-package or package-detail fields

Requirement: Asset Estimated Final Expiry Display

The admin asset information view SHALL display one asset-level field labeled 预计套餐到期时间 for the current primary package and all queued primary packages, without replacing individual package expiry dates in package details.

Scenario: Display an exact final expiry date

  • GIVEN 资产详情返回 expiry_estimate_status=exact
  • AND estimated_final_expires_at has a value
  • WHEN 页面渲染卡资产或设备资产基础信息
  • THEN 页面 MUST display 预计套餐到期时间
  • AND 页面 MUST format and display estimated_final_expires_at

Scenario: Display activation-pending final expiry

  • GIVEN 资产详情返回等待激活等不可预计的 expiry_estimate_status
  • WHEN 页面渲染卡资产或设备资产基础信息
  • THEN 预计套餐到期时间 MUST display 待激活后起算
  • AND 页面 MUST NOT display a fabricated date

Scenario: Display no-package placeholder

  • GIVEN 资产没有当前或排队主套餐
  • AND estimated_final_expires_at is null or absent
  • WHEN 页面渲染资产基础信息
  • THEN 预计套餐到期时间 MUST display a stable placeholder
  • AND 页面 MUST NOT substitute the current package detail expiry date

Scenario: Highlight backend-designated expiring asset

  • GIVEN 资产详情返回 is_expiring=true
  • WHEN 页面渲染 预计套餐到期时间
  • THEN 页面 MUST apply the expiring visual treatment using days_until_final_expiry
  • AND 页面 MUST NOT derive whether the asset is expiring from a locally calculated date difference

Scenario: Preserve package detail expiry semantics

  • GIVEN 用户查看资产详情中的套餐明细
  • WHEN 页面渲染单个套餐的到期时间
  • THEN 页面 MUST continue to display that package's own expiry field in the package detail context
  • AND 页面 MUST NOT replace it with estimated_final_expires_at