- 统一设置系统:create_scheduler_service 读取 DB 设置覆盖默认值 - 修复 ProxyRepository.update_score 误删所有无效代理的 SQL - ValidationQueue:修复 Worker 计数漂移与启动恢复任务饿死 - SchedulerService:移除 drain() 阻塞,主循环可正常响应 stop - TaskService:在调度器周期内自动清理过期任务,防止内存泄漏 - lifespan/conftest:规范关闭顺序,消除 Event loop closed 警告 - Repository:异常日志增加 exc_info,今日新增按 created_at 统计 - ValidatorService:防止 HTTP session 重复关闭,移除 SOCKS 多余 close - 前端:补全 pluginsStore.isEmpty,ProxyList 最低分数上限改为 100 - 删除 config.py 中冗余的 cors_origins_list property
43 lines
1.2 KiB
Python
43 lines
1.2 KiB
Python
"""API 通用工具函数"""
|
|
from typing import Any, Optional
|
|
from fastapi.responses import JSONResponse
|
|
|
|
|
|
def success_response(message: str, data: Any = None) -> dict:
|
|
"""成功响应"""
|
|
return {"code": 200, "message": message, "data": data}
|
|
|
|
|
|
def error_response(message: str, code: int = 500) -> JSONResponse:
|
|
"""错误响应"""
|
|
return JSONResponse(
|
|
status_code=code,
|
|
content={"code": code, "message": message, "data": None},
|
|
)
|
|
|
|
|
|
def format_proxy(proxy) -> dict:
|
|
"""格式化代理对象"""
|
|
return {
|
|
"ip": proxy.ip,
|
|
"port": proxy.port,
|
|
"protocol": proxy.protocol,
|
|
"score": proxy.score,
|
|
"response_time_ms": proxy.response_time_ms,
|
|
"last_check": proxy.last_check.isoformat() if proxy.last_check else None,
|
|
}
|
|
|
|
|
|
def format_plugin(plugin) -> dict:
|
|
"""格式化插件对象"""
|
|
return {
|
|
"id": plugin.id,
|
|
"name": plugin.display_name,
|
|
"display_name": plugin.display_name,
|
|
"description": plugin.description,
|
|
"enabled": plugin.enabled,
|
|
"last_run": plugin.last_run.isoformat() if plugin.last_run else None,
|
|
"success_count": plugin.success_count,
|
|
"failure_count": plugin.failure_count,
|
|
}
|