54 lines
1.8 KiB
Python
54 lines
1.8 KiB
Python
from fastapi import FastAPI
|
|
from fastapi.middleware.cors import CORSMiddleware
|
|
from fastapi.staticfiles import StaticFiles
|
|
import os
|
|
|
|
from routers import auth_router, chargers, reports, repairs, costs, improvements, accounts, settings, export
|
|
|
|
app = FastAPI(title="EV 충전기 AS 관리 시스템", version="1.0.0")
|
|
|
|
app.add_middleware(
|
|
CORSMiddleware,
|
|
allow_origins=["*"],
|
|
allow_credentials=True,
|
|
allow_methods=["*"],
|
|
allow_headers=["*"],
|
|
)
|
|
|
|
# 라우터 등록
|
|
app.include_router(auth_router.router)
|
|
app.include_router(chargers.router)
|
|
app.include_router(reports.router)
|
|
app.include_router(repairs.router)
|
|
app.include_router(costs.router)
|
|
app.include_router(improvements.router)
|
|
app.include_router(accounts.router)
|
|
app.include_router(settings.router)
|
|
app.include_router(export.router)
|
|
|
|
@app.get("/api/health")
|
|
def health():
|
|
return {"status": "ok"}
|
|
|
|
@app.get("/api/stats")
|
|
def stats(db=None):
|
|
from database import SessionLocal
|
|
from sqlalchemy import func
|
|
from models import Report, Repair, RepairCost, Improvement
|
|
db = SessionLocal()
|
|
try:
|
|
total = db.query(Report).count()
|
|
pending = db.query(Report).filter(Report.status.in_(["pending","pending_approval"])).count()
|
|
in_prog = db.query(Report).filter(Report.status == "in_progress").count()
|
|
done = db.query(Report).filter(Report.status == "done").count()
|
|
cost_pend = db.query(RepairCost).filter(RepairCost.cost_status == "pending").count()
|
|
imp_open = db.query(Improvement).filter(
|
|
Improvement.status.in_(["registered","reviewing","developing"])).count()
|
|
return {
|
|
"total": total, "pending": pending,
|
|
"in_progress": in_prog, "done": done,
|
|
"cost_pending": cost_pend, "improvement_open": imp_open,
|
|
}
|
|
finally:
|
|
db.close()
|