fix(agent_menus): 项目解析收敛到 get_session_project_id(含悬空引用防护)
不再手写 session→项目解析(与解析层语义漂移是「会话有项目、入口说没有」的根因之一)
This commit is contained in:
parent
f5689defa8
commit
b5c7dd3f44
@ -14,26 +14,15 @@ session_id = (params_kw or {}).get('session_id', '') or ''
|
||||
default_pipeline_id = (params_kw or {}).get('pipeline_id', '') or ''
|
||||
|
||||
# 1. 解析当前产线:当前会话项目 → sd_projects.pipeline_id
|
||||
# 统一走 get_session_project_id(含悬空引用防护:指向已删除项目的记录自愈清理并回退全局)。
|
||||
# 禁止在此重复实现 session→项目解析——多份实现语义漂移正是「会话有项目、入口说没有」的根因。
|
||||
pipeline_id = ''
|
||||
pid = ''
|
||||
try:
|
||||
from pipeline_service.workspace import get_session_project_id
|
||||
dbname = get_module_dbname('pipeline_core')
|
||||
async with DBPools().sqlorContext(dbname) as sor:
|
||||
# 按会话解析项目:session 表优先,回退全局(多 tab 各自项目,互不覆盖)
|
||||
if session_id:
|
||||
try:
|
||||
_srecs = await sor.sqlExe(
|
||||
"SELECT current_project_id FROM pipeline_session_settings "
|
||||
"WHERE user_id=${u}$ AND session_id=${s}$",
|
||||
{"u": uid, "s": session_id})
|
||||
pid = getattr(_srecs[0], 'current_project_id', '') if _srecs else ''
|
||||
except Exception:
|
||||
pid = ''
|
||||
if not pid:
|
||||
recs = await sor.sqlExe(
|
||||
"SELECT current_project_id FROM pipeline_agent_settings WHERE user_id=${u}$",
|
||||
{"u": uid})
|
||||
pid = getattr(recs[0], 'current_project_id', '') if recs else ''
|
||||
pid = await get_session_project_id(sor, uid, session_id) or ''
|
||||
if pid:
|
||||
precs = await sor.sqlExe(
|
||||
"SELECT pipeline_id FROM sd_projects WHERE id=${p}$", {"p": pid})
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user