Files
break 863607639f
Some checks failed
构建并部署到测试环境(无 SSH) / build-and-deploy (push) Has been cancelled
归档
2026-09-20 10:46:34 +08:00

4.7 KiB
Raw Blame History

MODIFIED Requirements

Requirement: 运营弹窗实时匹配

系统 SHALL 允许超级管理员和平台用户管理全局运营弹窗的标题、内容、弹窗类型、有效期、启停、优先级、店铺/设备类型/卡类型范围、四种页面(首页、资产详情、套餐购买、资产钱包充值)、频率和一个可选受控操作。弹窗类型 MUST 为必填单选,取值范围为 套餐政策推广通用公告;创建 MUST 提供该字段,更新按既有部分更新语义(未传时保持原值),一经传入 MUST 按同一取值域校验。类型变更而请求未显式传优先级时,该配置的显式优先级 MUST 保持不变(类型缺省优先级只在创建路径生效,类别序仍保证 套餐政策推广 优先于 通用公告。范围同一维度多选为任一匹配未配置范围即全量已配置范围而当前资产在该维度没有可判定值时该配置不命中。H5 请求必须携带当前页面资产标识。操作仅可为套餐购买或资产钱包充值,不得配置任意 URL。

候选排序 SHALL 先按有效优先级类别再按显式优先级:风险换卡提醒高于全部运营弹窗;运营弹窗内 套餐政策推广 MUST 高于 通用公告;同一类别内按显式优先级降序、相同优先级取最近更新时间最新。类别顺序 MUST 表达为显式的类别排序MUST NOT 依赖类型取值的字典序(否则「通用公告」会排在「套餐政策推广」之前,与本条相反)。显式优先级缺省时 MUST 取该类型的默认值。既有配置在本次上线时 MUST 被赋予一个确定类型(默认 通用公告),其显式优先级取值与同类别内相对顺序 MUST 保持不变。

运营弹窗仅在客户请求候选时实时匹配并创建或复用通知;每客户每配置支持仅一次或每天一次。候选只返回优先级最高一条,同优先级取最近更新时间最新,启停操作同样更新最近更新时间。配置修改形成新版本,既有通知保留原快照且不被改写;修改后的仅一次配置可向原命中客户重新投放。配置到期或停用停止新投放,历史通知在通知中心展示 90 天。

后台运营弹窗配置列表与详情响应 SHALL 在保留创建人、最近更新人账号 ID 的同时,返回对应账号名称。账号已软删除时 MUST 继续返回该账号的用户名;账号记录确实不存在时名称 MUST 为空字符串。名称补充失败时接口 MUST 返回稳定错误,不得以空名称伪装查询成功。

Scenario: 风险与运营候选同时命中

  • WHEN 当前资产同时满足风险换卡和多个运营弹窗条件
  • THEN 系统仅返回风险换卡候选,并保持通知未读

Scenario: 优先级与最近更新排序

  • WHEN 多条同类型运营配置同时命中且优先级相同
  • THEN 系统只返回最近更新时间最新的一条

Scenario: 推广优先于公告

  • GIVEN 一条 套餐政策推广 配置与一条 通用公告 配置同时命中,且公告配置的显式优先级更高
  • WHEN 客户请求候选
  • THEN 系统返回 套餐政策推广 配置,类型类别优先于显式优先级

Scenario: 既有配置类型补齐

  • GIVEN 一条本次上线前创建的运营配置
  • WHEN 上线迁移完成
  • THEN 该配置具有确定类型(默认 通用公告)且其显式优先级与同类别内顺序不变

Scenario: 独立卡的设备类型维度

  • WHEN 命中的运营配置配置了设备类型范围,但当前资产是未绑定设备的独立卡
  • THEN 系统不命中该配置

Scenario: 配置修改后重新投放

  • WHEN 已按仅一次频率向客户投放过的配置被修改
  • THEN 配置版本递增,既有通知的内容与快照保持不变,该客户可再次命中一次

Scenario: 到期或停用

  • WHEN 配置已到期或被停用
  • THEN 系统停止新投放,既有通知在展示期内仍可见

Scenario: 配置列表返回账号名称

  • WHEN 平台管理账号查询运营弹窗配置列表
  • THEN 每条配置同时返回创建人账号 ID 与名称、最近更新人账号 ID 与名称

Scenario: 配置详情返回已删除账号名称

  • GIVEN 配置的创建人或最近更新人账号已被软删除
  • WHEN 平台管理账号查询该运营弹窗配置详情
  • THEN 响应保留账号 ID并返回该已删除账号的用户名

Scenario: 关联账号记录不存在

  • GIVEN 配置关联的创建人或最近更新人账号记录确实不存在
  • WHEN 平台管理账号查询运营弹窗配置列表或详情
  • THEN 响应保留账号 ID对应账号名称为空字符串