Commit Graph

9 Commits

Author SHA1 Message Date
文睿 张
0ddda5363e fix(material-import): 完善批量导入异常提示,仅保存成功历史,补齐审计日志名称、编码、详情及物料快照。上传解析前限制请求大小,逐行读取提前拦截超限数据,保留空行和真实行号规则。补充回归测试,同步计划、接口说明及八条人工用例。 2026-10-12 11:37:37 +08:00
文睿 张
2e526be3fb docs: 计划文档同步物料导入的分类别名匹配与测试片段
计划里的代码片段落后于实现:分类匹配后来支持了「编码 名称」写法、纯编码与空白
归一化(f634e7cf、3c75537f 两个修复提交只改了代码和 docs/api.md,没回写计划)。

- Task 5 的实现与测试片段同步为实际代码,补 expectImportPersist 与 4 个新用例
- Task 2 模板「填写说明」文案补上「或编码」
- Task 3 测试块补 materialCategoryPtr 定义,insertMaterialBatchStmt 收进代码块
- 修正测试数量断言(7 个函数、9 个用例)
- 设计约定与校验规则表补上分类可按名称/编码/「编码 名称」匹配、匹配前归一化空白
2026-10-10 18:25:56 +08:00
文睿 张
2f0d978dbf docs: 修正计划 Task 9 片段的 mock 路径与断言
- 路径笔误:vi.mock('../../api/materials') 改成 '../api/materials'。测试文件在
  src/views/ 下,相对它是一级上跳,原路径会指向仓库根的 api/ 目录
- 补上 materialsApi 替身的具体两行代码,原来只有文字描述、照抄不了
- 两个用例在触发导入前加 fetchMaterials.mockClear():页面 onMounted 就会拉一次
  列表,不清的话失败用例的 not.toHaveBeenCalled() 必然失败,成功用例的断言也没区分度
- 成功用例的断言从 toHaveBeenCalled() 收紧成 toHaveBeenCalledWith(1, '', 'all')
- 两个用例包进 describe('批量导入'),并给出 beforeEach 里重置替身的写法

验证:从 Task 9 之前的测试文件出发,按文档插入替身、追加用例块,实跑 24 个用例通过。
2026-10-10 16:31:39 +08:00
文睿 张
326cf77010 docs: 计划 Task 8 的组件测试片段补上 el-table 渲染时序
原片段用同步的 mountResult 直接断言 tbody tr 的文本,但 el-table 分两轮渲染:
先注册列,下一轮才把单元格填上。只等一个 tick 时拿到的是空 tr,断言会以
"expected '' to contain '2'" 这种看不出原因的方式失败(实测撞到过)。

改成 async mountResult,内部 await 两轮 nextTick 并附上原因;三个用例跟着
改成 await 调用,导出那条也复用 mountResult 传 provide,不再内联 mount。
2026-10-10 16:25:53 +08:00
文睿 张
f5e9029c46 docs: 修正「导入必须用独立前缀」的错误论断
实测 gin v1.9.1 允许静态段与 :id 在同一层级共存:探针测了 POST/GET 的单级与
两级共 5 种组合,把 /materials/import 放进现成的 materials 组全都不会 panic。

路由本身保持 /material-import 不变——独立成前缀是命名与分组上的选择(导入是
含模板下载与上传入库的一条链路,也避免 /materials/import 被读成物料 id),
不是 gin 的路由限制。计划文档同步更正。

顺带把计划 Task 6 Step 7 的验证方式从 go build 改成跑路由测试:go build 只做
编译、不执行 RegisterRoutes,注册期的 panic 它兜不住。
2026-10-10 16:18:02 +08:00
文睿 张
8a61186cfd docs: 计划 Task 7 片段的 BOM 改成转义写法
内联的零宽字符在编辑器里看不见也改不动,写文件时极易悄悄落成真字符——实现这个
Task 的过程中在源码、提交信息、记忆文件里各踩了一次。改成 JS 转义写法后源码可见。

片段同步为已提交的实现与测试版本:测试引入 BOM 常量,实现片段注释也对齐。
把文档里的两个片段抽出来覆盖真实文件实跑,2 个用例通过。
2026-10-10 16:10:53 +08:00
文睿 张
f34803e1a2 docs: 修正物料导入计划中 Task 5/6 的测试片段笔误
- Task 5:expectImportLog 的行数参数显式转 int64。database/sql 会把实参归一成
  driver.Value(int→int64),sqlmock 按类型比对,传 Go int 必然匹配不上
- Task 5:expectImportLog 补 fileName 参数,模板非法那条用例传的文件名与其它用例不同
- Task 5:事务内 SQL 的期望顺序改为「推进 code_rules → 分批 INSERT」,
  与已提交的 ImportTx 实现(material.go:480 在 :485 之前)一致
- Task 6:测试片段补上缺失的 strings import

按修正后的片段替换 internal/service/material_import_test.go 实跑,5 个用例全通过。
2026-10-10 15:42:06 +08:00
文睿 张
84e7f4d7d0 feat: 新增物料导入记录表与模型 2026-10-10 14:56:42 +08:00
文睿 张
616a4a3b1d feat: 物料增加初始单位,补充物料批量上传计划
- 物料默认单位由 pcs 改为「个」,新建/编辑表单与后端 Create 保持一致
- 单位下拉增加未选择时的默认提示
- init.sql 补充 30 个常用计量单位种子数据
- init.sql 新增 material_import_logs 表,为批量导入提供落库
- 新增物料批量导入实施计划文档,相关测试期望值同步更新
2026-10-10 14:15:49 +08:00