Undo the full-tree rollback in 6ea1b3d and restore the pre-rollback v1.2.0 code. Preserve the new asset flow rules, abnormal inventory separation, range drilldowns and date picker; adapt the regression test to the restored routes layout.
6ea1b3d
37a9f303
背景 - 这两个域把 SQL 与处理器放在同一文件,是全仓仅有的两个零接口测试的后端域。 直接拆会改动 SQL 与参数顺序,而硬约束要求不得变更统计口径 —— 因此按 "可注入化 -> 补契约测试 -> 再提取" 的顺序做。 改动 - ele:拆为 routes.ts(校验与组装)/ repository.ts(全部 SQL)/ model.ts(xlsx 解析、 取值清洗、筛选片段、插入值组装等纯逻辑),并改为 registerEleRoutes(app, deps) 可注入。 - feedback:拆为 routes.ts / repository.ts,同样可注入;建表与截图上传也作为依赖注入。 - 两域各补测试:ele 7 个接口契约 + 6 个模型用例,feedback 9 个接口契约。 mock pool 逐条断言 SQL 文本与参数顺序(含分页、状态白名单、批量插入的 30 列顺序)。 - 架构测试新增一条:已完整分层的三个域(vehicles / ele / feedback)必须有 repository.ts 且 routes.ts 不得出现 SQL。 等价性验证(关键) - 把改造前的实现从 git 取出,与改造后的实现跑同一批请求(含真实 xlsx 解析路径), 对比每一步落库 SQL、参数、HTTP 状态与响应体: feedback:6 个场景,SQL + 参数 + 状态完全一致(差异仅 DDL 已移交 db/schema 层) ele :5 个场景,SQL + 参数 + 状态 + 响应体完全一致(仅随机 batchId/时间戳做掩码) - 期间的修正:曾把 /mine 与 /list 的列集合统一,二者实际不同(管理列表多 user_id/user_name), 已按原样保留;测试同时锁定了这一差异。 lint / test(161) / build 全绿,可达性 0 未引用文件。