Add memory coach, transformer recall model, and training FAB.
Introduce Q/K/V memory dialogue with coach APIs, a lightweight NumPy transformer for per-word forgetting prediction, and a floating training menu linking daily quiz, spell, and coach flows. Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
@@ -0,0 +1,35 @@
|
||||
from fastapi import APIRouter, Depends
|
||||
from sqlalchemy.orm import Session
|
||||
|
||||
from auth import get_current_user
|
||||
from database import get_db
|
||||
from models import User
|
||||
from schemas import CoachSessionResponse, CoachTurnRequest, CoachTurnResponse
|
||||
from services.memory_coach_service import memory_coach_service
|
||||
|
||||
router = APIRouter(prefix="/api/coach", tags=["coach"])
|
||||
|
||||
|
||||
@router.get("/session", response_model=CoachSessionResponse)
|
||||
def coach_session(
|
||||
db: Session = Depends(get_db),
|
||||
current_user: User = Depends(get_current_user),
|
||||
):
|
||||
return memory_coach_service.start_session(db, current_user)
|
||||
|
||||
|
||||
@router.post("/turn", response_model=CoachTurnResponse)
|
||||
def coach_turn(
|
||||
data: CoachTurnRequest,
|
||||
db: Session = Depends(get_db),
|
||||
current_user: User = Depends(get_current_user),
|
||||
):
|
||||
return memory_coach_service.handle_turn(
|
||||
db,
|
||||
current_user,
|
||||
data.word_id,
|
||||
data.stage,
|
||||
data.user_message,
|
||||
data.hints_used,
|
||||
data.duration_seconds or 0,
|
||||
)
|
||||
@@ -7,12 +7,14 @@ from auth import get_current_user
|
||||
from database import get_db
|
||||
from models import User
|
||||
from schemas import (
|
||||
MemoryTransformerPredictResponse,
|
||||
MemoryVisualizationResponse,
|
||||
WordCreate,
|
||||
WordMemoryDetailResponse,
|
||||
WordOut,
|
||||
WordUpdate,
|
||||
)
|
||||
from services.memory_transformer import memory_transformer_service
|
||||
from services.memory_visual_service import memory_visual_service
|
||||
from services.word_service import word_service
|
||||
|
||||
@@ -55,6 +57,16 @@ def word_memory(
|
||||
return memory_visual_service.get_word_memory(db, current_user, word_id)
|
||||
|
||||
|
||||
@router.get("/{word_id}/memory-model", response_model=MemoryTransformerPredictResponse)
|
||||
def word_memory_model(
|
||||
word_id: int,
|
||||
db: Session = Depends(get_db),
|
||||
current_user: User = Depends(get_current_user),
|
||||
):
|
||||
word = word_service.get_word(db, current_user, word_id)
|
||||
return memory_transformer_service.predict_for_word(db, current_user, word)
|
||||
|
||||
|
||||
@router.get("/{word_id}", response_model=WordOut)
|
||||
def get_word(
|
||||
word_id: int,
|
||||
|
||||
Reference in New Issue
Block a user