회기 집계와 기록 복귀 및 감독 근거 링크 수정
Some checks failed
API contract / OpenAPI type drift (push) Failing after 4m46s

This commit is contained in:
Yun Chan 2026-09-09 14:41:54 +09:00
parent aa951c6c4a
commit 1306c524c1
20 changed files with 4631 additions and 60 deletions

View file

@ -225,6 +225,66 @@ class SupervisionResearchProducerDerivationTest(TestCase):
serialized = str([item.signal.model_dump(mode="json") for item in derived])
self.assertNotIn("transcript", serialized.lower())
def test_produced_pointer_uses_canonical_session_review_route(self) -> None:
"""세션이 있는 생산 신호는 교수자 세션 리뷰 경로를 가리킨다."""
derived = derive_attention_signals(
trajectory_rows=[
{
"learner_id": LEARNER_A,
"revision_id": UUID("20000000-0000-0000-0000-000000000003"),
"anchor_session_id": SESSION_A,
"revision_no": 1,
"assessment": {
"sessions": [
{
"session_no": 1,
"status": "off_track",
"axes": [{"uncertainty": 0.2}],
}
]
},
}
],
rupture_rows=[],
calibration_rows=[],
transfer_rows=[],
practice_rows=[],
)
self.assertEqual(len(derived), 1)
self.assertEqual(
derived[0].signal.evidence[0].route_hint,
f"/teach/session/{SESSION_A}/review",
)
def test_produced_pointer_without_session_falls_back_to_teach(self) -> None:
"""세션 없는 생산 신호는 교수자 첫 화면으로 안전하게 돌아간다."""
derived = derive_attention_signals(
trajectory_rows=[],
rupture_rows=[],
calibration_rows=[],
transfer_rows=[
{
"learner_id": LEARNER_A,
"competency_id": "competency.empathy",
"transfer_assessment_id": UUID(
"50000000-0000-0000-0000-000000000003"
),
"session_id": None,
"assessment_payload": {
"eligible": True,
"transfer_verified": False,
"error_interval": {"lower": 0.1, "upper": 0.3},
},
"observed_sequence": 1,
}
],
practice_rows=[],
)
self.assertEqual(len(derived), 1)
self.assertEqual(derived[0].signal.evidence[0].route_hint, "/teach")
def test_requires_repeated_overconfidence_and_retry_for_persistent_signals(
self,
) -> None: