config.py 1.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748
  1. """3D 模块服务端配置:路径、端口与数据库。"""
  2. import os
  3. from pathlib import Path
  4. BASE_DIR = Path(__file__).resolve().parent # viewer/backend
  5. MODULE_DIR = BASE_DIR.parent # viewer
  6. MODELS_DIR = MODULE_DIR / "models"
  7. DATA_DIR = MODULE_DIR / "data"
  8. SCENE_CSV = DATA_DIR / "scene_positions.csv"
  9. FAULT_MAP_CSV = DATA_DIR / "fault_part_map.csv"
  10. FRONTEND_DIST = MODULE_DIR / "frontend" / "dist"
  11. # 运行模式与登录鉴权。默认 test(测试模式,登录页自动填入账号密码);
  12. # 生产用 APP_MODE=prod 启动(见 run_prod.sh / README)。
  13. APP_MODE = os.getenv("APP_MODE", "test").strip().lower()
  14. IS_TEST = APP_MODE != "prod"
  15. AUTH_USER = os.getenv("AUTH_USER", "aaabbb")
  16. AUTH_PASSWORD = os.getenv("AUTH_PASSWORD", "Aa*147258&cd")
  17. AUTH_TOKEN_TTL_SECONDS = int(os.getenv("AUTH_TOKEN_TTL_SECONDS", "43200"))
  18. # 数据库凭据沿用项目根目录的 数据库.md(与 backend/app/config.py 同源,不复制到代码里)。
  19. _DB_NOTE = BASE_DIR.parents[1] / "数据库.md"
  20. def _db_values() -> dict[str, str]:
  21. values: dict[str, str] = {}
  22. if not _DB_NOTE.exists():
  23. return values
  24. for line in _DB_NOTE.read_text(encoding="utf-8").splitlines():
  25. if ":" in line:
  26. key, value = line.split(":", 1)
  27. elif "=" in line:
  28. key, value = line.split("=", 1)
  29. else:
  30. continue
  31. values[key.strip().lower()] = value.strip()
  32. return values
  33. _db = _db_values()
  34. DB_HOST = os.getenv("DB_HOST", _db.get("host", "127.0.0.1"))
  35. DB_PORT = int(os.getenv("DB_PORT", _db.get("port", "3306")))
  36. DB_USER = os.getenv("DB_USER", _db.get("user", "root"))
  37. DB_PASSWORD = os.getenv("DB_PASSWORD", _db.get("password", ""))
  38. DB_NAME = os.getenv("DB_NAME", _db.get("db_name", "compressorsensor"))
  39. DB_CONNECT_TIMEOUT = int(os.getenv("DB_CONNECT_TIMEOUT", "5"))