yueli
3f964614e3
feat(stocktake): start-new 落库会话配置,active-session 改查会话表
- /draft/start-new 接收 mode / scope_type / scope_config,插入一条
StocktakeSession(status='active')。同一公司原有活跃会话先置为 finished
(同一事务),否则会撞 uq_stocktake_session_one_active。
公司取值:普通用户强制本公司;跨域角色必须显式指定,否则 400。
scope_type 目前只放行 'full' —— 抽盘的范围过滤尚未实现,此时放行会导致
结束盘点时 generate-missing 把抽盘范围外的库存批量标成盘亏。
- /draft/active-session 改为直接查 stocktake_session
(company_name + status='active'),并返回 mode / scope_type 供前端展示。
旧实现靠 max(scan_time) 从草稿行猜,空会话识别不了。
- /stocktake/generate-missing 漏盘比对完成后把会话置为 finished,
否则 active-session 会继续把它当活跃会话,其他 PDA 会加入一个已结束的盘点。
实测:
① 超管+IRIS 创建 blind/full 会话 → 200
② SALES/IRIS 查活跃会话 → 拿到同一 session_id 与 mode=blind
(scanned=0 的空会话也能查到,旧实现此处返回 null)
③ 再开一轮 → superseded_count=1,旧的转 finished
④ scope_type=active → 400「活跃库位抽盘尚未实现」
⑤ DB 层验证唯一索引拒绝重复活跃会话
2026-09-11 13:28:49 +08:00
..
2026-04-08 18:34:48 +08:00
2026-09-11 12:41:27 +08:00
2026-09-11 10:34:15 +08:00
2026-07-15 11:11:40 +08:00
2026-09-11 10:34:15 +08:00
2026-09-10 14:16:27 +08:00
2026-09-11 10:34:15 +08:00
2026-09-10 14:16:27 +08:00
2026-09-11 13:28:49 +08:00