From 12d1f4eca066603184d18abe15a8f94dea022ade Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=A2=81=E6=B5=A9?= <971817787@qq.com> Date: Fri, 12 Dec 2025 00:24:24 +0800 Subject: [PATCH] =?UTF-8?q?feat:=20=E6=B7=BB=E5=8A=A0=E6=97=A5=E5=BF=97?= =?UTF-8?q?=E6=8E=A5=E5=8F=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../app/controllers/task_controller.py | 31 +++++++++++++++++++ 1 file changed, 31 insertions(+) diff --git a/src/backend/app/controllers/task_controller.py b/src/backend/app/controllers/task_controller.py index 4741991..0a30e7e 100644 --- a/src/backend/app/controllers/task_controller.py +++ b/src/backend/app/controllers/task_controller.py @@ -15,6 +15,10 @@ from app.database import ( from app.services.task_service import TaskService from app.services.image_service import ImageService +import os +import glob +from config.algorithm_config import AlgorithmConfig + task_bp = Blueprint('task', __name__) @@ -65,6 +69,33 @@ def get_task_status(task_id, current_user_id): return jsonify(status), 200 +@task_bp.route('//logs', methods=['GET']) +@int_jwt_required +def get_task_logs(task_id, current_user_id): + """获取任务日志""" + task = Task.query.get(task_id) + if not TaskService.ensure_task_owner(task, current_user_id): + return TaskService.json_error('任务不存在或无权限', 404) + + log_dir = AlgorithmConfig.LOGS_DIR + # 匹配模式:*task_{task_id}_*.log + pattern = os.path.join(log_dir, f'*task_{task_id}_*.log') + log_files = glob.glob(pattern) + + if not log_files: + return jsonify({'logs': '暂无日志'}), 200 + + # 如果有多个,取修改时间最新的一个 + latest_log = max(log_files, key=os.path.getmtime) + + try: + with open(latest_log, 'r', encoding='utf-8') as f: + content = f.read() + return jsonify({'logs': content}), 200 + except Exception as e: + return TaskService.json_error(f'读取日志失败: {str(e)}', 500) + + @task_bp.route('//cancel', methods=['POST']) @int_jwt_required def cancel_task(task_id, current_user_id):