feat(scrap): 新增对内接口,让 Track 能提交生产报废
料一经出库领用,那条库存行的可用量就扣掉了,走不了标准库存行报废。 本接口内部做两件事:① 走逆向物流「从出库单退回(不良品)」→ 在管不良品; ② 对这笔在管量提交报废申请。两者在**同一个事务**里,要么都成要么都不成。 - 鉴权用 X-API-Key(config.MOM_INTERNAL_API_KEY),与 TRACK_WEBHOOK_KEY 刻意分离:方向相反、权限不同,独立轮换不连坐。未配置一律 503(Fail-Closed), 不静默放行 —— 一个默认开着的写接口比没配好的更危险。 - 刻意收紧:is_defective 恒为 true、need_reissue 恒为 false,都不由请求体 控制。良品分支会往库存行加数量,一个泄漏的密钥就能凭空造库存。 - track_ref 必填:Redis 未部署,唯一索引是唯一的并发防线。 - 退回逻辑从 inbound/stock.py 抽到 services/return_service.py:内部接口没有 JWT,而视图里夹着 get_current_company_filter/_normalize_user_id,不抽没法复用。 API 层保留薄包装,restock 等既有调用方一行不用改。
This commit is contained in:
@ -100,3 +100,17 @@ class Config:
|
||||
TRACK_ROUTES = json.loads(os.getenv('TRACK_ROUTES', '{}') or '{}')
|
||||
except ValueError as e:
|
||||
raise RuntimeError(f'TRACK_ROUTES 不是合法 JSON,请检查环境变量: {e}')
|
||||
|
||||
# =========================================================
|
||||
# 10. 对内接口配置 (接收侧:Track → MOM)
|
||||
# =========================================================
|
||||
# Track 调 MOM 内部接口(如生产报废受理)的共享密钥,请求头 X-API-Key。
|
||||
#
|
||||
# ★ 与 TRACK_WEBHOOK_KEY 刻意分离,不复用:
|
||||
# · 方向相反 —— 那个是 MOM 发给 Track 的凭证,这个是 Track 发给 MOM 的;
|
||||
# · 权限不同 —— 本密钥能发起报废审批(间接影响台账与成本),
|
||||
# 万一泄漏,两边各自轮换即可,不会连坐。
|
||||
#
|
||||
# ★ 未配置时内部接口一律返回 503(Fail-Closed),**不做静默放行** ——
|
||||
# 一个默认开着的写接口,比一个没配好的接口危险得多。
|
||||
MOM_INTERNAL_API_KEY = os.getenv('MOM_INTERNAL_API_KEY', '')
|
||||
|
||||
Reference in New Issue
Block a user