feat(收口): 补齐 8 月迭代缺口并同步 Spec 与证据链
Some checks failed
构建并部署到测试环境(无 SSH) / build-and-deploy (push) Has been cancelled
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:
@@ -65,7 +65,7 @@ func (w *PriorityEventWriter) AppendPriorityRequested(ctx context.Context, tx *g
|
||||
if event.ResourceType != constants.AssetTypeIotCard && event.ResourceType != constants.AssetTypeDevice {
|
||||
return errors.New(errors.CodeInvalidParam, "优先轮询事件资源类型不受支持")
|
||||
}
|
||||
// 人工入队不经事件通道:manual_trigger 由 internal/service/polling/priority_enqueue_service.go 直写事实表,
|
||||
// 人工入队不经事件通道:manual_trigger 由 internal/service/polling/priority_manual_service.go 直写事实表,
|
||||
// 事件通道没有操作者,无法满足事实表 CHECK (trigger_type <> 'manual_trigger' OR manual_operator_id > 0)。
|
||||
// 权威约束在事实表 CHECK,这里只是把「DB 23514 → 整个投递事务回滚」提前为可定位的参数错误,
|
||||
// 避免调用方业务事务被数据库层失败牵连回滚。
|
||||
@@ -170,9 +170,14 @@ func (c *PriorityRequestedConsumer) Consume(ctx context.Context, envelope outbox
|
||||
return lookupErr
|
||||
}
|
||||
store := c.store.WithTx(tx)
|
||||
assetSnapshots, assetErr := store.AssetSnapshots(ctx, cardIDs)
|
||||
if assetErr != nil {
|
||||
return assetErr
|
||||
}
|
||||
createdCount, mergedCount = 0, 0
|
||||
for _, cardID := range cardIDs {
|
||||
for _, taskType := range taskTypes {
|
||||
asset := assetSnapshots[cardID]
|
||||
item := &model.PollingPriorityItem{
|
||||
CardID: cardID,
|
||||
TaskType: taskType,
|
||||
@@ -180,6 +185,10 @@ func (c *PriorityRequestedConsumer) Consume(ctx context.Context, envelope outbox
|
||||
SourceOrderID: optionalUintPointer(event.SourceOrderID),
|
||||
SourcePackageUsageID: optionalUintPointer(event.SourcePackageUsageID),
|
||||
ShopIDSnapshot: shopSnapshots[cardID],
|
||||
AssetType: asset.AssetType,
|
||||
AssetID: optionalUintPointer(asset.AssetID),
|
||||
DeviceNoSnapshot: asset.DeviceNo,
|
||||
AgentShopIDSnapshot: asset.AgentShopID,
|
||||
LastTriggeredAt: event.OccurredAt,
|
||||
}
|
||||
created, insertErr := store.InsertOrMerge(ctx, item)
|
||||
|
||||
Reference in New Issue
Block a user