diff --git a/wwwroot/api/agent_project_popup.dspy b/wwwroot/api/agent_project_popup.dspy index 6e2958a..f4f5220 100644 --- a/wwwroot/api/agent_project_popup.dspy +++ b/wwwroot/api/agent_project_popup.dspy @@ -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){"