fix(workspace): 上传端点透传pipeline_id——通用助手(_generic)工作空间上传报'目标目录不存在'根因

workspace_files.dspy 构造 upload_url 只带 session_id 不带 pipeline_id,
通用助手入口(pipeline_id=_generic、无session_id)下 workspace_upload.dspy
走不到 _generic 分支→回退全局 current_project_id(其他产线项目)→
resolve到别的项目目录→'目标目录不存在: projects/调研1'。
对齐 tree/files/delete 端点的 session_id+pipeline_id 双透传模式。
2026-09-17 实测:不带pipeline_id复现报错,带pipeline_id=_generic上传成功。
This commit is contained in:
ymq 2026-09-17 21:30:20 +08:00
parent bc4ee5827e
commit f0c4c10f79

View File

@ -42,7 +42,16 @@ full_dir = resolve_workspace_path(project_dir, space_dir, folder_id)
if not os.path.isdir(full_dir):
return {"widgettype": "Text", "options": {"otext": "目录不可用: ${p0}", "text": "目录不可用: ${p0}", "i18n": True, "i18n_params": {"p0": str(folder_id)}, "cfontsize": 0.9}}
upload_url = entire_url("/pipeline-sdlc/api/workspace_upload.dspy") + (("?session_id=" + session_id) if session_id else "")
# 上传端点必须与列表端点同参数session_id + pipeline_id 都要透传。
# 只传 session_id 的旧代码在通用助手pipeline_id=_generic、无 session_id
# 让 workspace_upload.dspy 走不到 _generic 分支,解析到别的项目目录 →
# 上传报「目标目录不存在」2026-09-17 实测根因)。
_uq = []
if session_id:
_uq.append("session_id=" + session_id)
if pipeline_id:
_uq.append("pipeline_id=" + pipeline_id)
upload_url = entire_url("/pipeline-sdlc/api/workspace_upload.dspy") + (("?" + "&".join(_uq)) if _uq else "")
# 拖拽上传脚本:读取文件 → base64 → form-encoded POST → 刷新浏览器
upload_script = (