from fastapi import FastAPI from .api import vector, raster, cd_prediction, unit_grouping, water, agricultural_input, cd_flux_removal, cd_flux from .database import engine, Base from fastapi.middleware.cors import CORSMiddleware import logging import sys import os # 设置日志 logging.basicConfig(level=logging.INFO) logger = logging.getLogger(__name__) def safe_create_tables(): """ 安全地创建数据库表 @description: 直接创建表结构,跳过迁移检查 """ try: # 直接创建数据库表 Base.metadata.create_all(bind=engine) logger.info("数据库表结构创建完成") except Exception as e: logger.error(f"数据库表创建失败: {str(e)}") logger.error("请检查数据库连接和表结构定义") # 不要退出,继续运行应用 # sys.exit(1) # 注释掉这行,避免应用退出 # 执行数据库初始化 safe_create_tables() app = FastAPI( title="地图数据处理系统", description="一个用于处理地图数据的API系统", version="1.0.0", openapi_tags=[ # ...(保持原有标签定义不变) ] ) # --------------------------- # 添加 CORS 配置(关键修改) # --------------------------- app.add_middleware( CORSMiddleware, allow_origins=["https://soilgd.com", "http://localhost:5173", "https://www.soilgd.com"], allow_methods=["*"], allow_headers=["*"], allow_credentials=True, ) # 注册路由(保持原有路由注册不变) app.include_router(vector.router, prefix="/api/vector", tags=["vector"]) app.include_router(raster.router, prefix="/api/raster", tags=["raster"]) app.include_router(cd_prediction.router, prefix="/api/cd-prediction", tags=["cd-prediction"]) app.include_router(unit_grouping.router, prefix="/api/unit-grouping", tags=["unit-grouping"]) app.include_router(water.router, prefix="/api/water", tags=["water"]) app.include_router(agricultural_input.router, prefix="/api/agricultural-input", tags=["agricultural-input"]) app.include_router(cd_flux_removal.router, prefix="/api/cd-flux-removal", tags=["cd-flux-removal"]) app.include_router(cd_flux.router, prefix="/api/cd-flux", tags=["cd-flux"]) @app.get("/") async def root(): return {"message": "Welcome to the GIS Data Management API"} # 可选:添加健康检查端点 @app.get("/health") async def health_check(): return {"status": "healthy", "database": "connected"}