Files
ai-video-fullstack/backend/app.py
Xin Wang b444ea777c Implement knowledge base management and enhance assistant configuration
Add CRUD functionality for knowledge bases, including routes for listing, creating, updating, and deleting knowledge bases. Update the assistant model to include foreign key references to knowledge bases and modify the assistant configuration to handle external API keys securely. Refactor related services and routes to accommodate these changes, ensuring proper handling of credential resolution and configuration normalization.
2026-06-09 08:31:39 +08:00

57 lines
1.4 KiB
Python

"""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,
knowledge_bases,
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(knowledge_bases.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)