Files
junhong_cmp_fiber/.scratch/ur49-device-batch-allocation-csv/issues/02-csv-batch-assign-shop.md
2026-07-23 13:03:30 +09:00

2.0 KiB
Raw Blame History

02 — 完成 CSV 批量分配代理接口闭环

What to build: 平台员工或代理提交已上传的 CSV 与目标代理后,系统创建并执行批量分配任务;任务按既有设备分配规则安全处理每一行、同步绑定卡和设备状态、写入资产分配与审计事实,并向前端提供可轮询的进度、成功、幂等和失败原因。

Blocked by: 01 — 建立设备 CSV 批量任务与受控上传基础设施。

Status: ready-for-agent

架构通道: 主通道为复杂写,辅助通道为 Query。

完整业务边界: 本票收口任务提交、后台执行、设备归属/绑定卡归属与状态/资产分配记录的同事务变更、条件更新和重试幂等,以及任务详情安全读取。复杂写必须遵循 Handler → Application UseCase → Domain → Repository/Infrastructure;不变量、并发和审计不得一半留在旧 Service、一半迁入 Domain。

明确不迁移: 不迁移既有页面勾选、ID 列表、号段、筛选分配、设备回收和横向转移入口;既有同步分配只能作为内部业务规则门面,不能复制宽松逻辑。

  • batch-assign-shop 只接受 file_key 与正目标代理 ID提交时校验操作者、对象和目标权限并返回前端轮询所需的任务标识、命令和状态。
  • 平台仅能分配平台库存,代理仅能分配自己名下设备给直属下级;同目标为幂等成功,横向转移、跨级、无权和未命中均安全拒绝。
  • 每个写批次经 Application 编排 Domain 与 Repository/Infrastructure以条件更新在同一事务内完成设备归属、绑定卡同步、状态变化、资产分配记录和实际变更审计重试或并发不会重复记录或覆盖其他操作。
  • 任务详情由 Query 负责权限、批量加载和 DTO 投影,只读展示目标摘要、状态名称、进度、总数、成功数、幂等数、失败数、逐行中文失败原因及起止时间;权限不足与不存在使用相同安全语义。