개선관리 요구사항과 Google 로그인을 완료
This commit is contained in:
parent
cc0a15b7c6
commit
2a39636163
112 changed files with 10166 additions and 527 deletions
74
apps/api/app/test_first_session_checklist.py
Normal file
74
apps/api/app/test_first_session_checklist.py
Normal file
|
|
@ -0,0 +1,74 @@
|
|||
"""첫 회기 라포·개방질문 체크리스트의 결정론 계약 테스트."""
|
||||
|
||||
from __future__ import annotations
|
||||
|
||||
import unittest
|
||||
|
||||
from .session_read_model import ReviewTurn, first_session_checklist
|
||||
|
||||
|
||||
def _turn(turn_id: str, text: str, *, speaker: str = "learner") -> ReviewTurn:
|
||||
return ReviewTurn(
|
||||
id=turn_id,
|
||||
ts="0:00",
|
||||
speaker=speaker,
|
||||
who="상담자" if speaker == "learner" else "내담자",
|
||||
text=text,
|
||||
)
|
||||
|
||||
|
||||
class FirstSessionChecklistTest(unittest.TestCase):
|
||||
def test_first_session_links_versioned_criteria_to_evidence_turns(self) -> None:
|
||||
checklist = first_session_checklist(
|
||||
session_no=1,
|
||||
turns=[
|
||||
_turn(
|
||||
"t1",
|
||||
"그동안 혼자 버티느라 많이 힘들게 느껴졌겠어요. 어떤 순간이 가장 어려웠나요?",
|
||||
),
|
||||
_turn("t2", "그냥 계속 힘들었어요.", speaker="client"),
|
||||
],
|
||||
)
|
||||
|
||||
self.assertEqual(checklist.version, "first-session-rapport-open-question.v1")
|
||||
self.assertTrue(checklist.applicable)
|
||||
self.assertEqual(
|
||||
[criterion.criterionId for criterion in checklist.criteria],
|
||||
[
|
||||
"first-session.rapport-reflection",
|
||||
"first-session.open-question-one-focus",
|
||||
],
|
||||
)
|
||||
self.assertEqual(
|
||||
[criterion.status for criterion in checklist.criteria],
|
||||
["met", "met"],
|
||||
)
|
||||
self.assertEqual(checklist.criteria[0].evidenceTurns[0].turnId, "t1")
|
||||
self.assertEqual(checklist.criteria[0].evidenceTurns[0].turnSeq, 1)
|
||||
|
||||
def test_first_session_keeps_missing_behavior_visible_without_scoring(self) -> None:
|
||||
checklist = first_session_checklist(
|
||||
session_no=1,
|
||||
turns=[_turn("t1", "네, 알겠습니다. 그렇게 하세요.")],
|
||||
)
|
||||
|
||||
self.assertEqual(
|
||||
[criterion.status for criterion in checklist.criteria],
|
||||
["not_observed", "not_observed"],
|
||||
)
|
||||
self.assertTrue(all(not item.evidenceTurns for item in checklist.criteria))
|
||||
self.assertIn("임상 평가나 성적 판정이 아닙니다", checklist.note)
|
||||
|
||||
def test_later_session_is_explicitly_not_applicable(self) -> None:
|
||||
checklist = first_session_checklist(
|
||||
session_no=2,
|
||||
turns=[_turn("t1", "어떤 마음이 들었나요?")],
|
||||
)
|
||||
|
||||
self.assertFalse(checklist.applicable)
|
||||
self.assertEqual(checklist.status, "not_applicable")
|
||||
self.assertEqual(checklist.criteria, [])
|
||||
|
||||
|
||||
if __name__ == "__main__":
|
||||
unittest.main()
|
||||
Loading…
Add table
Add a link
Reference in a new issue