feat(proxy): 增加 0.1.x 到 0.2.0 配置自动迁移,放宽 max_retries 上限至 999

- proxy: 启动时检测旧版配置并自动迁移(delegate_* -> upstream_*、单服务器 -> [[servers]]),备份原文件为 .v1.bak
- proxy: 升级后 systemd 重启改为 best-effort,失败不中断升级流程
- provider: max_retries 上限从 10 放宽到 999(前端、后端模型同步调整)
This commit is contained in:
fawney19
2026-02-27 19:10:47 +08:00
parent 7cb007b445
commit ddeb357c0e
7 changed files with 132 additions and 12 deletions

View File

@@ -232,7 +232,7 @@ class CreateProviderRequest(BaseModel):
is_active: bool | None = Field(True, description="是否启用")
concurrent_limit: int | None = Field(None, ge=0, description="并发限制")
# 请求配置(从 Endpoint 迁移)
max_retries: int | None = Field(2, ge=0, le=10, description="最大重试次数")
max_retries: int | None = Field(2, ge=0, le=999, description="最大重试次数")
proxy: ProxyConfig | None = Field(None, description="代理配置")
# 超时配置(秒),为空时使用全局配置
stream_first_byte_timeout: float | None = Field(
@@ -341,7 +341,7 @@ class UpdateProviderRequest(BaseModel):
is_active: bool | None = None
concurrent_limit: int | None = Field(None, ge=0)
# 请求配置(从 Endpoint 迁移)
max_retries: int | None = Field(None, ge=0, le=10, description="最大重试次数")
max_retries: int | None = Field(None, ge=0, le=999, description="最大重试次数")
proxy: ProxyConfig | None = Field(None, description="代理配置")
# 超时配置(秒),为空时使用全局配置
stream_first_byte_timeout: float | None = Field(

View File

@@ -274,7 +274,7 @@ class ProviderEndpointCreate(BaseModel):
description="请求体规则列表,支持 set/drop/rename/append/insert/regex_replace 操作",
)
max_retries: int = Field(default=2, ge=0, le=10, description="最大重试次数")
max_retries: int = Field(default=2, ge=0, le=999, description="最大重试次数")
# 额外配置
config: dict[str, Any] | None = Field(default=None, description="额外配置JSON")
@@ -338,7 +338,7 @@ class ProviderEndpointUpdate(BaseModel):
description="请求体规则列表,支持 set/drop/rename/append/insert/regex_replace 操作",
)
max_retries: int | None = Field(default=None, ge=0, le=10, description="最大重试次数")
max_retries: int | None = Field(default=None, ge=0, le=999, description="最大重试次数")
is_active: bool | None = Field(default=None, description="是否启用")
config: dict[str, Any] | None = Field(default=None, description="额外配置")
proxy: ProxyConfig | None = Field(default=None, description="代理配置")