docs: 归档任务 #237

This commit is contained in:
chengma
2026-08-15 10:39:22 +08:00
parent 74856deff7
commit 4cbdc81a30
@@ -0,0 +1,52 @@
# 237 Admin:档口入库码导入使用 Excel 生成日期
- 类型:缺陷
- 父级大工单:#14
- 所属 MVP / 版本:#224
- 状态:已完成
- 日期:2026-08-15
- Gitea 工单:http://ilaer.eicp.net:8418/chengma/cmautobuy/issues/237
## 背景与目标
原导入流程把页面筛选日期作为每行 `business_date`,因此页面默认今天时会覆盖 Excel 自带的生成日期。本任务让 Excel“生成日期”成为导入业务日期的唯一事实来源,页面日期只负责筛选。
## 最终方案
- 把“生成日期”设为必需表头,逐行解析并要求整份工作簿只有一个业务日期。
- 完整日期支持 `YYYY-MM-DD`、`YYYY/MM/DD` 和 Excel 日期序列值;`MM-DD`、`MM/DD` 短日期使用原始文件名 `_YYYYMMDD_` 补充年份,并核对月日必须一致。
- 日期缺失、格式非法、同一文件混合日期或短日期与文件名冲突时,在写库前拒绝整批导入。
- 上传处理器保留原始文件名并传给导入服务,不再提交页面筛选日期作为数据来源。
- 导入成功后跳转到解析出的业务日期,完成提示明确展示日期。
- 实际实现与建单方案一致,没有数据库迁移,也没有修改匹配和回写逻辑。
## 改了哪些
- `admin/service/inner_code_import.go`:解析、校验 Excel 生成日期,并在导入结果中返回业务日期。
- `admin/service/inner_code_import_test.go`:覆盖完整日期、短日期、文件名冲突、混合日期和缺少日期表头。
- `admin/handler/web/inner_code.go`:传递原始文件名并按 Excel 日期重定向。
- `admin/templates/inner_code/list.html`:移除导入表单中容易误导的页面日期隐藏字段。
## 验收结果
| 验收标准 | 结果 |
|---|---|
| Excel 完整生成日期写入 `business_date`,与页面筛选日期无关 | 通过 |
| 短日期使用原始文件名年份解析,并严格核对文件名日期 | 通过 |
| 混合、缺失、非法日期在写库前整批失败 | 通过 |
| 导入成功跳转到 Excel 生成日期并展示统计 | 通过 |
| 现有业务键幂等、临时文件清理及匹配回写逻辑保持不变 | 通过 |
| 固定 Go 1.23.0 build/test/vet 通过 | 通过 |
## 测试
- 执行的命令:
- `go test -count=1 ./service ./handler/web`
- `$env:GOTOOLCHAIN='go1.23.0'; go build ./...; go test -count=1 ./...; go vet ./...`
- `git diff --check`
- 结果:全部通过。
- **没验证到的部分**:未在浏览器中上传真实业务 Excel;未修改或验证生产历史错误日期数据。任务不涉及数据库迁移。
## 相关提交
- `74856de` fix: 使用 Excel 生成日期导入档口入库码 (#237)