""" 表格线编辑器后端服务 FastAPI 应用入口 """ import sys from pathlib import Path # 添加 ocr_platform 根目录到 Python 路径(必须在导入其他模块之前) _file_path = Path(__file__).resolve() ocr_platform_root = _file_path.parents[2] # main.py -> backend -> table_line_generator -> ocr_platform if str(ocr_platform_root) not in sys.path: sys.path.insert(0, str(ocr_platform_root)) from fastapi import FastAPI from fastapi.middleware.cors import CORSMiddleware from loguru import logger # 配置日志 logger.remove() logger.add( sys.stdout, level="INFO", format="{time:YYYY-MM-DD HH:mm:ss} | {level: <8} | {name}:{function}:{line} - {message}" ) # 创建应用 app = FastAPI( title="表格线编辑器 API", description="无线表格智能标注工具后端服务", version="0.1.0", docs_url="/docs", redoc_url="/redoc" ) # CORS 配置 app.add_middleware( CORSMiddleware, allow_origins=[ "http://localhost:5173", # Vite 开发服务器 "http://localhost:3000", # 备用端口 "http://127.0.0.1:5173", "http://127.0.0.1:3000", ], allow_credentials=True, allow_methods=["*"], allow_headers=["*"], ) # 注册路由 from api.editor import router as editor_router from api.template import router as template_router from api.directory import router as directory_router from api.config import router as config_router from api.batch import router as batch_router app.include_router(editor_router) app.include_router(template_router) app.include_router(directory_router) app.include_router(config_router) app.include_router(batch_router) @app.get("/") async def root(): """根路径""" return { "service": "table-line-editor", "version": "0.1.0", "docs": "/docs" } @app.on_event("startup") async def startup_event(): logger.info("🚀 表格线编辑器后端服务启动") logger.info("📚 API 文档: http://localhost:8000/docs") @app.on_event("shutdown") async def shutdown_event(): logger.info("👋 表格线编辑器后端服务关闭") if __name__ == "__main__": import uvicorn uvicorn.run( "main:app", host="0.0.0.0", port=8000, reload=True )