fix: 二维码接口去鉴权(修复破图)+ 产品序列号加部门前缀

1) 二维码破图
   /products/qrcode/{sn} 带了 Depends(get_current_user),而前端是用
   <img src="/api/v1/products/qrcode/{sn}"> 引用它的 —— <img> 无法携带
   Authorization 头,请求必然 401,页面上就是破图(同时刷大量 401 审计)。
   该接口不查库、只把调用方传进来的字符串渲染成二维码,没有数据泄露面,
   故去掉鉴权。刻意不做 ?token= 兜底:JWT 进 URL 会渗进访问日志、浏览器
   历史与 Referer,比它想解决的问题更糟。
   实测:HTTP 200 / image/png / 300x300。

2) 序列号部门前缀
   新增 config.SERIAL_PREFIX(LICA 为 "L"),counter_service 生成
   {前缀}{15 位 HEX},总长仍严格 16 位 —— products.serial_number 是
   String(16),前端 TaskTreeViewer / ManualInput / ScanPage 多处按 16 位
   校验,不能改总长。IRIS 实例该值为空串,格式保持原样。
   实测 LICA 生成 L000000000000002。
   前端本就兼容带字母的序列号:TaskTreeViewer 的占位符示例就是
   X20260801000001,ScanPage 的 replace(/[^a-zA-Z0-9]/g,"") 也不会滤掉 L。
This commit is contained in:
2026-09-21 16:34:56 +08:00
parent f04c7e0b99
commit f9f3d90f96
3 changed files with 45 additions and 13 deletions

View File

@ -38,6 +38,9 @@ class Settings(BaseSettings):
# 全仓库的部门过滤点只有三处 SQL登录、人员列表、物料选择器全部引用这里。
ORG_DEPARTMENT: str = "LICA" # MOM sys_user.department 的取值
MATERIAL_CATEGORY_PREFIX: str = "LICA/" # MOM material_base.category 的部门前缀
# 产品序列号前缀(产品身份证 / 二维码内容)。留空则生成纯 16 位 HEX。
# LICA 用 "L" 打头一眼区分部门来源IRIS 实例保持空串不受影响。
SERIAL_PREFIX: str = "L"
@property
def CORS_ORIGINS_LIST(self) -> list[str]: