feat: 核心模块增强 — 加密 + 运行时配置 + 日志缓冲

- crypto.py: API Key 加密/解密工具
- runtime_config.py: 运行时动态配置管理
- log_buffer.py: 内存日志缓冲区
- config.py: 新增加密配置项
- http_client.py: 增强重试和错误处理
This commit is contained in:
shangfangjian
2026-09-19 11:58:03 +08:00
parent b3e2c52b49
commit 786f10aa11
57 changed files with 3178 additions and 488 deletions
+9 -5
View File
@@ -1,7 +1,7 @@
"""Pydantic schemas。"""
from __future__ import annotations
from datetime import datetime
from datetime import date, datetime
from typing import Any
from pydantic import BaseModel, Field
@@ -53,6 +53,8 @@ class PredictOut(BaseModel):
mode: str = "single"
pred_home_goals: float | None
pred_away_goals: float | None
alt_pred_home_goals: int | None = None
alt_pred_away_goals: int | None = None
pred_1x2: str | None
subjective_confidence: float | None
reasoning: str | None
@@ -71,6 +73,8 @@ class PredictionOut(BaseModel):
mode: str = "single"
pred_home_goals: float | None
pred_away_goals: float | None
alt_pred_home_goals: int | None = None
alt_pred_away_goals: int | None = None
pred_1x2: str | None
subjective_confidence: float | None
reasoning: str | None
@@ -82,10 +86,10 @@ class PredictionOut(BaseModel):
class IngestBzzoiroRequest(BaseModel):
leagues: list[str] = Field(..., description="联赛代码列表,如 ['E0','SP1']")
leagues: list[str] = Field(default_factory=list, description="联赛代码列表,如 ['E0','SP1'];空 = 全部已知联赛")
date_from: str | None = None
date_to: str | None = None
status: str = "finished"
status: str | None = Field(None, description="finished/scheduled;空 = 两者都采集")
class IngestResponse(BaseModel):
@@ -96,8 +100,8 @@ class IngestResponse(BaseModel):
class IngestUnderstatRequest(BaseModel):
league: str = Field(..., description="联赛代码,如 'E0'")
season: int = Field(..., description="赛季起始年,如 2025 表示 2025-2026 赛季")
league: str | None = Field(None, description="联赛代码,如 'E0';空 = 全部已知联赛")
season: int = Field(default_factory=lambda: date.today().year, description="赛季起始年,如 2025 表示 2025-2026 赛季")
class IngestInjuriesRequest(BaseModel):