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