feat:新增投顾agent和nl2sqlagent
This commit is contained in:
@@ -0,0 +1,50 @@
|
||||
"""投顾 Agent 审计日志写入。"""
|
||||
from __future__ import annotations
|
||||
|
||||
import json
|
||||
|
||||
from sqlalchemy import text
|
||||
|
||||
from common.common_const import AUDIT_AGENT_CHAT_CALL, AUDIT_DRAFT_DISCARD, AUDIT_DRAFT_SAVE
|
||||
|
||||
|
||||
def audit_action_for_path(path: str) -> str:
|
||||
if path.endswith("/save"):
|
||||
return AUDIT_DRAFT_SAVE
|
||||
if path.endswith("/operate"):
|
||||
return AUDIT_DRAFT_DISCARD
|
||||
return AUDIT_AGENT_CHAT_CALL
|
||||
|
||||
|
||||
async def write_advisor_audit(
|
||||
db,
|
||||
*,
|
||||
user,
|
||||
action: str,
|
||||
target: str | None,
|
||||
trace_id: str,
|
||||
detail: dict | None = None,
|
||||
status: str = "成功",
|
||||
) -> None:
|
||||
statement = text(
|
||||
"""
|
||||
INSERT INTO audit_log
|
||||
(user_id, username, module, action, target, detail, trace_id, status)
|
||||
VALUES
|
||||
(:user_id, :username, :module, :action, :target, :detail, :trace_id, :status)
|
||||
"""
|
||||
)
|
||||
await db.execute(
|
||||
statement,
|
||||
{
|
||||
"user_id": getattr(user, "id", None),
|
||||
"username": getattr(user, "username", None),
|
||||
"module": "advisor_agent",
|
||||
"action": action,
|
||||
"target": target,
|
||||
"detail": json.dumps(detail or {}, ensure_ascii=False),
|
||||
"trace_id": trace_id,
|
||||
"status": status,
|
||||
},
|
||||
)
|
||||
await db.commit()
|
||||
Reference in New Issue
Block a user