회기 무발화 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
|
|
@ -628,7 +628,7 @@ def learner_summary(
|
|||
client_turn_count=client_turns,
|
||||
started_at=iso(sess.created_at) or "",
|
||||
ended_at=iso(sess.ended_at),
|
||||
review_ready=review_ready,
|
||||
review_ready=review_ready if learner_turns > 0 else False,
|
||||
learner_feedback_enabled=(
|
||||
sess.learner_feedback_enabled
|
||||
if learner_feedback_enabled is None
|
||||
|
|
@ -647,7 +647,9 @@ def dashboard_overview(
|
|||
) -> LearnerDashboardOverview:
|
||||
return LearnerDashboardOverview(
|
||||
total_sessions=len(sessions),
|
||||
completed_sessions=sum(1 for sess in sessions if sess.ended),
|
||||
completed_sessions=sum(
|
||||
1 for sess in sessions if sess.ended and any(t.speaker in ("counselor", "learner") for t in sess.turns)
|
||||
),
|
||||
active_sessions=sum(1 for sess in sessions if not sess.ended),
|
||||
review_ready_sessions=sum(1 for ready in visible_review_ready.values() if ready),
|
||||
archived_sessions=archived_sessions,
|
||||
|
|
@ -742,7 +744,11 @@ def dashboard_persona_progress(
|
|||
persona_code=persona_code,
|
||||
persona_name=latest.persona.display_name,
|
||||
sessions=len(ordered),
|
||||
completed_sessions=sum(1 for sess in ordered if sess.ended),
|
||||
completed_sessions=sum(
|
||||
1
|
||||
for sess in ordered
|
||||
if sess.ended and any(t.speaker in ("counselor", "learner") for t in sess.turns)
|
||||
),
|
||||
active_sessions=sum(1 for sess in ordered if not sess.ended),
|
||||
review_ready_sessions=sum(
|
||||
1 for sess in ordered if review_ready.get(sess.session_id, False)
|
||||
|
|
@ -768,7 +774,11 @@ def dashboard_training_exposure(
|
|||
) -> LearnerDashboardTrainingExposure:
|
||||
"""Compute a transparent practice-exposure signal from ended sessions only."""
|
||||
|
||||
completed = [sess for sess in sessions if sess.ended]
|
||||
completed = [
|
||||
sess
|
||||
for sess in sessions
|
||||
if sess.ended and any(t.speaker in ("counselor", "learner") for t in sess.turns)
|
||||
]
|
||||
counts = Counter(sess.persona_code for sess in completed)
|
||||
if not counts:
|
||||
return LearnerDashboardTrainingExposure()
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue