feat:新增投顾agent和nl2sqlagent
This commit is contained in:
+26
@@ -7,6 +7,7 @@ from model.sys_user import SysUser
|
||||
from repositories.sys_user import SysUserRepo
|
||||
from service.auth import decode_token
|
||||
from utils.exceptions import AuthError, ForbiddenError
|
||||
from service.advisor_agent.audit import write_advisor_audit, audit_action_for_path
|
||||
|
||||
|
||||
KNOWLEDGE_OPERATOR_ROLES = {"ADMIN", "KNOWLEDGE_ADMIN", "KNOWLEDGE_OPERATOR", "运营"}
|
||||
@@ -53,3 +54,28 @@ async def require_risk_officer(user: SysUser = Depends(get_current_user)) -> Sys
|
||||
if user.user_type != "EMPLOYEE" or user.employee_role != "风控专员":
|
||||
raise ForbiddenError("仅风控专员可执行风控处置")
|
||||
return user
|
||||
|
||||
async def require_advisor(user: SysUser = Depends(get_current_user)) -> SysUser:
|
||||
"""Allow only advisor employees to access the advisor workbench."""
|
||||
if user.user_type != "EMPLOYEE" or user.employee_role not in {"投顾", "ADMIN"}:
|
||||
raise ForbiddenError("仅投顾人员可以访问投顾工作台")
|
||||
return user
|
||||
|
||||
|
||||
async def audited_advisor(request: Request, db: AsyncSession = Depends(get_db)):
|
||||
"""Authenticate an advisor Agent request and leave a failure audit trail."""
|
||||
try:
|
||||
user = await get_current_user(request, db)
|
||||
if user.user_type != "EMPLOYEE" or user.employee_role not in {"投顾", "ADMIN"}:
|
||||
raise ForbiddenError("仅投顾人员可以访问 advisor_agent")
|
||||
yield user
|
||||
except Exception:
|
||||
await write_advisor_audit(
|
||||
db,
|
||||
user=None,
|
||||
action=audit_action_for_path(request.url.path),
|
||||
target=None,
|
||||
trace_id=request.headers.get("X-Trace-Id", ""),
|
||||
status="失败",
|
||||
)
|
||||
raise
|
||||
Reference in New Issue
Block a user