站点配置(百世密码/韵达账密/安能路径)从 config.yaml 移至 state.db
- state_store:加 site_settings(site,key,value) 表 + get_setting/set_setting/get_site_settings
- runtime:seed_legacy_config 启动一次性从 config.yaml 灌入(已存在不覆盖);安能 app_path 改读 state_store
- site_baishi:导出密码改读 get_setting("百世","password")
- site_yunda:登录账密改读 get_setting("韵达",...)
- server:/config PUT 接受 settings;新增 GET /config/{site}/settings(不进 5s 轮询)
debug 仍保留在 config.yaml;站点配置现由前端配置弹窗管理(state.db 为准)。
Co-Authored-By: Claude <noreply@anthropic.com>
This commit is contained in:
19
server.py
19
server.py
@@ -17,7 +17,7 @@ import queue
|
||||
import threading
|
||||
import time
|
||||
from contextlib import asynccontextmanager
|
||||
from typing import Optional
|
||||
from typing import Dict, Optional
|
||||
|
||||
import uvicorn
|
||||
from apscheduler.schedulers.background import BackgroundScheduler
|
||||
@@ -190,6 +190,7 @@ class ConfigRequest(BaseModel):
|
||||
actual_offset: Optional[int] = None
|
||||
schedule_enabled: Optional[bool] = None
|
||||
schedule_time: Optional[str] = None
|
||||
settings: Optional[Dict[str, str]] = None
|
||||
|
||||
|
||||
def _default_cfg():
|
||||
@@ -236,7 +237,21 @@ def set_config(site: str, req: ConfigRequest):
|
||||
)
|
||||
state_store.set_schedule(site, enabled, time_str)
|
||||
_reschedule_site(site)
|
||||
return state_store.get_all_config().get(site, _default_cfg())
|
||||
# 站点专属配置(密码/账号/路径…)
|
||||
if req.settings:
|
||||
for k, v in req.settings.items():
|
||||
state_store.set_setting(site, k, v)
|
||||
cfg = state_store.get_all_config().get(site, _default_cfg())
|
||||
cfg["settings"] = state_store.get_site_settings(site)
|
||||
return cfg
|
||||
|
||||
|
||||
@app.get("/config/{site}/settings")
|
||||
def get_site_settings_api(site: str):
|
||||
"""单站专属配置(密码/账号/路径…;不进 5s 轮询)。"""
|
||||
if site not in ALL_SITES:
|
||||
raise HTTPException(status_code=400, detail=f"未知站点: {site}")
|
||||
return state_store.get_site_settings(site)
|
||||
|
||||
|
||||
REPORT_FILE = "应到未到数据.xlsx"
|
||||
|
||||
Reference in New Issue
Block a user