"""配色状态持久化:data/color_state.json(原子写)。""" import json import os from typing import Any from config import DATA_DIR, DATA_FILE def load_all() -> dict[str, Any]: try: return json.loads(DATA_FILE.read_text(encoding="utf-8")) except (OSError, json.JSONDecodeError): return {} def load_model_state(model: str) -> dict[str, Any]: return load_all().get(model, {}) def save_model_state(model: str, state: dict[str, Any]) -> None: DATA_DIR.mkdir(parents=True, exist_ok=True) all_state = load_all() all_state[model] = state tmp = DATA_FILE.with_suffix(DATA_FILE.suffix + ".tmp") tmp.write_text(json.dumps(all_state, ensure_ascii=False, indent=2), encoding="utf-8") os.replace(tmp, DATA_FILE)