3f964614e36722d952cb1710d494af2b4a4b94b8
- /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 层验证唯一索引拒绝重复活跃会话
Description
No description provided
Languages
Python
70.2%
CSS
14.9%
Vue
7.6%
HTML
4.2%
TypeScript
3.1%