from __future__ import annotations import os from pathlib import Path from fastapi import FastAPI from base.config_loader import load_config from service.matcher import StandardMatcher from views.app_views import JsonlQueryLogger, register_routes # 根据 APP_ENV 加载对应的 .env 配置文件 load_config() PROJECT_ROOT = Path(__file__).resolve().parents[1] DEFAULT_CSV_PATH = PROJECT_ROOT / "归集617清洗.csv" DEFAULT_LOG_PATH = Path(__file__).resolve().parent / "logs" / "query.jsonl" def create_app( csv_path: str | Path | None = None, log_path: str | Path | None = None, ) -> FastAPI: source_path = Path(csv_path or os.getenv("STANDARDS_CSV_PATH", DEFAULT_CSV_PATH)) query_log_path = Path(log_path or os.getenv("STANDARDS_LOG_PATH", DEFAULT_LOG_PATH)) matcher = StandardMatcher.from_csv(source_path) query_logger = JsonlQueryLogger(query_log_path) application = FastAPI( title="Local Standards Search Service", version="0.1.0", docs_url=None, redoc_url=None, openapi_url=None, ) register_routes(application, matcher, query_logger) return application app = create_app()