Files
KCGL/inventory-backend/app
yueli b8d18c71d8 fix(stocktake): 盘点链路按公司隔离,开启新盘点不再清空整表
修复三处跨公司数据污染:

1. /draft/start-new 原本执行 StocktakeDraft.query.all() 后逐条 delete,
   任一库管点「开启新盘点」就会物理删除全公司所有人的盘点进度。
   改为只签发新 session_id,历史数据原样保留;清理走 /draft/clear,
   且强制要求 session_id(不传直接 400),杜绝误清整表。

2. get_stock_info() 全局按 barcode/sku 匹配三张库存表,不同公司的同码
   物料互相串货。新增 company_name 参数,精确与模糊两段查询均经由 base
   关系按 material_base.company_name 过滤;草稿去重键同步改为
   (uuid, session_id, company_name)。

3. 盘点相关读写接口统一施加公司隔离:/draft/list、/draft/add、/draft/clear、
   /variance-report、/draft/merged-list、/stocktake/all-items、
   /stocktake/generate-missing、/stocktake/update-quantity、/export-stocktake、
   /adjust、/scan。

顺带修复 /export-stocktake:差异与相符两张 Sheet 原本不按 session 过滤,
过去依赖 start-new 清空整表才恰好等价于当前会话,现显式按 session_id 过滤,
否则历史会话会被一并导出。

新增接口:
- GET /stocktake/companies   盘点页公司下拉(普通用户只返回本公司,
  避免复用 /inbound/buy/options 时因缺 inbound_buy 权限而 403)
- GET /draft/active-session  该公司最近一次活跃会话,供多设备加入
2026-09-11 11:33:12 +08:00
..
2026-02-09 11:29:37 +08:00