state_service.py 770 B

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