修复:group_horse_racing 权限检查问题1

- 添加 field_validator 来正确解析环境变量中的 ID 集合
- 支持 JSON 格式 "[1424473282]" 和逗号分隔格式 "1424473282,621016172"
- 修复 TESTERS、TEST_GROUPS、ALLOWED_GROUPS 的环境变量解析
- 移除调试日志,保持代码整洁

这解决了环境变量中的 JSON 字符串无法正确解析为集合的问题。

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
2026-04-03 22:46:11 +08:00
parent 756019b9ef
commit 8eca8fba49
2 changed files with 51 additions and 1 deletions

View File

@@ -1,5 +1,6 @@
from pydantic import Field
from pydantic import Field, field_validator
from pydantic_settings import BaseSettings, SettingsConfigDict
from typing import Union
class Config(BaseSettings):
@@ -35,3 +36,27 @@ class Config(BaseSettings):
)
RACE_DB_FILE: str = "data/group_horse_racing/race.db"
@field_validator("TESTERS", "TEST_GROUPS", "ALLOWED_GROUPS", mode="before")
@classmethod
def parse_id_sets(cls, v):
"""Parse ID sets from various formats."""
if isinstance(v, set):
return v
if isinstance(v, str):
# Handle JSON string format like "[1424473282]"
import json
try:
parsed = json.loads(v)
if isinstance(parsed, list):
return set(int(x) for x in parsed)
except (json.JSONDecodeError, ValueError, TypeError):
pass
# Handle comma-separated format
try:
return set(int(x.strip()) for x in v.split(",") if x.strip())
except ValueError:
pass
if isinstance(v, (list, tuple)):
return set(int(x) for x in v)
return v if isinstance(v, set) else set()