fix(core): agent_project_popup的GET/POST op撞名——GET op=switch(列表)误入POST分支报'缺少project_id';POST动作改op=do_switch,前端点选脚本同步

This commit is contained in:
yumoqing 2026-09-11 18:33:42 +08:00
parent 166e282d26
commit 3a3e38d15a

View File

@ -4,7 +4,7 @@
# GET op=switch → 项目切换弹窗:列出本产线全部项目 → 选择后关闭,会话进入该项目 # GET op=switch → 项目切换弹窗:列出本产线全部项目 → 选择后关闭,会话进入该项目
# POST op=create → 创建项目(走 project_capability.create_project,带 alloc_project_dir+审计, # POST op=create → 创建项目(走 project_capability.create_project,带 alloc_project_dir+审计,
# 禁止裸 INSERT)+ start_project + 初始迭代 + 写会话项目指针 # 禁止裸 INSERT)+ start_project + 初始迭代 + 写会话项目指针
# POST op=switch → 校验项目归属(产线/机构)后写会话项目指针 # POST op=do_switch → 校验项目归属(产线+本人创建)后写会话项目指针(GET op=switch 是列表)
# 参数:session_id(会话级隔离,多 tab 各自项目) pipeline_id(产线隔离) # 参数:session_id(会话级隔离,多 tab 各自项目) pipeline_id(产线隔离)
# 会话「进入项目」= 写 pipeline_session_settings + pipeline_agent_settings(与 # 会话「进入项目」= 写 pipeline_session_settings + pipeline_agent_settings(与
# AgentExecutor._persist_project 同口径);gateway/菜单/工作空间每次请求实时解析,写完即生效。 # AgentExecutor._persist_project 同口径);gateway/菜单/工作空间每次请求实时解析,写完即生效。
@ -31,7 +31,7 @@ _STATUS_TXT = {
# ══════════════════ POST:创建 / 切换 ══════════════════ # ══════════════════ POST:创建 / 切换 ══════════════════
if _op in ('create', 'switch'): if _op in ('create', 'do_switch'):
if not uid: if not uid:
return json.dumps({"success": False, "error": "请先登录"}, ensure_ascii=False) return json.dumps({"success": False, "error": "请先登录"}, ensure_ascii=False)
if not pipeline_id or pipeline_id == '_generic': if not pipeline_id or pipeline_id == '_generic':
@ -111,7 +111,7 @@ if _op in ('create', 'switch'):
await _enter_project(sor, pid) await _enter_project(sor, pid)
return json.dumps({"success": True, "project_id": pid, "name": name}, ensure_ascii=False) return json.dumps({"success": True, "project_id": pid, "name": name}, ensure_ascii=False)
else: # switch else: # do_switch
pid = (params_kw or {}).get('project_id', '') or '' pid = (params_kw or {}).get('project_id', '') or ''
if not pid: if not pid:
return json.dumps({"success": False, "error": "缺少 project_id"}, ensure_ascii=False) return json.dumps({"success": False, "error": "缺少 project_id"}, ensure_ascii=False)
@ -283,7 +283,7 @@ for p in projects:
_st_txt, _st_color = _STATUS_TXT.get(_st, (_st or '—', '#64748b')) _st_txt, _st_color = _STATUS_TXT.get(_st, (_st or '—', '#64748b'))
_is_cur = (_pid_v == cur_pid) _is_cur = (_pid_v == cur_pid)
_switch_js = ( _switch_js = (
_post_js([('op', "'switch'"), ('project_id', json.dumps(_pid_v)), _post_js([('op', "'do_switch'"), ('project_id', json.dumps(_pid_v)),
('session_id', json.dumps(session_id)), ('session_id', json.dumps(session_id)),
('pipeline_id', json.dumps(pipeline_id))]) ('pipeline_id', json.dumps(pipeline_id))])
+ "if(d.success){" + "if(d.success){"