feat(收口): 补齐 8 月迭代缺口并同步 Spec 与证据链
Some checks failed
构建并部署到测试环境(无 SSH) / build-and-deploy (push) Has been cancelled

- 新增六对成对迁移 000232–000237:H5 弹窗类型、退款结算标识与申请人备注、优先轮询事实字段与两个新终态、通道阈值命中留痕、手机号最近解绑人、提现资格校验留痕
- 退款:原因必填与申请人备注、来源支付与渠道流水冻结、线下处理流水号补录审计、按订单查询可选退款方式、企微审批材料补齐且新增字段缺失映射即明确失败
- 优先轮询:人工关闭、有效期到期独立周期任务、失败与过期人工重触发、事实字段与异常重试查询、资产解析端点只读投影
- 通道阈值:命中事实同事务留痕与命中记录查询;员工账单:列表筛选与详情投影;商户池:列表投影与统计周期语义;H5:弹窗类型与类别排序
- 手机号:有效关联数量与最近解绑人、短信验证码失败次数限制;导出:佣金明细十五列与报表序号列
- 时间筛选:三处新增筛选纳入统一严格解析契约,员工账单产生时间参数改名
- 同步 12 份主 Spec 需求、两端点与异步任务证据链,门禁 context-health 与 OpenSpec 校验通过
This commit is contained in:
2026-09-18 15:34:29 +08:00
parent 5e78809b93
commit 5ed6b39deb
142 changed files with 7878 additions and 964 deletions

View File

@@ -68,6 +68,41 @@
- **WHEN** 生产者向公共可靠事件存储提交超过字段上限的事件标识或父事件标识
- **THEN** 系统在持久化边界返回明确的参数错误而不是数据库字段错误
### Requirement: 资产与卡详情的优先轮询状态投影
资产解析接口(`GET /api/admin/assets/resolve/{identifier}`)的卡与设备两个分支 SHALL 返回该资产或卡的优先轮询状态投影,至少包含:是否处于优先轮询中、最近触发场景、最近轮询结果、最近轮询时间与失败原因。本能力 MUST NOT 为投影新增独立端点,投影 MUST 落在该既有解析端点内。投影口径 MUST 与该卡在优先轮询事实表中的未完成活动项一致存在待执行或执行中的项时「是否处于优先轮询中」为真最近触发场景取最近触发类型最近轮询结果取最近一次执行结果执行成功、轮询失败、已关闭、已过期或处理中最近轮询时间取最近一次执行或触发时间失败原因取最近一次可安全展示的失败原因。无任何优先轮询事实时字段以否或空值返回MUST NOT 以普通轮询结果填充。
投影 MUST 只读:读取 MUST NOT 创建、合并、推进或出队任何优先轮询项MUST NOT 触发上游调用。投影 MUST 受既有资产数据权限约束,越权资产 MUST 按不存在处理MUST NOT 通过该字段泄露范围外资产。
#### Scenario: 资产存在未完成优先项
- **GIVEN** 某卡的资产存在待执行的优先轮询项
- **WHEN** 查询该资产详情
- **THEN** 响应返回处于优先轮询中为真、最近触发场景与最近轮询时间
#### Scenario: 优先项失败展示原因
- **GIVEN** 某卡的优先轮询项已因尝试次数达到上限进入失败终态
- **WHEN** 查询该卡详情
- **THEN** 响应返回最近轮询结果为轮询失败及可安全展示的失败原因
#### Scenario: 无优先轮询事实
- **WHEN** 查询一个从未进入优先轮询、也无历史优先项的资产详情
- **THEN** 各投影字段以否或空值返回,不使用普通轮询结果填充
#### Scenario: 读取不改变队列
- **GIVEN** 某卡处于优先轮询执行中
- **WHEN** 连续查询该资产详情
- **THEN** 优先轮询项状态、触发次数与尝试次数均不因读取而改变
#### Scenario: 越权资产
- **WHEN** 调用者查询其数据范围外资产的详情
- **THEN** 响应与资产不存在不可区分,不返回任何优先轮询状态
## 可达操作索引
本节只用于入口导航,不是行为 Requirement业务义务以上述 Requirements 为准。