Files
jerryandClaude Fable 5 2f82c4a8dc P4/M5: agent/legacy-rag 源码迁移(449 模块 191K 行)+ 影子 7911/7912 冒烟
- 按生产 7900 容器黄金清单迁移(compile.manifest 449 条目,0 缺失)
- 入口双态:api.app(生产同源 3 路由)/ api.main(裁剪 11 路由族 91 路径)
- 修复:advanced/__init__ 空文件(包标记误覆盖,已从主项目恢复)
- 修复:api/rag_routes.py 跨环境 site-packages 注入改 LEGACY_GF_SITE_PACKAGES 门控
- 修复:scripts/utils 缺失(动态加载 reasoning_engine)
- 影子验证:kg/stats 数据连通(6.2s,与 7900 同源 normalized 后端)

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-08-31 14:20:41 +08:00

86 lines
2.8 KiB
Python
Executable File

from contextlib import asynccontextmanager
from fastapi import FastAPI
from fastapi.middleware.cors import CORSMiddleware
from api.routes import router as api_router
from api.kg_routes import router as kg_router
from api.reasoning_routes import router as reasoning_router
from api.rag_v10_routes import router as v10_router
from api.advanced_rag_routes import router as advanced_rag_router
from api.raptor_routes import router as raptor_router
from api.temporal_routes import router as temporal_router
from api.kg_rag_routes import router as kg_rag_router # 方案A: KG-RAG融合
from api.species_routes import router as species_router # 物种查询路由
from api.kb_qa_routes import router as kb_qa_router
from api.v15_graph_qa_routes import router as v15_graph_qa_router
from api.v15_agentic_qa_routes import router as v15_agentic_qa_router
from src.rag.project_config import PROJECT_ROOT
@asynccontextmanager
async def lifespan(app: FastAPI):
yield
app = FastAPI(
title="Gene Family RAG System",
description="纯净版RAG系统 - 为bbav20311项目提供知识检索支持",
version="1.0.0",
lifespan=lifespan,
)
app.add_middleware(
CORSMiddleware,
allow_origins=["*"],
allow_credentials=True,
allow_methods=["*"],
allow_headers=["*"],
)
app.include_router(api_router, prefix="/api/v1")
app.include_router(kg_router, prefix="/api/v1")
app.include_router(reasoning_router, prefix="/api/v1")
app.include_router(v10_router, prefix="/api/v1")
app.include_router(advanced_rag_router, prefix="/api/v1")
app.include_router(raptor_router, prefix="/api/v1")
app.include_router(temporal_router, prefix="/api/v1")
app.include_router(kg_rag_router, prefix="/api/v1") # 方案A: KG-RAG融合
app.include_router(species_router, prefix="/api/v1") # 物种查询路由
app.include_router(kb_qa_router, prefix="/api/v1") # V15 SRT SQLite知识库QA
app.include_router(v15_graph_qa_router, prefix="/api/v1") # V15 Neo4j Graph QA
app.include_router(v15_agentic_qa_router, prefix="/api/v1") # V15 Agentic QA
@app.get("/health")
async def health_check():
return {"status": "healthy"}
# 监控指标端点
from fastapi import Request
import time
# 简单的请求计数器
request_count = 0
request_times = []
@app.middleware("http")
async def add_metrics(request: Request, call_next):
global request_count
start_time = time.time()
request_count += 1
response = await call_next(request)
process_time = time.time() - start_time
request_times.append(process_time)
if len(request_times) > 1000:
request_times.pop(0)
return response
@app.get("/metrics")
async def metrics():
"""Prometheus监控指标"""
avg_time = sum(request_times) / len(request_times) if request_times else 0
return {
"request_count": request_count,
"avg_response_time": avg_time,
"status": "healthy"
}