2026-03-21 10:13:29 +08:00
|
|
|
from contextlib import asynccontextmanager
|
|
|
|
|
from fastapi import FastAPI
|
|
|
|
|
from fastapi.middleware.cors import CORSMiddleware
|
|
|
|
|
from app.database import init_db
|
|
|
|
|
from app.routers import (
|
|
|
|
|
auth_router,
|
|
|
|
|
conversation_router,
|
|
|
|
|
document_router,
|
|
|
|
|
task_router,
|
|
|
|
|
forum_router,
|
|
|
|
|
graph_router,
|
|
|
|
|
agent_router,
|
|
|
|
|
todo_router,
|
|
|
|
|
settings_router,
|
|
|
|
|
folder_router,
|
2026-03-21 11:28:20 +08:00
|
|
|
skill_router,
|
Add log system with three log types (agent/system/chat)
Implemented a complete log system for tracking:
- Agent logs:智能体调用
- System logs: 系统运行
- Chat logs: 问答对话
Backend:
- Log model with type, level, user_id, message, source, duration_ms
- LogService with methods for logging and querying
- API endpoints: GET /api/logs, GET /api/logs/stats, GET /api/logs/recent
Frontend:
- LogView.vue with filters, stats, pagination, auto-refresh
- log.ts API client with TypeScript interfaces
- Added "运行日志" nav item to sidebar
2026-03-21 11:58:51 +08:00
|
|
|
log_router,
|
2026-03-21 10:13:29 +08:00
|
|
|
)
|
|
|
|
|
from app.routers.scheduler import router as scheduler_router
|
|
|
|
|
from app.services.scheduler_service import start_scheduler, stop_scheduler, get_scheduler_status
|
|
|
|
|
from app.config import settings
|
|
|
|
|
import os
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
@asynccontextmanager
|
|
|
|
|
async def lifespan(app: FastAPI):
|
|
|
|
|
# 启动
|
|
|
|
|
os.makedirs(settings.DATA_DIR, exist_ok=True)
|
|
|
|
|
os.makedirs(settings.UPLOAD_DIR, exist_ok=True)
|
|
|
|
|
os.makedirs(settings.CHROMA_PERSIST_DIR, exist_ok=True)
|
|
|
|
|
await init_db()
|
|
|
|
|
start_scheduler()
|
|
|
|
|
yield
|
|
|
|
|
# 关闭
|
|
|
|
|
stop_scheduler()
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
app = FastAPI(
|
|
|
|
|
title=settings.APP_NAME,
|
|
|
|
|
version=settings.APP_VERSION,
|
|
|
|
|
lifespan=lifespan,
|
|
|
|
|
)
|
|
|
|
|
|
|
|
|
|
# CORS
|
|
|
|
|
app.add_middleware(
|
|
|
|
|
CORSMiddleware,
|
|
|
|
|
allow_origins=settings.CORS_ORIGINS,
|
|
|
|
|
allow_credentials=True,
|
|
|
|
|
allow_methods=["*"],
|
|
|
|
|
allow_headers=["*"],
|
|
|
|
|
)
|
|
|
|
|
|
|
|
|
|
# 注册路由
|
|
|
|
|
app.include_router(auth_router)
|
|
|
|
|
app.include_router(conversation_router)
|
|
|
|
|
app.include_router(document_router)
|
|
|
|
|
app.include_router(task_router)
|
|
|
|
|
app.include_router(forum_router)
|
|
|
|
|
app.include_router(graph_router)
|
|
|
|
|
app.include_router(agent_router)
|
|
|
|
|
app.include_router(todo_router)
|
|
|
|
|
app.include_router(settings_router)
|
|
|
|
|
app.include_router(folder_router)
|
2026-03-21 11:28:20 +08:00
|
|
|
app.include_router(skill_router)
|
Add log system with three log types (agent/system/chat)
Implemented a complete log system for tracking:
- Agent logs:智能体调用
- System logs: 系统运行
- Chat logs: 问答对话
Backend:
- Log model with type, level, user_id, message, source, duration_ms
- LogService with methods for logging and querying
- API endpoints: GET /api/logs, GET /api/logs/stats, GET /api/logs/recent
Frontend:
- LogView.vue with filters, stats, pagination, auto-refresh
- log.ts API client with TypeScript interfaces
- Added "运行日志" nav item to sidebar
2026-03-21 11:58:51 +08:00
|
|
|
app.include_router(log_router)
|
2026-03-21 10:13:29 +08:00
|
|
|
app.include_router(scheduler_router)
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
@app.get("/api/health")
|
|
|
|
|
async def health():
|
|
|
|
|
return {
|
|
|
|
|
"status": "ok",
|
|
|
|
|
"version": settings.APP_VERSION,
|
|
|
|
|
"llm_provider": settings.LLM_PROVIDER,
|
|
|
|
|
"scheduler": get_scheduler_status(),
|
|
|
|
|
}
|