68 lines
2.2 KiB
Python
68 lines
2.2 KiB
Python
"""FastAPI 主入口文件
|
||
|
||
核心原则:
|
||
- 所有写操作仅在 pms_db 中进行
|
||
- 绝对禁止对 inventory_db 进行任何写操作
|
||
- 库存相关查询仅使用只读连接
|
||
"""
|
||
from fastapi import FastAPI
|
||
from fastapi.middleware.cors import CORSMiddleware
|
||
from app.config import settings
|
||
from app.routers import (
|
||
deduce_bom_router, # 齐套性推演
|
||
bom_targets_router, # BOM 成品搜索
|
||
work_order_router, # 工单 CRUD
|
||
approval_router, # 缺料审批
|
||
approvals_router, # 缺料审批列表
|
||
material_router, # 物料查询
|
||
preference_router, # 用户偏好
|
||
project_stats_router, # 项目统计
|
||
work_order_kanban_router, # 工单看板
|
||
)
|
||
|
||
# 自动创建表(仅 pms_db)
|
||
from app.database import engine_pms, Base
|
||
from app.models import PmsProject, PmsWorkOrder, PmsMaterialApproval, PmsUserPreference
|
||
from app.models.inventory import MaterialBase
|
||
|
||
Base.metadata.create_all(bind=engine_pms)
|
||
|
||
# 创建FastAPI应用实例
|
||
app = FastAPI(
|
||
title="Production Management System API",
|
||
description="生产管理系统后端API",
|
||
version="1.0.0",
|
||
)
|
||
|
||
# 配置CORS中间件
|
||
app.add_middleware(
|
||
CORSMiddleware,
|
||
allow_origins=settings.CORS_ORIGINS,
|
||
allow_credentials=True,
|
||
allow_methods=["*"],
|
||
allow_headers=["*"],
|
||
)
|
||
|
||
# ============================================================
|
||
# 路由注册说明:
|
||
# 1. FastAPI 按 include_router 顺序注册路由
|
||
# 2. 更具体的路径(如 /summary)必须在通用路径(如 /{id})之前定义
|
||
# 3. 同一 prefix 的路由必须集中注册,避免路径匹配混乱
|
||
# ============================================================
|
||
|
||
app.include_router(deduce_bom_router)
|
||
app.include_router(bom_targets_router)
|
||
app.include_router(work_order_router)
|
||
app.include_router(approval_router)
|
||
app.include_router(approvals_router)
|
||
app.include_router(material_router)
|
||
app.include_router(preference_router)
|
||
app.include_router(project_stats_router)
|
||
app.include_router(work_order_kanban_router)
|
||
|
||
|
||
@app.get("/health")
|
||
async def health_check():
|
||
"""健康检查接口"""
|
||
return {"status": "healthy", "service": "PMS API"}
|