liumaolin commited on
Commit
ad7bf8d
·
1 Parent(s): d29b312

Serve static frontend assets through FastAPI: mount static files and replace root endpoint response with `index.html`.

Browse files
src/VoiceDialogue/api/app.py CHANGED
@@ -3,7 +3,10 @@ from typing import Dict, Any
3
 
4
  from fastapi import FastAPI, HTTPException, APIRouter
5
  from fastapi.middleware.cors import CORSMiddleware
 
 
6
 
 
7
  from .core.config import AppConfig
8
  from .core.lifespan import lifespan
9
  from .middleware.logging import LoggingMiddleware
@@ -47,6 +50,9 @@ def create_app() -> FastAPI:
47
  # 注册异常处理器
48
  _register_exception_handlers(app)
49
 
 
 
 
50
  return app
51
 
52
 
@@ -57,7 +63,7 @@ def _register_routes(app: FastAPI):
57
  v1_router.include_router(tts_routes.router, prefix="/tts", tags=["TTS模型管理"])
58
  v1_router.include_router(asr_routes.router, prefix="/asr", tags=["ASR模型管理"])
59
  v1_router.include_router(system_routes.router, prefix="/system", tags=["系统管理"])
60
-
61
  app.include_router(v1_router)
62
 
63
  # 根路径和健康检查
@@ -69,27 +75,8 @@ def _register_health_routes(app: FastAPI):
69
 
70
  @app.get("/")
71
  async def root():
72
- """根路径健康检查"""
73
- return {
74
- "message": "欢迎使用VoiceDialogue API",
75
- "status": "running",
76
- "version": "1.0.0",
77
- "docs_url": "/docs",
78
- "redoc_url": "/redoc"
79
- }
80
-
81
- @app.get("/health")
82
- async def health_check():
83
- """健康检查端点"""
84
- app_state = getattr(app, 'state', {})
85
-
86
- return {
87
- "status": "healthy",
88
- "tts_configs_loaded": app_state.get("tts_configs_loaded", False),
89
- "system_running": app_state.get("system_running", False),
90
- "tts_config_count": app_state.get("tts_config_count", 0),
91
- "services": _get_service_status(app_state)
92
- }
93
 
94
 
95
  def _get_service_status(app_state: Dict[str, Any]) -> dict:
 
3
 
4
  from fastapi import FastAPI, HTTPException, APIRouter
5
  from fastapi.middleware.cors import CORSMiddleware
6
+ from fastapi.responses import FileResponse
7
+ from fastapi.staticfiles import StaticFiles
8
 
9
+ from config.paths import FRONTEND_ASSETS_PATH
10
  from .core.config import AppConfig
11
  from .core.lifespan import lifespan
12
  from .middleware.logging import LoggingMiddleware
 
50
  # 注册异常处理器
51
  _register_exception_handlers(app)
52
 
53
+ # 添加静态文件路由
54
+ app.mount("/", StaticFiles(directory=FRONTEND_ASSETS_PATH.as_posix()), name="static")
55
+
56
  return app
57
 
58
 
 
63
  v1_router.include_router(tts_routes.router, prefix="/tts", tags=["TTS模型管理"])
64
  v1_router.include_router(asr_routes.router, prefix="/asr", tags=["ASR模型管理"])
65
  v1_router.include_router(system_routes.router, prefix="/system", tags=["系统管理"])
66
+
67
  app.include_router(v1_router)
68
 
69
  # 根路径和健康检查
 
75
 
76
  @app.get("/")
77
  async def root():
78
+ index_file = FRONTEND_ASSETS_PATH / "index.html"
79
+ return FileResponse(index_file)
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
80
 
81
 
82
  def _get_service_status(app_state: Dict[str, Any]) -> dict:
src/VoiceDialogue/config/paths.py CHANGED
@@ -11,7 +11,7 @@ MODELS_PATH = ASSETS_PATH / "models"
11
 
12
  # 具体模型类型路径
13
  ASR_MODELS_PATH = MODELS_PATH / "asr"
14
- TTS_MODELS_PATH = MODELS_PATH / "tts"
15
  LLM_MODELS_PATH = MODELS_PATH / "llm"
16
 
17
  # 第三方库路径
@@ -21,6 +21,9 @@ THIRD_PARTY_PATH = PROJECT_ROOT / "third_party"
21
  LIBRARIES_PATH = ASSETS_PATH / "libraries"
22
  AUDIO_RESOURCES_PATH = ASSETS_PATH / "audio"
23
 
 
 
 
24
 
25
  def load_third_party():
26
  # 添加第三方库到 Python 路径
 
11
 
12
  # 具体模型类型路径
13
  ASR_MODELS_PATH = MODELS_PATH / "asr"
14
+ TTS_MODELS_PATH = MODELS_PATH / "tts"
15
  LLM_MODELS_PATH = MODELS_PATH / "llm"
16
 
17
  # 第三方库路径
 
21
  LIBRARIES_PATH = ASSETS_PATH / "libraries"
22
  AUDIO_RESOURCES_PATH = ASSETS_PATH / "audio"
23
 
24
+ # 前端静态资源路径
25
+ FRONTEND_ASSETS_PATH = ASSETS_PATH / "www"
26
+
27
 
28
  def load_third_party():
29
  # 添加第三方库到 Python 路径