From 75c6d9d0037f8c6f427a85f293a4ce6c614d1e1a Mon Sep 17 00:00:00 2001 From: yumoqing Date: Wed, 5 Aug 2026 13:00:21 +0800 Subject: [PATCH] =?UTF-8?q?feat:=20=E9=97=AE=E9=A2=98=E5=9B=9E=E8=B7=AF?= =?UTF-8?q?=E7=AB=AF=E7=82=B9=20question=5Flist/question=5Fanswer=20+=20lo?= =?UTF-8?q?ad=5Fpath=E6=B3=A8=E5=86=8C?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - question_list.dspy: 角色agent提问列表(project_id/task_id/status过滤) - question_answer.dspy: 回填答案(任务waiting→submitted恢复) - load_path.py: 注册两个新端点到logined权限 --- scripts/load_path.py | 2 ++ wwwroot/api/question_answer.dspy | 20 ++++++++++++++++++++ wwwroot/api/question_list.dspy | 16 ++++++++++++++++ 3 files changed, 38 insertions(+) create mode 100644 wwwroot/api/question_answer.dspy create mode 100644 wwwroot/api/question_list.dspy diff --git a/scripts/load_path.py b/scripts/load_path.py index e08c94b..e7012ca 100644 --- a/scripts/load_path.py +++ b/scripts/load_path.py @@ -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 = [] diff --git a/wwwroot/api/question_answer.dspy b/wwwroot/api/question_answer.dspy new file mode 100644 index 0000000..728aa26 --- /dev/null +++ b/wwwroot/api/question_answer.dspy @@ -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) diff --git a/wwwroot/api/question_list.dspy b/wwwroot/api/question_list.dspy new file mode 100644 index 0000000..4725824 --- /dev/null +++ b/wwwroot/api/question_list.dspy @@ -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)