Admin:档口入库码导入使用 Excel 生成日期 #237

Open
opened 2026-08-15 10:34:38 +08:00 by ila · 1 comment
Owner

基本信息

  • 类型:缺陷修复
  • 父级大工单:#14
  • 所属 MVP/版本:#224 Admin 档口入库码回写
  • 阶段:数据导入与一致性修复
  • 状态:已实现,待验收

要解决什么

档口入库码 Excel 导入目前把页面筛选器默认的“今天”作为业务日期,忽略 Excel 的“生成日期”,导致导入日期错误,并可能影响后续按日期匹配顺运宝商品。

复现:页面日期默认为今天时,导入一份生成日期不是今天的 Excel,记录的 business_date 被写为今天。

做什么 / 不做什么

做:

  • 读取 Excel“生成日期”并作为唯一业务日期来源。
  • 支持完整日期和 MM-DD/MM/DD 短日期;短日期从原始文件名 _YYYYMMDD_ 提取年份并严格交叉校验。
  • 同一工作簿出现多个生成日期、日期缺失、日期非法或短日期与文件名不一致时,拒绝整批导入。
  • 导入成功后跳转到 Excel 生成日期,结果提示中展示业务日期。
  • 页面日期只用于列表筛选。

不做:

  • 不根据上传时间或服务器当前日期推断业务日期。
  • 不自动改写生产库中已错误导入的历史记录;软删除上线后可删除并重新导入。
  • 不改变顺运宝匹配或回写规则。

已确认的实现方案

  • 修改 admin/service/inner_code_import.go:解析必需列“生成日期”,标准化并校验整份文件日期;导入结果返回业务日期。
  • 修改 admin/handler/web/inner_code.go:把原始文件名传给导入服务,不再把页面日期作为导入日期;成功后按解析日期重定向。
  • 修改 admin/templates/inner_code/list.html:保留日期筛选语义,解除它与导入数据日期的耦合。
  • 补充完整日期、短日期、混合日期、文件名冲突和缺失日期测试。

验收标准

  • Excel 完整生成日期写入 business_date,与页面筛选日期无关。
  • 短日期可通过原始文件名年份解析,文件名日期不一致时整批失败。
  • 同一工作簿日期不唯一、缺失或非法时整批失败,不产生部分数据。
  • 导入成功后跳转到 Excel 生成日期并显示明确统计。
  • 现有业务键幂等、临时文件清理和匹配/回写行为不变。
  • 固定 Go 1.23.0 build/test/vet 通过。

验证方式

在 admin/ 目录执行固定 Go 1.23.0 的 go build ./...、go test -count=1 ./...、go vet ./...。

风险和回退

日期解析变严格后,缺少“生成日期”的旧格式文件会被拒绝,这是防止误写日期的预期行为。回退代码不涉及表结构;错误历史数据需删除后重新导入。

## 基本信息 - 类型:缺陷修复 - 父级大工单:#14 - 所属 MVP/版本:#224 Admin 档口入库码回写 - 阶段:数据导入与一致性修复 - 状态:已实现,待验收 ## 要解决什么 档口入库码 Excel 导入目前把页面筛选器默认的“今天”作为业务日期,忽略 Excel 的“生成日期”,导致导入日期错误,并可能影响后续按日期匹配顺运宝商品。 复现:页面日期默认为今天时,导入一份生成日期不是今天的 Excel,记录的 `business_date` 被写为今天。 ## 做什么 / 不做什么 做: - 读取 Excel“生成日期”并作为唯一业务日期来源。 - 支持完整日期和 `MM-DD`/`MM/DD` 短日期;短日期从原始文件名 `_YYYYMMDD_` 提取年份并严格交叉校验。 - 同一工作簿出现多个生成日期、日期缺失、日期非法或短日期与文件名不一致时,拒绝整批导入。 - 导入成功后跳转到 Excel 生成日期,结果提示中展示业务日期。 - 页面日期只用于列表筛选。 不做: - 不根据上传时间或服务器当前日期推断业务日期。 - 不自动改写生产库中已错误导入的历史记录;软删除上线后可删除并重新导入。 - 不改变顺运宝匹配或回写规则。 ## 已确认的实现方案 - 修改 `admin/service/inner_code_import.go`:解析必需列“生成日期”,标准化并校验整份文件日期;导入结果返回业务日期。 - 修改 `admin/handler/web/inner_code.go`:把原始文件名传给导入服务,不再把页面日期作为导入日期;成功后按解析日期重定向。 - 修改 `admin/templates/inner_code/list.html`:保留日期筛选语义,解除它与导入数据日期的耦合。 - 补充完整日期、短日期、混合日期、文件名冲突和缺失日期测试。 ## 验收标准 - [x] Excel 完整生成日期写入 `business_date`,与页面筛选日期无关。 - [x] 短日期可通过原始文件名年份解析,文件名日期不一致时整批失败。 - [x] 同一工作簿日期不唯一、缺失或非法时整批失败,不产生部分数据。 - [x] 导入成功后跳转到 Excel 生成日期并显示明确统计。 - [x] 现有业务键幂等、临时文件清理和匹配/回写行为不变。 - [x] 固定 Go 1.23.0 build/test/vet 通过。 ## 验证方式 在 `admin/` 目录执行固定 Go 1.23.0 的 `go build ./...`、`go test -count=1 ./...`、`go vet ./...`。 ## 风险和回退 日期解析变严格后,缺少“生成日期”的旧格式文件会被拒绝,这是防止误写日期的预期行为。回退代码不涉及表结构;错误历史数据需删除后重新导入。
Author
Owner

已实现,进入待验收。

  • 实现提交:74856de
  • 归档提交:4cbdc81
  • 归档:docs/task/237-档口入库码导入使用Excel生成日期.md
  • 验证:固定 Go 1.23.0 下 go build ./...、go test -count=1 ./...、go vet ./... 全部通过。
  • 未验证:浏览器真实 Excel 上传、生产历史错误日期数据修正。
已实现,进入待验收。 - 实现提交:`74856de` - 归档提交:`4cbdc81` - 归档:`docs/task/237-档口入库码导入使用Excel生成日期.md` - 验证:固定 Go 1.23.0 下 `go build ./...`、`go test -count=1 ./...`、`go vet ./...` 全部通过。 - 未验证:浏览器真实 Excel 上传、生产历史错误日期数据修正。
Sign in to join this conversation.
No labels
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: chengma/cmautobuy#237