库存页 saiadmin-artd/src/views/water/inventory/index.vue 按用户参考图改为四项统计、分规格表格、七日趋势和库存构成。InventoryForm.vue 负责规格、入库及盘点交互,inventory.scss 限定在本页面。库存流水继续使用 WaterLedgerDrawer.vue。
available <= safety_stock 的规格,数量为规格数;未添加没有业务依据的“偏低”阈值。inbound 与 delivery_return(仅完好退回);出库累计 depart。不包含库存冻结、签收、盘点、现场换桶、空桶交接等其他流水。GET /core/water/inventory/dashboard:keyword(最多120字)、page、limit(1–100);返回 summary、trend、list、updated_at。POST /core/water/inventory/export:同关键词筛选,忽略分页,导出全部匹配规格 XLSX;最多50,000条,超出明确拒绝。临时文件自动清理,商品名公式前缀转义。water:inventory:read 权限。控制器仅做权限、参数接收和响应,读模型在 WaterInventory 服务,数据库通过 Eloquent 模型访问。POST /core/water/inventory 和 WaterBusiness 的事务、行锁与重复凭据校验,不增加独立库存写入路径。damaged_qty、empty_lost_qty、empty_in_vehicle)。php -d extension=mbstring tests/water_inventory_test.php --http:50项,覆盖全量聚合、分页、阈值、七日边界、空桶归属、原库存操作、重复凭据、XLSX内容和权限,以及本地真实HTTP看板/导出。事务测试全部回滚;HTTP仅查询及导出。php -d extension=mbstring tests/water_business_test.php:69项通过,测试记录全部回滚。failed to start Node runtime: 系统找不到指定的路径。 (os error 3),本次未完成视觉截图及浏览器交互验收;不可将构建或HTTP检查表述为视觉验收通过。4173预览服务可访问。回退界面可将库存入口恢复为 <WaterWorkspace module="inventory" />,原操作服务未更换,新增读接口可继续保留。