회기 무발화 0턴 분리, 자기예측 락 불변식 및 TDD 회귀 검증 완료
Some checks failed
API contract / OpenAPI type drift (push) Failing after 3m27s
Some checks failed
API contract / OpenAPI type drift (push) Failing after 3m27s
This commit is contained in:
parent
a479db7a5a
commit
a0311c5957
100 changed files with 4884 additions and 11210 deletions
|
|
@ -8,7 +8,7 @@ from typing import Annotated, Literal
|
|||
from fastapi import APIRouter, Depends, HTTPException, status
|
||||
from pydantic import BaseModel, Field
|
||||
|
||||
from .. import session_persistence
|
||||
from .. import session_evaluation_repository, session_persistence
|
||||
from ..deps import Principal, Role, require_role
|
||||
from ..runtime_policy import require_runtime_fallback_allowed
|
||||
from ..session_read_model import (
|
||||
|
|
@ -350,7 +350,7 @@ async def teacher_dashboard(principal: TeacherPrincipal) -> TeacherDashboardResp
|
|||
ended_session_ids,
|
||||
principal,
|
||||
)
|
||||
evaluation_records, evaluations_durable = await session_persistence.list_session_evaluations(
|
||||
evaluation_records, evaluations_durable = await session_evaluation_repository.list_session_evaluations(
|
||||
ended_session_ids,
|
||||
principal,
|
||||
)
|
||||
|
|
@ -403,7 +403,11 @@ async def teacher_dashboard(principal: TeacherPrincipal) -> TeacherDashboardResp
|
|||
source="database" if durable else "runtime",
|
||||
total_learners=len(learners),
|
||||
active_sessions=sum(1 for sess in sessions if not sess.ended),
|
||||
ended_sessions=sum(1 for sess in sessions if sess.ended),
|
||||
ended_sessions=sum(
|
||||
1
|
||||
for sess in sessions
|
||||
if sess.ended and any(t.speaker in ("counselor", "learner") for t in sess.turns)
|
||||
),
|
||||
safety_alerts=safety_alerts,
|
||||
learner_growth=learner_growth,
|
||||
pending_reviews=pending_reviews[:20],
|
||||
|
|
@ -442,7 +446,7 @@ async def learner_analysis(
|
|||
ended_session_ids,
|
||||
principal,
|
||||
)
|
||||
evaluation_records, evaluations_durable = await session_persistence.list_session_evaluations(
|
||||
evaluation_records, evaluations_durable = await session_evaluation_repository.list_session_evaluations(
|
||||
ended_session_ids,
|
||||
principal,
|
||||
)
|
||||
|
|
@ -462,7 +466,11 @@ async def learner_analysis(
|
|||
learner_label=growth.learner_label,
|
||||
total_sessions=len(ordered),
|
||||
active_sessions=sum(1 for sess in ordered if not sess.ended),
|
||||
ended_sessions=sum(1 for sess in ordered if sess.ended),
|
||||
ended_sessions=sum(
|
||||
1
|
||||
for sess in ordered
|
||||
if sess.ended and any(t.speaker in ("counselor", "learner") for t in sess.turns)
|
||||
),
|
||||
pending_reviews=pending_reviews,
|
||||
closed_reviews=closed_reviews,
|
||||
summary=growth,
|
||||
|
|
@ -495,7 +503,7 @@ async def update_session_review_status(
|
|||
detail="active sessions cannot be closed as reviewed",
|
||||
)
|
||||
if sess.ended and request.status == "closed" and learner_visible_turns(sess):
|
||||
evaluation_record, evaluation_durable = await session_persistence.load_session_evaluation(
|
||||
evaluation_record, evaluation_durable = await session_evaluation_repository.load_session_evaluation(
|
||||
session_id,
|
||||
principal,
|
||||
)
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue