0daf50ac21
fix: 成品/半成品/维修列表第二层跨域判断补认 crossDomain(解决库管配跨域仍看不到双边)
2026-09-04 13:01:44 +08:00
27fb34807d
V3.71,9.4推送
2026-09-04 12:02:43 +08:00
1527d552d4
feat: 出库/借库记录记录并展示库位快照(DB加列+后端写入+记录页展示)
2026-09-04 11:42:44 +08:00
8e561836eb
feat: 库位按物料公司白名单显示——WarehouseSelector 支持 allowedTopPrefixes,IRIS 仅显 Y、LICA 显 C/L
2026-09-04 11:02:03 +08:00
7cdc0bc3a1
perf: 库位选择器改为按需懒加载——新增 /warehouse/children 接口,WarehouseSelector 移除全量树依赖
2026-09-04 10:51:49 +08:00
0535cd8bd7
fix: 借库申请页预计归还日期禁止选择早于当日
2026-09-04 09:58:48 +08:00
e5c49c5177
fix: 入库 search-base 物料选择加公司隔离,恢复半成品批号按本公司历史自动递增
2026-09-04 09:42:49 +08:00
1b760f351e
fix: 出库/借库扫码查库存与 BOM 子件物料选择加行级公司隔离(超管/跨域不受限)
2026-09-04 09:40:00 +08:00
2acbd00222
fix: 修正报废/库存调整/维修入库模块前端权限码与权限表不一致(scrap_list/stock_adjustment/维修统一 operation)
2026-09-04 09:27:55 +08:00
e61351b0ca
fix: 借库审批页按钮权限码改为 op_borrow_approval:operation(主管看不到审批按钮)
2026-09-04 09:23:33 +08:00
c68ffdca0f
fix: 入库成品/半成品/采购编辑其它字段时不再误清空图片——仅显式携带图片字段才更新
2026-09-03 14:14:24 +08:00
7fe861b4a7
fix: 基础信息修改其它字段时不再误清空 product_image(图片消失)——仅显式携带 generalImage 才更新图片
2026-09-03 14:12:15 +08:00
4f8d765bb3
V3.70,9.2推送
2026-09-02 18:39:36 +08:00
3cb9b0da98
chore: 添加 httpx 依赖(Track Webhook 通知);gitignore 忽略根目录 .env 防密钥入库
2026-09-02 18:39:17 +08:00
87919146de
fix: 基础信息参考价格可修改——脏检查白名单补全 referencePrice
2026-09-02 18:39:17 +08:00
129cb1119f
fix: 出库选单 BOM 下拉唯一值修复,打印模板补齐欠料待补区与借库对齐
2026-09-02 18:39:17 +08:00
ec9aafbe51
feat: 借库归还日期贯穿申请/审批/扫码借库;BOM 套餐添加与打印、缺货写入申请原因
2026-09-02 18:39:17 +08:00
bf7b2cc6d3
feat: BOM 库存接口支持按版本查询,修复同一编号多版本下拉回显错乱
2026-09-02 18:39:17 +08:00
85130db6ea
perf: Docker 构建使用清华镜像源并启用 BuildKit pip 缓存挂载,大幅加速重复构建
2026-09-02 18:39:09 +08:00
0887b20302
deploy: MOM 服务器备份补 venv/node_modules 排除,加速备份
2026-09-01 18:24:48 +08:00
d8be963036
deploy: MOM prod Track 地址硬编码,避免被服务器残留 .env 覆盖
...
- 之前 default 会被 .env 覆盖成 dev 的 track_backend,生产联动失效
- 改为硬编码 track_backend_prod:8000,仅密钥保留可配置
2026-09-01 18:05:27 +08:00
aa3a470d67
deploy: MOM prod 补充 Track 联动环境变量与网络互通
...
- 补 TRACK_WEBHOOK_URL/KEY、TRACK_API_URL、TRACK_OUTBOUND_WEBHOOK_URL(容器名 track_backend_prod)
- backend 加入 mom_net 外部网络(inventory-app_default)与 Track prod 互通
2026-09-01 18:02:38 +08:00
ee22927660
fix: 解耦 Webhook 身份证与库存序列号,恢复批号入库纯净
...
- 前端:新增临时字段 form.track_id 存 16位身份证,Batch 时 form.serial_number 清空
- 前端:submitForm 不再把身份证补进 payload.serial_number,改为透传 payload.track_id
- 后端:StockSemi 仅存 serial_number(Batch 为空),notify_track 优先用 track_id
2026-09-01 16:44:48 +08:00
c3637e0c25
fix: 出库备注欠料改用实时库存计算,不再自动填历史欠料
...
- buildRemarkWithShortage 改用 bomDetailList 实时 shortage(需量-当前库存)
- 库存补足后,欠料不再自动拼进出库备注(原 localStorage 历史记录一直带出)
2026-09-01 16:35:32 +08:00
8fd4a2ae53
style: 采购申请'完结本批'按钮样式统一为出库审批的 plain 实心样式
...
- 去掉 link 文字样式,改用 type=danger plain size=small,与出库审批完结按钮一致
2026-09-01 16:23:44 +08:00
4e09860b36
feat: 采购申请完结功能移到批次主行,与出库审批一致
...
- 移除展开行内的单条完结按钮(需点开),改为主行'完结本批'直接可见
- 后端 batch-approve 支持 action=close(批次内已通过→已完结)
- 超管/库管在主行操作列即可看到并完结
2026-09-01 16:21:48 +08:00
8c554fdd3b
fix: 采购申请完结按钮不显示——v-else-if 被注释打断关联
...
- v-if 与 v-else-if 之间的 HTML 注释破坏 Vue 关联,导致完结按钮不渲染
- 移除注释,超管/库管在'已通过'单均显示完结按钮
2026-09-01 16:18:07 +08:00
fbb4160787
feat: 采购申请新增库管'完结'功能(仿出库审批)
...
- 后端:approve 接口支持 action=close(已通过→已完结 status 1→4),模型 status_text 支持已完结
- 前端:采购申请状态tab加'已完结',已通过单显示'完结'按钮(库管)
2026-09-01 16:15:48 +08:00
a2d3a2c43a
fix: 半成品列表字段权限过滤后补回 base_id,修复批号自增失效
...
- get_list 的 apply_strict_rbac 剥离 base_id,导致前端 checkHistoryAndSetMode 无法按物料匹配历史
- 过滤后补回 base_id,扫码/选物料联动时批号能按历史正确自增(如 000002 → 000003)
2026-09-01 16:08:27 +08:00
def701fc74
fix: 半成品 Batch 模式序列号界面留空,提交时补回 Track 身份证
...
- Batch 模式序列号输入框不再显示 16 位身份证,避免误导
- 提交 payload 时若为 Batch 且扫过码,补回身份证供 Webhook 通知 Track
2026-09-01 15:53:02 +08:00
db22065790
fix: 半成品扫码入库按 external_serial 精准判定模式并恢复批号联动
...
- external_serial 有值 → SN + 填外部序列号;为空 → Batch(不再因身份证有值误切 SN)
- Batch 模式恢复批号自增(onMaterialSelected→checkHistoryAndSetMode),空时兜底 000001
- Batch 下 16 位身份证回填序列号字段,随提交载荷供 Webhook 通知 Track
2026-09-01 15:45:16 +08:00
3d5a9afeda
fix: 扫码入库序列号映射优先 external_serial + 半成品自动切换 SN/Batch
...
- form.serial_number = external_serial || serial_number(优先真实自定义序列号)
- 半成品:扫码后按有无序列号自动切换 SN/Batch 模式,并解除历史锁定
- 修复 onMaterialSelected 未 await checkHistoryAndSetMode 的竞态
2026-09-01 15:11:24 +08:00
2c092c4c01
feat: MOM 出库联动 Track 标记已出库
...
- 发货出库时反查库存表 serial_number(Track 身份证),commit 后通知 Track mom-outbound
- notify_track 支持指定 webhook url(TRACK_OUTBOUND_WEBHOOK_URL)
2026-09-01 13:53:00 +08:00
bee037f925
feat: MOM 扫码入库对接 Track 产品身份证自动填充
...
- 半成品/成品入库弹窗顶部新增'扫码入库'按钮,打开扫码面板(扫码枪/摄像头)
- 扫码 Track 身份证后自动填充物料信息与序列号,不再二次搜索
- 后端新增 track_query_service(httpx 调 Track lookup)、track-lookup 接口
- 入库成功后 notify_track 通知 Track 闭环
2026-09-01 13:52:56 +08:00
9bc3c94dd1
fix(deploy): 修复第4步 ssh 远端命令被本地 bash 展开的 bug
...
第4步远端命令用双引号包裹,内部 $(curl ...) 与 $API_CODE 会被本地 bash
提前展开、嵌套双引号导致引号错乱,远端命令被污染后卡死。
- 移除 API 验证的 $(curl)/$API_CODE(历史一直未在远端执行过,属可选增强)
- nginx 验证改为无嵌套引号的 (grep && echo || echo) 结构
- 保留去 sudo 化与 models 排除,全流程免密
2026-08-31 16:51:24 +08:00
ee64309151
deploy(deploy_code.sh): 脚本全量去 sudo 化,实现全程免密部署
...
/opt/inventory-app 属主为 dxc、docker 在 docker 组免 sudo,
脚本里所有 sudo 均为多余提权,且是手动/自动化部署卡住的主因:
- 第 1、4 步是独立 ssh 会话,每步都要重新输入 sudo 密码
- 非交互/自动化方式运行直接失败
- 去掉所有 sudo 与 ssh -t,无需 tty,手动与自动化通吃
- ssl 证书目录属主 root 不可读,备份那步保留 || 容错跳过
2026-08-31 16:45:39 +08:00
3717151a7b
fix(deploy): 远端备份排除 models 等大目录,修复备份 tar 卡死
...
远端 inventory-backend/models/clip_vision.onnx(605MB) 为冗余副本(生产挂载 models_prod),
备份命令 sudo tar 未排除它导致 gzip 压缩耗时 10-20 分钟(实测 70s 未完成)看起来像卡死。
- 备份命令增加 --exclude=inventory-backend/{models,uploads,pgdata,pgdata_docker}
- 与本地打包 --exclude 保持一致,排除后备份 1.1s 完成
2026-08-31 16:39:59 +08:00
5bd6fc6272
fix(web): 出库记录类型映射补充 LOSS(盘亏出库) 中文显示
...
扫码出库下拉存在「盘亏出库 LOSS」选项,历史记录中已存在 LOSS 类型数据,
但出库记录页 formatType/getTagType 翻译表缺失 LOSS 映射,导致记录原样显示英文 LOSS。
补充映射后 LOSS 显示为中文「盘亏出库」黄色标签,与其他出库类型口径一致。
2026-08-31 16:12:18 +08:00
893e7250db
fix(api): update-stocktake-quantity 按 session_id 隔离更新,防止跨会话误改
...
后端 update_stocktake_quantity 原只按 stock_id+source_table 查草稿,
不同盘点会话会相互覆盖实盘数。后端增加 session_id 过滤,
前端 handleQuantityChange 配套传入当前会话ID,API 类型同步补全。
2026-08-31 16:00:20 +08:00
eb017d881c
perf(api): draft/list 与 stocktake/all-items 改为数据库级分页,消除 N+1
...
- /draft/list: 废弃 query.all() + 逐条查库存/material_base 的 N+1,
改为原生 SQL 连表(草稿 JOIN 三张库存表 + material_base)+ LIMIT/OFFSET 分页
- /stocktake/all-items: 废弃三表 .all() + item.base 懒加载 + 内存切片,
改为 UNION ALL + LEFT JOIN + LIMIT/OFFSET,COUNT 聚合求总数
2026-08-31 16:00:13 +08:00
7ac41bf6fd
fix(web): 继续上次盘点不再拉取全量草稿,直接复用首条草稿的 session_id
...
resumeSession 原在 limit=1 探测后,又发起 limit=500 请求只为取出 session_id,
会触发后端 /draft/list 的全量 N+1 查询导致启动卡顿。
改为直接从第一条草稿提取 session_id,恢复会话零冗余请求。
2026-08-31 16:00:06 +08:00
5249649cfa
fix(stocktake): 扫码未找到物料时显示友好提示而非原始 404 错误
...
- 识别 HTTP 404 状态码 → 显示『条码 [xxx] 未在库存系统中找到,请确认条码是否正确』
- 其他错误 → 显示『查询失败: xxx』
- 扫码失败时振动反馈
2026-08-31 15:21:18 +08:00
6ba20fa3db
fix(stocktake): 修复盘库重复记录 — 去重条件去掉 user_id
...
根因: draft/add 用 (user_id, uuid, session_id) 匹配去重,
同一盘点单多个用户(手机/平板不同账号)操作同一物料时,
每个用户各建一条 → 重复记录。
修复:
- 去重改为 (session_id, uuid) 唯一,不按 user_id 隔离
- 已存在则更新数量并记录最后操作用户
- 清理现有重复数据(保留每组最小id)
- 新增唯一索引 uq_stocktake_draft_session_uuid 防未来再重复
数据库需执行:
DELETE FROM stocktake_draft a USING stocktake_draft b
WHERE a.session_id=b.session_id AND a.uuid=b.uuid AND a.id>b.id;
CREATE UNIQUE INDEX IF NOT EXISTS uq_stocktake_draft_session_uuid
ON stocktake_draft(session_id, uuid);
2026-08-31 15:18:47 +08:00
7a3ffd8ba5
feat(stocktake): 重复扫码提示并确认是否修改
...
问题: 同一个码扫两遍输入两个数,后端 draft/add 直接覆盖,无任何提示
可能误改已盘数量
改进:
- 后端 draft/list 支持 uuid 过滤,可精确查某物料是否已盘
- 扫码弹输入框前,先精确查询该物料是否已盘
- 已盘过 → 弹窗提示『当前实盘为 X,是否修改?』
确认后预填旧值供修改,取消则不改变
2026-08-31 15:13:52 +08:00
2eee792059
fix(stocktake): 删除 pinScannedItem 后多余的右花括号
...
多余的 } 导致 script 括号不匹配,SFC 解析错乱报 Unexpected token
2026-08-31 15:06:30 +08:00
cf76310340
fix(stocktake): 修复模板中 TS 类型注解导致的编译错误
...
row-class-name 的 (row: any) 在 Vue 模板中不合法,去掉类型注解
2026-08-31 15:03:22 +08:00
c6e8c887ec
perf(stocktake): 应盘清单分页 + 扫码置顶高亮
...
性能修复(解决打开费劲):
- get_all_stocktake_items 改为分页返回 {items(当前页), total, total_scanned}
不再三次 .all() 全量加载 + 内存排序
- 前端 fetchAllStockItems 分页拉取(每页200),stats 用后端返回的 total
不依赖全量数组长度
体验优化:
- 扫码成功后将物品置顶到当前表格第一行并浅绿高亮3秒
库管无需翻页找刚扫的物品,'嘀'一下确认数量即可继续
- 主表格行高亮样式 .just-scanned-row
2026-08-31 14:59:22 +08:00
f5aa2f481b
feat(scan): 出库/借库扫码增加未扫清单弹窗
...
- 扫码进度条旁新增「未扫清单 (N)」按钮(有未扫满物料时显示)
- 弹窗列出计划中未扫满的物料:名称/规格/计划数量/已扫数量/待扫数量
- 提供「去扫码」快捷跳转,方便补扫漏掉的物料
- 未扫满 = 计划数量 > 已扫数量(含完全未扫和扫了一部分的情况)
2026-08-31 14:53:20 +08:00
7e281cf285
fix(stocktake): 盘库扫码改为精确匹配,修复漏匹配与性能问题
...
问题:
1. 准确性 bug: 前端用 getStockList({pageSize:10, keyword}) 模糊搜索 + find()
当 SKU 前缀相同、目标不在前10条时,误报'未找到该物料库存'
2. 性能: 每次扫码全表 ilike %x% 搜索 3 张表,不走索引
修复:
- 后端 get_stock_info 改为精确匹配(==)优先,未命中再回退模糊搜索
- 新增 GET /inbound/stock/scan 扫码精确匹配接口,返回唯一命中
- 前端 onScanSuccess/handleManualInput 改用 scanStockByBarcode
一次请求直接命中,不再依赖 pageSize:10 + find()
2026-08-31 14:49:24 +08:00
e026c00a85
refactor(outbound): 移除扫码出库页的强制完结按钮
...
- 删除 create.vue 中「强制完结此单」按钮及对应逻辑
- 完结功能保留在出库审批列表页(approval/index.vue)
- 出库执行页聚焦扫码作业
2026-08-31 14:38:51 +08:00