fix: unify backend port to 18080 and make validator targets configurable

- Set default API port to 18080 in config.py
- Add configurable validation_targets to SettingsSchema and DEFAULT_SETTINGS
- Update ValidatorService to support runtime test URL updates
- Hot-reload validation_targets from DB on startup and on settings save
- Add domestic fallback URLs (baidu.com, qq.com) to reduce foreign dependency risk
- Update Settings.vue to allow adding/removing validator target URLs in UI
This commit is contained in:
祀梦
2026-04-04 22:47:54 +08:00
parent b972b64616
commit 49e440cb41
7 changed files with 107 additions and 10 deletions

View File

@@ -41,6 +41,8 @@ async def lifespan(app: FastAPI):
connect_timeout=app_settings.validator_connect_timeout,
max_concurrency=db_settings.get("default_concurrency", app_settings.validator_max_concurrency),
)
if db_settings.get("validation_targets"):
validator.update_test_urls(db_settings["validation_targets"])
# 验证 WorkerPool
async def validation_handler(proxy):

View File

@@ -45,9 +45,11 @@ async def save_settings(request: SettingsSchema, http_request: Request):
validator._init_timeout = request.validation_timeout
validator._init_connect_timeout = request.validation_timeout
validator._init_max_concurrency = request.default_concurrency
if request.validation_targets:
validator.update_test_urls(request.validation_targets)
# 重新创建 semaphore 和 session
validator._semaphore = None
await validator.close()
logger.info(f"Validator config updated: timeout={request.validation_timeout}, concurrency={request.default_concurrency}")
logger.info(f"Validator config updated: timeout={request.validation_timeout}, concurrency={request.default_concurrency}, targets={request.validation_targets}")
return success_response("保存设置成功", request.model_dump())