last message
This commit is contained in:
@@ -155,6 +155,29 @@ def create_student_account(
|
||||
return schemas.StudentAccountResponse(student=student, user=user)
|
||||
|
||||
|
||||
@app.get("/students/{student_id}/messages", response_model=list[schemas.MessageRead])
|
||||
def list_student_messages(
|
||||
student_id: int,
|
||||
limit: int = 80,
|
||||
db: Session = Depends(get_db),
|
||||
current_user: models.User = Depends(get_current_user),
|
||||
):
|
||||
ensure_student_access(current_user, student_id)
|
||||
student = db.query(models.Student).filter_by(id=student_id).first()
|
||||
if not student:
|
||||
raise HTTPException(status_code=404, detail="Eleve introuvable")
|
||||
|
||||
safe_limit = min(max(limit, 1), 200)
|
||||
rows = (
|
||||
db.query(models.Message)
|
||||
.filter_by(student_id=student_id)
|
||||
.order_by(models.Message.created_at.desc(), models.Message.id.desc())
|
||||
.limit(safe_limit)
|
||||
.all()
|
||||
)
|
||||
return list(reversed(rows))
|
||||
|
||||
|
||||
@app.post("/session/start", response_model=schemas.ChatResponse)
|
||||
def start_session(
|
||||
student_id: int,
|
||||
@@ -300,6 +323,13 @@ def answer_assessment(
|
||||
correct, feedback, mastery_score = evaluate_answer(
|
||||
db, payload.student_id, payload.skill_code, payload.answer
|
||||
)
|
||||
db.add(
|
||||
models.Message(
|
||||
student_id=student.id,
|
||||
role="user",
|
||||
content=f"Reponse au mini-test ({payload.skill_code}): {payload.answer}",
|
||||
)
|
||||
)
|
||||
db.add(models.Message(student_id=student.id, role="assistant", content=feedback))
|
||||
db.commit()
|
||||
return schemas.AssessmentAnswerResponse(
|
||||
|
||||
@@ -1,4 +1,5 @@
|
||||
from pydantic import BaseModel, Field
|
||||
from datetime import datetime
|
||||
from typing import List
|
||||
|
||||
|
||||
@@ -60,6 +61,17 @@ class ChatResponse(BaseModel):
|
||||
should_speak: bool = True
|
||||
|
||||
|
||||
class MessageRead(BaseModel):
|
||||
id: int
|
||||
student_id: int
|
||||
role: str
|
||||
content: str
|
||||
created_at: datetime
|
||||
|
||||
class Config:
|
||||
from_attributes = True
|
||||
|
||||
|
||||
class TTSProfile(BaseModel):
|
||||
id: str
|
||||
label: str
|
||||
|
||||
Reference in New Issue
Block a user