Build lightweight AI agent admin

This commit is contained in:
Codex
2026-06-08 18:14:59 +08:00
commit e164840f43
2530 changed files with 435693 additions and 0 deletions
@@ -0,0 +1,68 @@
#!/usr/bin/env python
# -*- coding: utf-8 -*-
"""Handler 共享工具"""
import logging
from typing import Any, Dict
logger = logging.getLogger(__name__)
def format_size(size_bytes: int) -> str:
"""格式化字节大小"""
if not size_bytes:
return "0 bytes"
if size_bytes >= 1073741824:
return f"{size_bytes / 1073741824:.2f} GB"
if size_bytes >= 1048576:
return f"{size_bytes / 1048576:.2f} MB"
if size_bytes >= 1024:
return f"{size_bytes / 1024:.2f} KB"
return f"{size_bytes} bytes"
def serialize_row(row: Dict[str, Any]) -> Dict[str, Any]:
"""序列化行数据"""
for key, value in row.items():
if hasattr(value, "isoformat"):
row[key] = value.isoformat()
elif isinstance(value, bytes):
row[key] = value.decode("utf-8", errors="replace")
elif isinstance(value, (set, frozenset)):
row[key] = list(value)
return row
def format_connection_error(exc: Exception) -> str:
"""将驱动异常转为可读的错误详情"""
if exc is None:
return "未知错误"
msg = str(exc).strip()
if msg:
return msg
return exc.__class__.__name__
def log_database_connect_failure(
*,
db_type: str,
host: str,
port: int,
user: str = "",
database: str = "",
db_name: str = "",
detail: str,
action: str = "connect",
) -> None:
"""记录数据库连接失败详情到后台日志"""
logger.error(
"Database connection failed [%s]: db_name=%s db_type=%s target=%s:%s "
"database=%s user=%s error=%s",
action,
db_name or "-",
db_type,
host,
port,
database or "-",
user or "-",
detail,
)