Add brain memory services and APIs
Introduce the backend pieces for brain memory ingestion, routing, and system telemetry so the new knowledge workflows can project data into a brain view. The supporting tests lock in the new behavior and keep the expanded backend surface stable. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
61
backend/app/routers/brain.py
Normal file
61
backend/app/routers/brain.py
Normal file
@@ -0,0 +1,61 @@
|
||||
from fastapi import APIRouter, Depends
|
||||
from sqlalchemy.ext.asyncio import AsyncSession
|
||||
|
||||
from app.database import get_db
|
||||
from app.models.user import User
|
||||
from app.routers.auth import get_current_user
|
||||
from app.schemas.brain import (
|
||||
BrainEventOut,
|
||||
BrainLearnRunOut,
|
||||
BrainMemoryOut,
|
||||
BrainOverviewOut,
|
||||
BrainTagGroupsOut,
|
||||
)
|
||||
from app.services.brain_service import BrainService
|
||||
|
||||
router = APIRouter(prefix="/api/brain", tags=["知识大脑"])
|
||||
|
||||
|
||||
@router.get("/overview", response_model=BrainOverviewOut)
|
||||
async def get_brain_overview(
|
||||
current_user: User = Depends(get_current_user),
|
||||
db: AsyncSession = Depends(get_db),
|
||||
):
|
||||
service = BrainService(db)
|
||||
return await service.get_overview(current_user.id)
|
||||
|
||||
|
||||
@router.get("/memories", response_model=list[BrainMemoryOut])
|
||||
async def list_brain_memories(
|
||||
current_user: User = Depends(get_current_user),
|
||||
db: AsyncSession = Depends(get_db),
|
||||
):
|
||||
service = BrainService(db)
|
||||
return await service.list_memories(current_user.id)
|
||||
|
||||
|
||||
@router.get("/tags", response_model=BrainTagGroupsOut)
|
||||
async def list_brain_tags(
|
||||
current_user: User = Depends(get_current_user),
|
||||
db: AsyncSession = Depends(get_db),
|
||||
):
|
||||
service = BrainService(db)
|
||||
return await service.list_tags(current_user.id)
|
||||
|
||||
|
||||
@router.get("/events", response_model=list[BrainEventOut])
|
||||
async def list_brain_events(
|
||||
current_user: User = Depends(get_current_user),
|
||||
db: AsyncSession = Depends(get_db),
|
||||
):
|
||||
service = BrainService(db)
|
||||
return await service.list_events(current_user.id)
|
||||
|
||||
|
||||
@router.post("/learn/run", response_model=BrainLearnRunOut)
|
||||
async def run_brain_learning(
|
||||
current_user: User = Depends(get_current_user),
|
||||
db: AsyncSession = Depends(get_db),
|
||||
):
|
||||
service = BrainService(db)
|
||||
return await service.run_learning(current_user.id)
|
||||
Reference in New Issue
Block a user