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)