Files
group_xinghuo_jinrong/app/api/guard.py
T

46 lines
1.4 KiB
Python

"""Input guard endpoints."""
from __future__ import annotations
from fastapi import APIRouter, Depends, Request
from app.api.deps import require_permission
from app.model.schemas import AuthContext, GuardCheckRequest
from app.service.audit_service import audit_service
from app.service.input_guard_service import input_guard_service
from app.utils.exceptions import GuardBlockedError
from app.utils.response import success_response
router = APIRouter()
GUARD_CHECK_DEP = Depends(require_permission("guard:check"))
@router.post("/check")
def check_input(
payload: GuardCheckRequest,
request: Request,
auth: AuthContext = GUARD_CHECK_DEP,
):
try:
result = input_guard_service.check_text(payload.content)
except GuardBlockedError as exc:
audit_service.record(
trace_id=auth.trace_id,
event_type="input_guard_blocked",
actor_id=auth.user_id,
agent_type="platform",
decision=exc.data["guard_type"] if exc.data else "blocked",
input_summary={"length": len(payload.content)},
)
raise
audit_service.record(
trace_id=auth.trace_id,
event_type="input_guard_check",
actor_id=auth.user_id,
agent_type="platform",
decision=result["action"],
input_summary={"length": len(payload.content)},
)
return success_response(request, result)