feat(scrap): 新增报废专用库存查询端点,解耦出库选单权限

报废申请页原复用 /inbound/stock/list,该端点权限是 outbound_selection。
持有 scrap_apply 的角色目前恰好也都持有该权限,故能跑通,但属隐性耦合:
任一角色授权脱钩就会静默 403,被前端 catch 掩盖成「加载库存失败」。

照抄借库既有先例(transactions.py 的 /borrow/stock-list),新增:
  GET /v1/scrap/stock-list  @permission_required('scrap_apply')

★ 同步把 'scrap_apply' 登记进 stock.py 的 SELECTION_PREFIXES。
  _make_price_stripper 仅当前缀为 None 或已在集合中时才剥离价格,
  漏登记会导致价格/成本字段泄露给报废申请人(Fail-Closed 失效)。

实测:OUTBOUND/WAREHOUSE_MGR 均 200,无 token 401,
响应中 unit_price/total_price/sale_price 等价格字段零泄漏。
This commit is contained in:
yueli
2026-09-10 11:32:44 +08:00
parent f556514e72
commit f589962e5c
3 changed files with 29 additions and 1 deletions

View File

@ -27,6 +27,15 @@ export function getScrapRecords(params: any) {
})
}
// 3.1 报废申请专用库存列表独立于出库选单权限Fail-Closed 剥离价格)
export function getScrapStockList(params: { page?: number; pageSize?: number; keyword?: string }) {
return request({
url: '/v1/scrap/stock-list',
method: 'get',
params
})
}
// ==========================================
// 报废申请/审批/执行(新流程,镜像出/借库)
// ==========================================