huang
80c6f6c756
构建并部署到测试环境(无 SSH) / build-and-deploy (push) Successful in 7m21s
feat: 资产标识符标准化、资产历史订单查询及导入虚拟号强制验证
主要变更:
- 新增 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>
2026-04-07 17:39:36 +08:00
..
2026-02-24 16:23:02 +08:00
2026-02-24 16:23:02 +08:00
2025-12-15 14:37:34 +08:00
2025-12-15 14:37:34 +08:00
2026-01-09 18:02:46 +08:00
2026-01-09 18:02:46 +08:00
2026-01-10 09:51:52 +08:00
2026-01-10 09:51:52 +08:00
2026-01-10 11:42:38 +08:00
2026-01-10 11:42:38 +08:00
2026-01-12 15:44:23 +08:00
2026-01-12 15:44:23 +08:00
2026-01-12 17:43:12 +08:00
2026-01-12 17:43:12 +08:00
2026-01-13 15:47:32 +08:00
2026-01-13 15:47:32 +08:00
2026-01-13 16:52:37 +08:00
2026-01-13 16:52:37 +08:00
2026-01-14 12:15:57 +08:00
2026-01-14 12:15:57 +08:00
2026-01-21 18:20:44 +08:00
2026-01-21 18:20:44 +08:00
2026-01-24 11:03:43 +08:00
2026-01-24 11:03:43 +08:00
2026-01-24 11:03:43 +08:00
2026-01-24 11:03:43 +08:00
2026-01-24 11:03:43 +08:00
2026-01-24 11:03:43 +08:00
2026-01-24 15:46:15 +08:00
2026-01-24 15:46:15 +08:00
2026-01-26 10:28:29 +08:00
2026-01-26 10:28:29 +08:00
2026-01-26 10:28:29 +08:00
2026-01-26 10:28:29 +08:00
2026-01-26 15:07:03 +08:00
2026-02-24 16:23:02 +08:00
2026-01-26 18:05:12 +08:00
2026-01-26 18:05:12 +08:00
2026-01-26 18:05:12 +08:00
2026-01-26 18:05:12 +08:00
2026-01-26 18:05:12 +08:00
2026-01-26 18:05:12 +08:00
2026-01-27 12:18:19 +08:00
2026-01-27 12:18:19 +08:00
2026-01-27 12:18:19 +08:00
2026-01-27 12:18:19 +08:00
2026-01-27 12:18:19 +08:00
2026-01-27 12:18:19 +08:00
2026-01-27 19:55:47 +08:00
2026-01-27 19:55:47 +08:00
2026-01-28 10:45:16 +08:00
2026-01-28 10:45:16 +08:00
2026-01-28 17:11:55 +08:00
2026-01-28 17:11:55 +08:00
2026-01-28 19:49:45 +08:00
2026-01-28 19:49:45 +08:00
2026-01-28 22:12:15 +08:00
2026-01-28 22:12:15 +08:00
2026-01-29 09:36:12 +08:00
2026-01-29 09:36:12 +08:00
2026-01-29 09:36:12 +08:00
2026-01-29 09:36:12 +08:00
2026-01-29 13:18:49 +08:00
2026-01-29 13:18:49 +08:00
2026-01-29 13:18:49 +08:00
2026-01-29 13:18:49 +08:00
2026-01-29 16:33:53 +08:00
2026-01-29 16:33:53 +08:00
2026-01-30 14:57:24 +08:00
2026-01-30 14:57:24 +08:00
2026-01-31 11:31:42 +08:00
2026-01-31 11:31:42 +08:00
2026-01-31 11:31:42 +08:00
2026-01-31 11:31:42 +08:00
2026-01-31 15:34:32 +08:00
2026-01-31 15:34:32 +08:00
2026-02-02 12:09:53 +08:00
2026-02-02 12:09:53 +08:00
2026-02-02 17:23:20 +08:00
2026-02-02 17:23:20 +08:00
2026-02-03 10:06:13 +08:00
2026-02-03 10:06:13 +08:00
2026-02-03 10:59:44 +08:00
2026-02-03 10:59:44 +08:00
2026-02-04 14:28:44 +08:00
2026-02-04 14:28:44 +08:00
2026-02-04 14:28:44 +08:00
2026-02-04 14:28:44 +08:00
2026-02-04 14:28:44 +08:00
2026-02-04 14:28:44 +08:00
2026-02-04 14:28:44 +08:00
2026-02-04 14:28:44 +08:00
2026-02-05 17:32:44 +08:00
2026-02-05 17:32:44 +08:00
2026-02-05 17:32:44 +08:00
2026-02-05 17:32:44 +08:00
2026-02-05 17:32:44 +08:00
2026-02-05 17:32:44 +08:00
2026-02-05 17:32:44 +08:00
2026-02-05 17:32:44 +08:00
2026-02-05 17:32:44 +08:00
2026-02-05 17:32:44 +08:00
2026-02-05 17:32:44 +08:00
2026-02-05 17:32:44 +08:00
2026-02-05 17:32:44 +08:00
2026-02-05 17:32:44 +08:00
2026-02-05 17:32:44 +08:00
2026-02-05 17:32:44 +08:00
2026-02-05 17:32:44 +08:00
2026-02-05 17:32:44 +08:00
2026-02-11 17:13:42 +08:00
2026-02-12 14:24:15 +08:00
2026-02-24 16:23:02 +08:00
2026-02-24 16:23:02 +08:00
2026-02-24 16:23:02 +08:00
2026-02-24 16:23:02 +08:00
2026-02-24 16:23:02 +08:00
2026-02-24 16:23:02 +08:00
2026-02-25 09:51:00 +08:00
2026-02-25 09:51:00 +08:00
2026-02-25 09:51:00 +08:00
2026-02-25 09:51:00 +08:00
2026-02-25 09:51:00 +08:00
2026-02-25 09:51:00 +08:00
2026-02-25 09:51:00 +08:00
2026-02-25 09:51:00 +08:00
2026-02-25 09:51:00 +08:00
2026-02-25 09:51:00 +08:00
2026-02-25 09:51:00 +08:00
2026-02-25 09:51:00 +08:00
2026-02-25 09:51:00 +08:00
2026-02-25 09:51:00 +08:00
2026-02-27 15:38:33 +08:00
2026-02-27 15:38:33 +08:00
2026-02-28 14:11:42 +08:00
2026-02-28 14:11:42 +08:00
2026-02-28 14:11:42 +08:00
2026-02-28 14:11:42 +08:00
2026-02-28 17:16:15 +08:00
2026-02-28 17:16:15 +08:00
2026-03-02 15:38:54 +08:00
2026-03-02 15:38:54 +08:00
2026-03-04 11:34:55 +08:00
2026-03-04 11:34:55 +08:00
2026-03-10 10:34:08 +08:00
2026-03-10 10:34:08 +08:00
2026-03-14 18:27:28 +08:00
2026-03-14 18:27:28 +08:00
2026-03-14 18:27:28 +08:00
2026-03-14 18:27:28 +08:00
2026-03-14 18:27:28 +08:00
2026-03-14 18:27:28 +08:00
2026-03-16 15:42:52 +08:00
2026-03-16 15:42:52 +08:00
2026-03-16 15:42:52 +08:00
2026-03-16 15:42:52 +08:00
2026-03-16 23:28:57 +08:00
2026-03-16 23:28:57 +08:00
2026-03-16 23:28:57 +08:00
2026-03-16 23:28:57 +08:00
2026-03-16 23:28:57 +08:00
2026-03-16 23:28:57 +08:00
2026-03-16 23:28:57 +08:00
2026-03-16 23:28:57 +08:00
2026-03-19 10:56:50 +08:00
2026-03-19 10:56:50 +08:00
2026-03-19 11:33:41 +08:00
2026-03-19 11:33:41 +08:00
2026-03-19 13:28:04 +08:00
2026-03-19 13:28:04 +08:00
2026-03-19 13:26:54 +08:00
2026-03-19 13:26:54 +08:00
2026-03-19 13:26:54 +08:00
2026-03-19 13:26:54 +08:00
2026-03-21 11:33:57 +08:00
2026-03-21 11:33:57 +08:00
2026-03-21 14:30:29 +08:00
2026-03-21 14:30:29 +08:00
2026-03-28 10:36:31 +08:00
2026-03-28 10:36:31 +08:00
2026-03-28 11:31:16 +08:00
2026-03-28 11:31:16 +08:00
2026-03-28 11:31:16 +08:00
2026-03-28 11:31:16 +08:00
2026-03-28 11:38:14 +08:00
2026-03-28 11:38:14 +08:00
2026-03-28 17:57:52 +08:00
2026-03-28 17:57:52 +08:00
2026-03-30 09:59:30 +08:00
2026-03-30 09:59:30 +08:00
2026-03-30 09:59:30 +08:00
2026-03-30 09:59:30 +08:00
2026-03-30 09:59:30 +08:00
2026-03-30 09:59:30 +08:00
2026-03-30 09:59:30 +08:00
2026-03-30 09:59:30 +08:00
2026-03-30 11:37:41 +08:00
2026-03-30 11:37:41 +08:00
2026-03-31 12:43:07 +08:00
2026-03-31 12:43:07 +08:00
2026-03-31 18:11:29 +08:00
2026-03-31 18:11:29 +08:00
2026-03-31 20:51:42 +08:00
2026-03-31 20:51:42 +08:00
2026-04-02 14:36:24 +08:00
2026-04-02 14:36:24 +08:00
2026-04-07 12:27:04 +08:00
2026-04-07 12:27:04 +08:00
2026-04-07 12:27:04 +08:00
2026-04-07 17:39:36 +08:00
2026-04-07 17:39:36 +08:00
2026-04-07 17:39:36 +08:00
2026-04-07 17:39:36 +08:00
2026-04-07 17:39:36 +08:00
2026-04-07 17:39:36 +08:00
2026-02-28 14:11:42 +08:00