config.py 1.4 KB

1234567891011121314151617181920212223242526272829303132333435363738394041
  1. """3D 模块服务端配置:路径、端口与数据库。"""
  2. import os
  3. from pathlib import Path
  4. BASE_DIR = Path(__file__).resolve().parent # 3d/backend
  5. MODULE_DIR = BASE_DIR.parent # 3d
  6. MODELS_DIR = MODULE_DIR / "models"
  7. DATA_DIR = MODULE_DIR / "data"
  8. DATA_FILE = DATA_DIR / "color_state.json"
  9. SCENE_CSV = DATA_DIR / "scene_positions.csv"
  10. FAULT_MAP_CSV = DATA_DIR / "fault_part_map.csv"
  11. FRONTEND_DIST = MODULE_DIR / "frontend" / "dist"
  12. # 数据库凭据沿用项目根目录的 数据库.md(与 backend/app/config.py 同源,不复制到代码里)。
  13. _DB_NOTE = BASE_DIR.parents[1] / "数据库.md"
  14. def _db_values() -> dict[str, str]:
  15. values: dict[str, str] = {}
  16. if not _DB_NOTE.exists():
  17. return values
  18. for line in _DB_NOTE.read_text(encoding="utf-8").splitlines():
  19. if ":" in line:
  20. key, value = line.split(":", 1)
  21. elif "=" in line:
  22. key, value = line.split("=", 1)
  23. else:
  24. continue
  25. values[key.strip().lower()] = value.strip()
  26. return values
  27. _db = _db_values()
  28. DB_HOST = os.getenv("DB_HOST", _db.get("host", "127.0.0.1"))
  29. DB_PORT = int(os.getenv("DB_PORT", _db.get("port", "3306")))
  30. DB_USER = os.getenv("DB_USER", _db.get("user", "root"))
  31. DB_PASSWORD = os.getenv("DB_PASSWORD", _db.get("password", ""))
  32. DB_NAME = os.getenv("DB_NAME", _db.get("db_name", "compressorsensor"))
  33. DB_CONNECT_TIMEOUT = int(os.getenv("DB_CONNECT_TIMEOUT", "5"))