feat(import): 用 Excel 格式替换 CSV 导入
All checks were successful
构建并部署到测试环境(无 SSH) / build-and-deploy (push) Successful in 6m33s
All checks were successful
构建并部署到测试环境(无 SSH) / build-and-deploy (push) Successful in 6m33s
- 删除 CSV 解析代码,新增 Excel 解析器 (excelize) - 更新 IoT 卡和设备导入任务处理器 - 更新 API 路由文档和前端接入指南 - 归档变更到 openspec/changes/archive/ - 同步 delta specs 到 main specs
This commit is contained in:
@@ -0,0 +1,63 @@
|
||||
# Proposal: 替换CSV为Excel格式导入
|
||||
|
||||
## Why
|
||||
|
||||
运营团队在使用Excel编辑CSV文件时,超过15位的长数字(ICCID、设备号等)会被Excel自动转换为科学记数法,导致数据损坏无法使用。这种数据损坏问题每次导入都可能发生,给运营团队带来困扰。由于运营团队日常工作习惯使用Excel,直接支持Excel格式(.xlsx)可以从根本上解决这个问题,同时提升用户体验。
|
||||
|
||||
## What Changes
|
||||
|
||||
**核心变更**:
|
||||
- **移除**: 删除所有CSV解析相关代码 (`pkg/utils/csv.go`, `csv_test.go`)
|
||||
- **新增**: 添加Excel解析支持 (`pkg/utils/excel.go`, `excel_test.go`),使用 `excelize` 库
|
||||
- **修改**: 更新IoT卡导入和设备导入的任务处理器,使用Excel解析器替代CSV解析器
|
||||
- **更新**: API文档描述从"上传CSV文件"改为"上传Excel文件"
|
||||
- **约束**: 只支持 `.xlsx` 格式(Excel 2007+),不支持旧版 `.xls` 格式
|
||||
|
||||
**不变部分**:
|
||||
- 数据结构(`CardItem`, `DeviceRow`)保持不变
|
||||
- 业务逻辑(验证、批量处理、错误处理)保持不变
|
||||
- 对象存储集成保持不变
|
||||
- 历史导入任务记录保持不变(仅新任务使用Excel)
|
||||
|
||||
## Capabilities
|
||||
|
||||
### New Capabilities
|
||||
无新增功能
|
||||
|
||||
### Modified Capabilities
|
||||
- `device-import`: 设备导入功能的文件格式要求从CSV改为Excel(.xlsx)
|
||||
- `iot-card-import-task`: IoT卡导入功能的文件格式要求从CSV改为Excel(.xlsx)
|
||||
|
||||
## Impact
|
||||
|
||||
**代码影响**:
|
||||
- `pkg/utils/`: 删除CSV解析器,新增Excel解析器
|
||||
- `internal/task/iot_card_import.go`: 修改文件解析逻辑
|
||||
- `internal/task/device_import.go`: 修改文件解析逻辑
|
||||
- `internal/routes/iot_card.go`: 更新API文档描述
|
||||
- `internal/routes/device.go`: 更新API文档描述
|
||||
- 测试文件: 更新相关单元测试和集成测试
|
||||
|
||||
**依赖影响**:
|
||||
- 新增依赖: `github.com/xuri/excelize/v2` (成熟的Go Excel库,18k+ stars)
|
||||
|
||||
**前端影响**:
|
||||
- 上传组件的 `accept` 属性从 `*` 改为 `.xlsx`
|
||||
- 文件验证逻辑需更新(检查扩展名为.xlsx)
|
||||
- 需提供Excel模板文件下载(前端准备静态文件)
|
||||
- 用户提示文案更新
|
||||
|
||||
**运营影响**:
|
||||
- **正面**: 无需担心数据损坏,直接用Excel编辑即可
|
||||
- **培训**: 需通知运营团队格式变更(但更简单了)
|
||||
- **模板**: 需提供标准Excel模板文件
|
||||
|
||||
**兼容性**:
|
||||
- **历史数据**: 历史CSV导入任务记录保持可查询,但不支持重新导入
|
||||
- **迁移策略**: 开发环境直接切换,无需灰度(无生产数据)
|
||||
- **回滚**: 如需回滚,恢复CSV代码即可(Git revert)
|
||||
|
||||
**风险评估**:
|
||||
- **文件大小**: Excel文件比CSV大3-5倍,但对象存储成本影响很小(1万行约3-5MB)
|
||||
- **解析性能**: excelize性能良好,1万行Excel解析 < 1秒,不影响现有批量处理
|
||||
- **格式兼容**: 只支持.xlsx,如用户上传.xls会返回友好错误提示
|
||||
Reference in New Issue
Block a user