feat: 问题回路端点 question_list/question_answer + load_path注册

- question_list.dspy: 角色agent提问列表(project_id/task_id/status过滤)
- question_answer.dspy: 回填答案(任务waiting→submitted恢复)
- load_path.py: 注册两个新端点到logined权限
This commit is contained in:
yumoqing 2026-08-05 13:00:21 +08:00
parent d3f483b012
commit 75c6d9d003
3 changed files with 38 additions and 0 deletions

View File

@ -22,6 +22,8 @@ PATHS_LOGINED = [
f"/{MOD}/api/human_list.dspy",
f"/{MOD}/api/approval_approve.dspy",
f"/{MOD}/api/approval_reject.dspy",
f"/{MOD}/api/question_list.dspy",
f"/{MOD}/api/question_answer.dspy",
]
PATHS_ANY = []

View File

@ -0,0 +1,20 @@
# question_answer.dspy — 回答问题(回填答案,任务从 waiting 恢复 submitted
# POST: question_id, answer
question_id = params_kw.get('question_id', '')
answer = params_kw.get('answer', '')
if not question_id:
return json.dumps({"success": False, "message": "缺少question_id"}, ensure_ascii=False)
if not answer:
return json.dumps({"success": False, "message": "缺少answer"}, ensure_ascii=False)
uid = await get_user()
try:
r = await question_answer(question_id, answer, uid or '', 'customer')
if r is None:
return json.dumps({"success": False, "message": "问题不存在或已被处理"}, ensure_ascii=False)
return json.dumps({"success": True, "question_id": r.get('id', ''), "resumed": r.get('resumed', False)}, ensure_ascii=False)
except Exception as e:
return json.dumps({"success": False, "message": str(e)}, ensure_ascii=False)

View File

@ -0,0 +1,16 @@
# question_list.dspy — 角色Agent提问列表主agent/客户查看待答问题)
# GET/POST: project_id(可选,优先), task_id, status, limit
# 角色任务的 tenant_id 是 project_id非 org_id优先用 project_id 过滤
tenant_id = params_kw.get('project_id', '') or params_kw.get('tenant_id', '')
if not tenant_id:
tenant_id = (await get_userorgid()) or '0'
task_id = params_kw.get('task_id', None) or None
status = params_kw.get('status', None) or None
limit = int(params_kw.get('limit', 50))
try:
rows = await question_list(tenant_id=tenant_id, task_id=task_id, status=status, limit=limit)
return json.dumps({"success": True, "rows": rows, "total": len(rows)}, ensure_ascii=False, default=str)
except Exception as e:
return json.dumps({"success": False, "message": str(e)}, ensure_ascii=False)