feat: 资产标识符标准化、资产历史订单查询及导入虚拟号强制验证
All checks were successful
构建并部署到测试环境(无 SSH) / build-and-deploy (push) Successful in 7m21s
All checks were successful
构建并部署到测试环境(无 SSH) / build-and-deploy (push) Successful in 7m21s
主要变更: - 新增 AssetIdentifier 模型及 Store,统一管理资产标识符(ICCID/IMEI/SN 等) - 新增迁移:asset_identifier 表、order 表新增 asset_identifier 字段、iot_card.virtual_no NOT NULL 约束 - 资产 Handler/Service/Route 全面重构,支持标识符路由查询与解析 - 新增资产历史订单查询接口,支持跨设备/卡/钱包维度的订单聚合 - 设备与物联卡导入任务强制校验虚拟号,缺失时直接拒绝 - Excel 工具函数优化,前端导入指引文档同步更新 - 归档三个 OpenSpec 提案:asset-identifier-standardization、asset-historical-orders、import-mandatory-virtual-no - 更新 OpenAPI 文档及相关 DTO Ultraworked with [Sisyphus](https://github.com/code-yeongyu/oh-my-openagent) Co-authored-by: Sisyphus <clio-agent@sisyphuslabs.ai>
This commit is contained in:
@@ -49,16 +49,18 @@ func registerIotCardRoutes(router fiber.Router, handler *admin.IotCardHandler, i
|
||||
### Excel 文件格式
|
||||
|
||||
- 文件格式:仅支持 .xlsx (Excel 2007+)
|
||||
- 必填列:` + "`ICCID`" + `, ` + "`MSISDN`" + `
|
||||
- 可选列:` + "`virtual_no`" + `(虚拟号,表头关键字:virtual_no / VirtualNo / 虚拟号 / 设备号)
|
||||
- 必填列(表头关键字):
|
||||
- ` + "`ICCID`" + `(或:卡号 / 号码)
|
||||
- ` + "`MSISDN`" + `(或:接入号 / 手机号 / 电话)
|
||||
- ` + "`virtual_no`" + `(或:VirtualNo / 虚拟号 / 设备号)—— **必填,缺少此列将导致整批导入失败**
|
||||
- 首行为表头(可选,但建议包含)
|
||||
- 列格式:设置为文本格式(避免长数字被转为科学记数法)
|
||||
|
||||
#### virtual_no 列导入规则(只补空白)
|
||||
#### virtual_no 导入规则
|
||||
|
||||
- 该行 virtual_no 非空 + 数据库当前值为 NULL:填入新值
|
||||
- 该行 virtual_no 非空 + 数据库已有值:跳过(不覆盖)
|
||||
- 批次内有任意 virtual_no 与数据库现存值重复:**整批拒绝**`,
|
||||
- ` + "`virtual_no`" + ` 为必填字段,**不可为空**;为空的行记为失败并报告原因
|
||||
- Excel 缺少 ` + "`virtual_no`" + ` 列时,整批导入直接失败(返回"Excel 文件缺少 virtual_no 列,请使用最新模板")
|
||||
- ` + "`virtual_no`" + ` 与系统已有值重复时,该行记为失败`,
|
||||
Tags: []string{"IoT卡管理"},
|
||||
Input: new(dto.ImportIotCardRequest),
|
||||
Output: new(dto.ImportIotCardResponse),
|
||||
|
||||
Reference in New Issue
Block a user