Initial commit: AI Video Assistant fullstack platform.
Add pipecat-based backend with WebRTC/WS voice routes, Next.js frontend, and Docker Compose orchestration. Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
48
backend/app.py
Normal file
48
backend/app.py
Normal file
@@ -0,0 +1,48 @@
|
||||
"""FastAPI 入口。挂载路由,放行前端跨域,启动时建表。
|
||||
|
||||
启动: uvicorn app:app --reload --port 8000
|
||||
|
||||
路由分组(对齐 dograh 的 routes/ 结构):
|
||||
/health 健康检查
|
||||
/api/assistants 助手 CRUD
|
||||
/api/credentials 模型凭证 CRUD(key 打码)
|
||||
/ws/voice WebRTC 输出(浏览器)
|
||||
/ws/stream WS 输出(裸音频流)
|
||||
"""
|
||||
|
||||
from contextlib import asynccontextmanager
|
||||
|
||||
import config
|
||||
import uvicorn
|
||||
from db.session import init_db
|
||||
from fastapi import FastAPI
|
||||
from fastapi.middleware.cors import CORSMiddleware
|
||||
|
||||
from routes import assistants, credentials, health, voice_webrtc, voice_ws
|
||||
|
||||
|
||||
@asynccontextmanager
|
||||
async def lifespan(_app: FastAPI):
|
||||
await init_db() # MVP:启动建表;表稳定后切 alembic
|
||||
yield
|
||||
|
||||
|
||||
app = FastAPI(title="AI Video Assistant 平台 - 后端", lifespan=lifespan)
|
||||
|
||||
app.add_middleware(
|
||||
CORSMiddleware,
|
||||
allow_origins=config.CORS_ORIGINS,
|
||||
allow_credentials=True,
|
||||
allow_methods=["*"],
|
||||
allow_headers=["*"],
|
||||
)
|
||||
|
||||
app.include_router(health.router)
|
||||
app.include_router(assistants.router)
|
||||
app.include_router(credentials.router)
|
||||
app.include_router(voice_webrtc.router)
|
||||
app.include_router(voice_ws.router)
|
||||
|
||||
|
||||
if __name__ == "__main__":
|
||||
uvicorn.run("app:app", host=config.HOST, port=config.PORT, reload=True)
|
||||
Reference in New Issue
Block a user