app.py 1.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142
  1. from __future__ import annotations
  2. import os
  3. from pathlib import Path
  4. from fastapi import FastAPI
  5. from base.config_loader import load_config
  6. from service.matcher import StandardMatcher
  7. from views.app_views import JsonlQueryLogger, register_routes
  8. # 根据 APP_ENV 加载对应的 .env 配置文件
  9. load_config()
  10. PROJECT_ROOT = Path(__file__).resolve().parents[1]
  11. DEFAULT_CSV_PATH = PROJECT_ROOT / "归集617清洗.csv"
  12. DEFAULT_LOG_PATH = Path(__file__).resolve().parent / "logs" / "query.jsonl"
  13. def create_app(
  14. csv_path: str | Path | None = None,
  15. log_path: str | Path | None = None,
  16. ) -> FastAPI:
  17. source_path = Path(csv_path or os.getenv("STANDARDS_CSV_PATH", DEFAULT_CSV_PATH))
  18. query_log_path = Path(log_path or os.getenv("STANDARDS_LOG_PATH", DEFAULT_LOG_PATH))
  19. matcher = StandardMatcher.from_csv(source_path)
  20. query_logger = JsonlQueryLogger(query_log_path)
  21. application = FastAPI(
  22. title="Local Standards Search Service",
  23. version="0.1.0",
  24. docs_url=None,
  25. redoc_url=None,
  26. openapi_url=None,
  27. )
  28. register_routes(application, matcher, query_logger)
  29. return application
  30. app = create_app()