feat: 系统设置增加备份恢复与默认登录 admin

支持手动/每日自动备份四所数据库、K线库与 env,上传 zip 一键恢复;中控默认账号 admin/admin123。

Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
dekun
2026-07-02 16:39:46 +08:00
parent 55261b7812
commit bfa3352122
16 changed files with 1052 additions and 22 deletions
+6
View File
@@ -8,13 +8,17 @@ from pathlib import Path
DIR = Path(__file__).resolve().parent
SETTINGS_PATH = DIR / "hub_settings.json"
_REPO_ROOT = DIR.parent
import sys
if str(_REPO_ROOT) not in sys.path:
sys.path.insert(0, str(_REPO_ROOT))
if str(DIR) not in sys.path:
sys.path.insert(0, str(DIR))
from hub_supervisor_lib import DEFAULT_SUPERVISOR, normalize_supervisor_settings
from lib.hub.hub_backup_lib import normalize_backup_settings
DEFAULT_DISPLAY = {
"show_account_pnl": True,
@@ -106,6 +110,7 @@ def load_settings() -> dict:
pass
data["display"] = normalize_display_prefs(data.get("display"))
data["supervisor"] = normalize_supervisor_settings(data.get("supervisor"))
data["backup"] = normalize_backup_settings(data.get("backup"))
force_off = env_force_disabled_ids()
for ex in data.get("exchanges") or []:
if str(ex.get("id")) in force_off:
@@ -120,6 +125,7 @@ def save_settings(data: dict) -> None:
payload = dict(data)
payload["display"] = normalize_display_prefs(payload.get("display"))
payload["supervisor"] = normalize_supervisor_settings(payload.get("supervisor"))
payload["backup"] = normalize_backup_settings(payload.get("backup"))
SETTINGS_PATH.write_text(
json.dumps(payload, ensure_ascii=False, indent=2),
encoding="utf-8",