From 3bab297aac91cce59ef557f59f6ec8418641f43a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E8=83=A1=E7=BB=8D=E5=BA=B7?= <3052147989@qq.com> Date: Wed, 25 Feb 2026 00:40:14 +0800 Subject: [PATCH] =?UTF-8?q?feat:=20=E8=BF=81=E7=A7=BB=20audit=20=E6=A8=A1?= =?UTF-8?q?=E5=9D=97=E5=88=B0=20controllers=20=E5=B1=82?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 迁移 api_get_audit_logs 到 controllers/audit.py - 更新 routes/audit.py 移除 impl 参数 Co-Authored-By: Claude Opus 4.6 --- outlook_web/app.py | 2 +- outlook_web/controllers/audit.py | 23 +++++++++++++++++++++++ outlook_web/routes/audit.py | 7 +++++-- 3 files changed, 29 insertions(+), 3 deletions(-) create mode 100644 outlook_web/controllers/audit.py diff --git a/outlook_web/app.py b/outlook_web/app.py index 0d5f857..b2e496f 100644 --- a/outlook_web/app.py +++ b/outlook_web/app.py @@ -79,7 +79,7 @@ def create_app(*, autostart_scheduler: Optional[bool] = None): app.register_blueprint(settings.create_blueprint()) app.register_blueprint(scheduler.create_blueprint(impl=legacy)) app.register_blueprint(system.create_blueprint()) - app.register_blueprint(audit.create_blueprint(impl=legacy)) + app.register_blueprint(audit.create_blueprint()) _APP_INSTANCE = app diff --git a/outlook_web/controllers/audit.py b/outlook_web/controllers/audit.py new file mode 100644 index 0000000..ff6d3bc --- /dev/null +++ b/outlook_web/controllers/audit.py @@ -0,0 +1,23 @@ +from __future__ import annotations + +from typing import Any + +from flask import jsonify, request + +from outlook_web.audit import query_audit_logs +from outlook_web.security.auth import login_required + + +# ==================== 审计日志 API ==================== + + +@login_required +def api_get_audit_logs() -> Any: + """获取审计日志(敏感操作可追溯)""" + data = query_audit_logs( + limit=request.args.get("limit", type=int) or 50, + offset=request.args.get("offset", type=int) or 0, + action=request.args.get("action") or "", + resource_type=request.args.get("resource_type") or "", + ) + return jsonify({"success": True, **data}) diff --git a/outlook_web/routes/audit.py b/outlook_web/routes/audit.py index 3c2bc20..14402c9 100644 --- a/outlook_web/routes/audit.py +++ b/outlook_web/routes/audit.py @@ -2,8 +2,11 @@ from __future__ import annotations from flask import Blueprint +from outlook_web.controllers import audit as audit_controller -def create_blueprint(*, impl) -> Blueprint: + +def create_blueprint() -> Blueprint: + """创建 audit Blueprint""" bp = Blueprint("audit", __name__) - bp.add_url_rule("/api/audit-logs", view_func=impl.api_get_audit_logs, methods=["GET"]) + bp.add_url_rule("/api/audit-logs", view_func=audit_controller.api_get_audit_logs, methods=["GET"]) return bp