""" 日志服务 - 记录各类操作日志 实现日志不可删除策略 """ from ..database import SessionLocal from ..models import OperationLog, AuditLog, TokenUsageLog import uuid class LogService: @staticmethod def log_operation(user_id: str, username: str, action: str, target: str = None, target_id: str = None, detail: str = None, ip: str = None): """记录用户操作日志""" db = SessionLocal() try: log = OperationLog( id=str(uuid.uuid4()), user_id=user_id, username=username, action=action, target=target, target_id=target_id, detail=detail, ip=ip, ) db.add(log) db.commit() finally: db.close() @staticmethod def log_audit(admin_id: str, admin_name: str, action: str, target_type: str = None, target_id: str = None, detail: str = None): """记录管理员审计日志""" db = SessionLocal() try: log = AuditLog( id=str(uuid.uuid4()), admin_id=admin_id, admin_name=admin_name, action=action, target_type=target_type, target_id=target_id, detail=detail, ) db.add(log) db.commit() finally: db.close() @staticmethod def log_token_usage(user_id: str, model_id: str = None, model_name: str = None, app_id: str = None, app_name: str = None, conversation_id: str = None, prompt_tokens: int = 0, completion_tokens: int = 0, total_tokens: int = 0, cost: float = 0): """记录Token消耗日志""" db = SessionLocal() try: log = TokenUsageLog( id=str(uuid.uuid4()), user_id=user_id, model_id=model_id, model_name=model_name, app_id=app_id, app_name=app_name, conversation_id=conversation_id, prompt_tokens=prompt_tokens, completion_tokens=completion_tokens, total_tokens=total_tokens, cost=cost, ) db.add(log) db.commit() finally: db.close()