From ca720bd811e3870e2d74f3f2e020655a9a650cae Mon Sep 17 00:00:00 2001 From: Kevin Hu Date: Mon, 18 Aug 2025 13:05:29 +0800 Subject: [PATCH] Fix: save team's canvas issue. (#9518) ### What problem does this PR solve? ### Type of change - [x] Bug Fix (non-breaking change which fixes an issue) --- agent/tools/code_exec.py | 12 ++++++++++-- api/apps/canvas_app.py | 2 +- graphrag/general/index.py | 2 +- rag/svr/task_executor.py | 2 +- 4 files changed, 13 insertions(+), 5 deletions(-) diff --git a/agent/tools/code_exec.py b/agent/tools/code_exec.py index be5b29561..1457a2847 100644 --- a/agent/tools/code_exec.py +++ b/agent/tools/code_exec.py @@ -67,9 +67,17 @@ class CodeExecParam(ToolParamBase): "description": """ This tool has a sandbox that can execute code written in 'Python'/'Javascript'. It recieves a piece of code and return a Json string. Here's a code example for Python(`main` function MUST be included): -def main(arg1: str, arg2: str) -> dict: +def main() -> dict: + \"\"\" + Generate Fibonacci numbers within 100. + \"\"\" + def fibonacci_recursive(n): + if n <= 1: + return n + else: + return fibonacci_recursive(n-1) + fibonacci_recursive(n-2) return { - "result": arg1 + arg2, + "result": fibonacci_recursive(100), } Here's a code example for Javascript(`main` function MUST be included and exported): diff --git a/api/apps/canvas_app.py b/api/apps/canvas_app.py index c1ce1d88a..29dbf8e61 100644 --- a/api/apps/canvas_app.py +++ b/api/apps/canvas_app.py @@ -74,11 +74,11 @@ def rm(): @login_required def save(): req = request.json - req["user_id"] = current_user.id if not isinstance(req["dsl"], str): req["dsl"] = json.dumps(req["dsl"], ensure_ascii=False) req["dsl"] = json.loads(req["dsl"]) if "id" not in req: + req["user_id"] = current_user.id if UserCanvasService.query(user_id=current_user.id, title=req["title"].strip()): return get_data_error_result(message=f"{req['title'].strip()} already exists.") req["id"] = get_uuid() diff --git a/graphrag/general/index.py b/graphrag/general/index.py index 9adfab076..345f83850 100644 --- a/graphrag/general/index.py +++ b/graphrag/general/index.py @@ -57,7 +57,7 @@ async def run_graphrag( ): chunks.append(d["content_with_weight"]) - with trio.fail_after(len(chunks)*60): + with trio.fail_after(max(120, len(chunks)*120)): subgraph = await generate_subgraph( LightKGExt if "method" not in row["kb_parser_config"].get("graphrag", {}) or row["kb_parser_config"]["graphrag"]["method"] != "general" diff --git a/rag/svr/task_executor.py b/rag/svr/task_executor.py index 4477a825f..27114154b 100644 --- a/rag/svr/task_executor.py +++ b/rag/svr/task_executor.py @@ -302,7 +302,7 @@ async def build_chunks(task, progress_callback): # If the image is in RGBA mode, convert it to RGB mode before saving it in JPEG format. if d["image"].mode in ("RGBA", "P"): converted_image = d["image"].convert("RGB") - d["image"].close() # Close original image + #d["image"].close() # Close original image d["image"] = converted_image try: d["image"].save(output_buffer, format='JPEG')