文睿 张
|
d864294dde
|
feat(material-import): 完善导入模板填写说明页,同步接口、计划与回归用例
|
2026-10-12 15:41:21 +08:00 |
|
文睿 张
|
bc1352b918
|
docs: 标注导入记录表只写不读,留作后续入口
|
2026-10-12 11:56:51 +08:00 |
|
文睿 张
|
8d195c2d51
|
fix(material-import): 导入落库的单位统一写编码,与单条新增一致
模板里填单位名称(如「千克」)时原本把名称原样存进 materials.unit,而单条新增
经 syncUnit 提交的是单位编码 kg。同一个单位按录入路径留下两种写法,库存页直接
显示该字段(Stock.vue 的 unit 列)会出现「千克」与「kg」并存。
- material_import.go:Unit 一律取匹配到的单位 Code
- 补回归用例:模板填名称、填编码两条路径都断言落库为 kg
- 同步计划文档的代码与测试片段、设计约定 4 的单位一行
- 订正 api.md 中 unit 字段「单位名称」的错误描述(单条新增提交的本就是编码)
|
2026-10-12 11:51:44 +08:00 |
|
文睿 张
|
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 |
|
文睿 张
|
1c316d0105
|
回归测试用例
|
2026-10-09 18:18:58 +08:00 |
|
文睿 张
|
2a6a3c6bba
|
docs: 补充后端结构说明并更新公司隔离进度
- 新增《项目后端结构说明》,梳理仓库布局、internal 分层与请求链路
- 《数据库表结构与关系说明》新增第 11 节,记录公司隔离发布后的表、约束与升级阻断规则
- 公司隔离计划补充精简版测试策略,并勾选 Task 2、Task 8 完成项与验收记录
|
2026-10-09 15:55:52 +08:00 |
|
文睿 张
|
936a8d3b61
|
完善库存流水
|
2026-09-20 14:29:41 +08:00 |
|
文睿 张
|
1cc3584f1a
|
restore lost frontend and backend changes
|
2026-09-16 23:30:25 +08:00 |
|
文睿 张
|
31aae223c2
|
Initial commit
|
2026-09-15 16:08:18 +08:00 |
|