29 lines
1.1 KiB
Plaintext
29 lines
1.1 KiB
Plaintext
# my_todos.dspy - 我的待办(跨项目:人类任务 + bug 验收 + 冒泡问题)→ JSON
|
|
|
|
user_id = await get_user()
|
|
if not user_id:
|
|
return json.dumps({"success": False, "error": "未登录"}, ensure_ascii=False)
|
|
|
|
todos = await list_my_human_todos(user_id)
|
|
|
|
# 补项目名
|
|
dbname = get_module_dbname('pipeline-sdlc')
|
|
proj_names = {}
|
|
for t in todos:
|
|
pid = t.get('project_id', '')
|
|
if pid and pid not in proj_names:
|
|
proj_names[pid] = pid
|
|
try:
|
|
async with DBPools().sqlorContext(dbname) as sor:
|
|
_pr = await sor.sqlExe("SELECT name FROM sd_projects WHERE id=${pid}$", {"pid": pid})
|
|
await sor.sqlExe("COMMIT", {})
|
|
if _pr:
|
|
proj_names[pid] = getattr(_pr[0], 'name', '') or pid
|
|
except Exception:
|
|
pass
|
|
t['project_name'] = proj_names.get(pid) or ('(项目已删除)' if pid else '')
|
|
else:
|
|
t['project_name'] = proj_names.get(pid) or ('(项目已删除)' if pid else '')
|
|
|
|
return json.dumps({"success": True, "todos": todos}, ensure_ascii=False, default=str)
|