29 lines
944 B
Python
29 lines
944 B
Python
from typing import Annotated
|
|
|
|
from fastapi import APIRouter, Depends
|
|
|
|
from app.api.dependencies import DatabaseSession, require_permission
|
|
from app.models.entities import OperationAudit, UserAccount
|
|
from app.schemas.common import ApiResponse
|
|
|
|
router = APIRouter(prefix="/monitoring", tags=["monitoring"])
|
|
|
|
|
|
@router.post("/risk")
|
|
async def monitor_risk(
|
|
payload: dict,
|
|
session: DatabaseSession,
|
|
current_user: Annotated[UserAccount, Depends(require_permission("risk.assess", operate=True))],
|
|
) -> ApiResponse[dict]:
|
|
session.add(
|
|
OperationAudit(
|
|
actor_user_id=current_user.id,
|
|
actor_emp_no=current_user.emp_no,
|
|
action="risk.monitor.add",
|
|
resource_type="risk_assessment",
|
|
resource_id=str(payload.get("subject_id") or ""),
|
|
audit_metadata=payload,
|
|
)
|
|
)
|
|
return ApiResponse(data={"monitored": True, "subject_id": payload.get("subject_id")})
|