# -*- coding: utf-8 -*-
"""首页和 WebUI 路由"""
import os
from fastapi import APIRouter, Request
from fastapi.responses import HTMLResponse, FileResponse
from core.config import STATIC_ADMIN_DIR
router = APIRouter()
# 首页 HTML(内嵌避免依赖模板目录)
WELCOME_HTML = """
DS2API - DeepSeek to OpenAI API
🚀
全面兼容
完美适配 OpenAI 与 Claude API 格式,无缝集成现有工具。
⚖️
负载均衡
内置智能轮询机制,支持多账号并发,稳定高效。
🧠
深度思考
完整支持 DeepSeek-R1 推理过程输出,让思考可见。
🔍
联网搜索
集成 DeepSeek 原生搜索能力,获取最新实时资讯。
"""
@router.get("/")
def index(request: Request):
return HTMLResponse(content=WELCOME_HTML)
@router.get("/admin")
@router.get("/admin/{path:path}")
async def webui(request: Request, path: str = ""):
"""提供 WebUI 静态文件"""
# 检查 static/admin 目录是否存在
if not os.path.isdir(STATIC_ADMIN_DIR):
return HTMLResponse(
content="WebUI not built
Run cd webui && npm run build first.
",
status_code=404
)
# 如果请求的是具体文件(如 js, css)
if path and "." in path:
file_path = os.path.join(STATIC_ADMIN_DIR, path)
if os.path.isfile(file_path):
return FileResponse(file_path)
return HTMLResponse(content="Not Found", status_code=404)
# 否则返回 index.html(SPA 路由)
index_path = os.path.join(STATIC_ADMIN_DIR, "index.html")
if os.path.isfile(index_path):
return FileResponse(index_path)
return HTMLResponse(content="index.html not found", status_code=404)