dca4f2d618
- web/core.py 858→236行,拆出 schemas/middleware/auth/diagnostics - ops_api.py 2876→4个 domain 模块 (users/payments/health/config) - DBManager Supabase HTTP 调用提取到 SupabaseAdminClient - 新增 LockedSQLiteConnection 统一多进程读写锁 - 新增 WeatherCacheManager 替代 12 个独立缓存字典 - METAR 缓存迁移至统一缓存管理器 - analysis_service 提取 _build_intraday_meteorology 到独立模块 - DEB 改进:偏差惩罚、分歧回退、自适应 lookback (MAE ↓12.6%) - 新增 PyTorch 注意力模型 deb_attention.py (数据积累后启用) - 新增 torch 到 requirements.lock
49 lines
1.4 KiB
Python
49 lines
1.4 KiB
Python
"""Pydantic request models for PolyWeather auth-related endpoints."""
|
|
|
|
from typing import Optional
|
|
|
|
from pydantic import BaseModel, Field
|
|
|
|
|
|
class TelegramLoginRequest(BaseModel):
|
|
id: int
|
|
first_name: Optional[str] = None
|
|
last_name: Optional[str] = None
|
|
username: Optional[str] = None
|
|
photo_url: Optional[str] = None
|
|
auth_date: int
|
|
hash: str = Field(..., min_length=10)
|
|
|
|
|
|
class TelegramBindTokenRequest(BaseModel):
|
|
token: str = Field(..., min_length=8)
|
|
|
|
|
|
class ReferralApplyRequest(BaseModel):
|
|
code: str = Field(..., min_length=3, max_length=32)
|
|
|
|
|
|
class AnalyticsEventRequest(BaseModel):
|
|
event_type: str = Field(..., min_length=3, max_length=64)
|
|
client_id: Optional[str] = Field(default=None, max_length=128)
|
|
session_id: Optional[str] = Field(default=None, max_length=128)
|
|
payload: dict = Field(default_factory=dict)
|
|
|
|
|
|
class UserFeedbackRequest(BaseModel):
|
|
category: str = Field(default="bug", min_length=2, max_length=40)
|
|
message: str = Field(..., min_length=3, max_length=5000)
|
|
source: str = Field(default="terminal", max_length=40)
|
|
contact: Optional[str] = Field(default=None, max_length=180)
|
|
context: dict = Field(default_factory=dict)
|
|
|
|
|
|
class GrantPointsRequest(BaseModel):
|
|
email: str = Field(..., min_length=3)
|
|
points: int = Field(..., gt=0, le=100000)
|
|
|
|
|
|
class FeedbackRewardRequest(BaseModel):
|
|
points: int = Field(..., gt=0, le=100000)
|
|
reason: str = Field(default="", max_length=500)
|