Files
geMoldInsight/src/main.py
T

161 lines
4.5 KiB
Python
Raw Normal View History

2026-02-11 22:40:35 +08:00
# main.py
import sys
import os
from pathlib import Path
# 添加项目根目录到Python路径
project_root = Path(__file__).parent.parent
src_root = Path(__file__).parent
sys.path.insert(0, str(project_root))
sys.path.insert(0, str(src_root))
# 确保当前工作目录是项目根目录
os.chdir(project_root)
# 打印调试信息
print(f"项目根目录: {project_root}")
print(f"Python路径: {sys.path}")
print(f"当前工作目录: {os.getcwd()}")
# 测试导入配置模块
try:
from config.settings import settings
print("[OK] 配置模块导入成功")
except ImportError as e:
print(f"[FAIL] 配置模块导入失败: {e}")
# 列出当前目录内容
print("当前目录内容:")
for item in os.listdir('.'):
print(f" - {item}")
# 列出config目录内容
if os.path.exists('config'):
print("config目录内容:")
for item in os.listdir('config'):
print(f" - {item}")
raise
from fastapi import FastAPI
from fastapi.staticfiles import StaticFiles
from fastapi.templating import Jinja2Templates
import asyncio
from api.routes import router
2026-03-04 00:47:41 +08:00
from api.auth_routes import router as auth_router
2026-03-08 22:58:25 +08:00
from api.inventory import inventory_router
2026-02-11 22:40:35 +08:00
from utils.logger import setup_logging
from database.init_db import init_database
setup_logging()
app = FastAPI(
2026-03-04 00:47:41 +08:00
title="Gemold - 模具制造管理系统",
description="模具制造行业综合管理平台,包含模具分析、进销存管理等功能",
version="4.0.0"
2026-02-11 22:40:35 +08:00
)
# 启动时初始化数据库和RustFS
@app.on_event("startup")
async def startup_event():
"""应用启动时初始化数据库和RustFS"""
# 初始化数据库
success = await init_database()
if success:
print("[OK] 数据库初始化成功")
else:
print("[FAIL] 数据库初始化失败,服务将继续运行但数据库功能不可用")
# 初始化RustFS连接
try:
from storage.rustfs_storage import rustfs_manager
from config.settings import settings
await rustfs_manager.connect(
endpoint=settings.RUSTFS_ENDPOINT,
access_key=settings.RUSTFS_ACCESS_KEY,
secret_key=settings.RUSTFS_SECRET_KEY,
timeout=settings.RUSTFS_TIMEOUT
)
print("[OK] RustFS连接成功")
except Exception as e:
print(f"[FAIL] RustFS连接失败: {e}")
print("[WARN] 文件上传功能将不可用,但其他功能正常")
# 创建必要目录
UPLOAD_DIR = Path("uploads")
UPLOAD_DIR.mkdir(exist_ok=True)
TEMPLATES_DIR = Path("templates")
TEMPLATES_DIR.mkdir(exist_ok=True)
STATIC_DIR = Path("static")
STATIC_DIR.mkdir(exist_ok=True)
HTML_OUTPUT_DIR = Path("html_output")
HTML_OUTPUT_DIR.mkdir(exist_ok=True)
# 挂载静态文件
import os
2026-02-16 01:13:13 +08:00
# 使用当前工作目录下的static文件夹
static_dir = os.path.join(os.getcwd(), "static")
2026-02-11 22:40:35 +08:00
app.mount("/static", StaticFiles(directory=static_dir), name="static")
2026-03-07 00:56:51 +08:00
# 挂载HTML输出目录
html_output_dir = os.path.join(os.getcwd(), "html_output")
app.mount("/html", StaticFiles(directory=html_output_dir), name="html")
2026-03-04 00:47:41 +08:00
app.include_router(auth_router)
app.include_router(inventory_router)
2026-03-04 23:08:06 +08:00
app.include_router(router, prefix="/api")
2026-02-11 22:40:35 +08:00
@app.get("/health")
2026-02-16 01:32:13 +08:00
@app.post("/health")
2026-02-11 22:40:35 +08:00
async def health():
from database.database import db_manager
return {
"status": "healthy",
2026-03-04 00:47:41 +08:00
"service": "gemold",
"version": "4.0.0",
2026-02-11 22:40:35 +08:00
"database_connected": db_manager.is_connected
}
2026-03-04 00:47:41 +08:00
@app.get("/")
async def root():
from fastapi.responses import FileResponse
return FileResponse(os.path.join(os.getcwd(), "static", "index.html"))
@app.get("/moldinsight")
async def moldinsight():
from fastapi.responses import FileResponse
return FileResponse(os.path.join(os.getcwd(), "static", "index.html"))
@app.get("/inventory")
async def inventory():
from fastapi.responses import FileResponse
return FileResponse(os.path.join(os.getcwd(), "static", "index.html"))
@app.get("/users")
async def users():
from fastapi.responses import FileResponse
return FileResponse(os.path.join(os.getcwd(), "static", "index.html"))
2026-02-11 22:40:35 +08:00
if __name__ == "__main__":
import uvicorn
2026-02-13 00:29:12 +08:00
from config.settings import settings
2026-02-11 22:40:35 +08:00
2026-03-04 00:47:41 +08:00
print("启动 Gemold 模具制造管理系统 v4.0...")
print(f"访问 http://localhost:{settings.PORT}")
print("功能模块:")
print(" - 首页仪表盘")
print(" - 用户管理")
print(" - MoldInsight 模具分析")
print(" - 进销存管理")
2026-02-11 22:40:35 +08:00
uvicorn.run(
"main:app",
2026-02-13 00:29:12 +08:00
host=settings.HOST,
port=settings.PORT,
2026-02-11 22:40:35 +08:00
reload=True
)