사례개념화 워크시트 저장 추가
This commit is contained in:
parent
7f4a2d90c7
commit
bd389a97cc
15 changed files with 614 additions and 42 deletions
|
|
@ -677,6 +677,107 @@ class SessionTurnPersistenceTest(unittest.IsolatedAsyncioTestCase):
|
|||
self.assertEqual(risk.evidence, [])
|
||||
self.assertIn("명시 근거", risk.emptyReason or "")
|
||||
|
||||
async def test_review_prefers_saved_case_formulation_worksheet(self) -> None:
|
||||
principal = _principal()
|
||||
sess = _session(principal)
|
||||
sess.turns.append(
|
||||
TurnRecord(
|
||||
turn_seq=1,
|
||||
speaker="client",
|
||||
stage=sess.state.stage.value,
|
||||
text="자동 초안 대신 저장본을 확인합니다.",
|
||||
text_masked="자동 초안 대신 저장본을 확인합니다.",
|
||||
created_at=sess.created_at + 1,
|
||||
)
|
||||
)
|
||||
saved_payload = {
|
||||
"status": "saved_by_learner",
|
||||
"generatedBy": "learner-edited worksheet",
|
||||
"sections": [
|
||||
{
|
||||
"key": "exploration_11",
|
||||
"title": "탐색 11항목",
|
||||
"items": [
|
||||
{
|
||||
"key": "presenting_complaint",
|
||||
"label": "주호소",
|
||||
"value": "학습자가 저장한 주호소",
|
||||
"evidence": [],
|
||||
"confidence": "medium",
|
||||
"emptyReason": None,
|
||||
}
|
||||
],
|
||||
}
|
||||
],
|
||||
"limitations": ["학습자 저장본"],
|
||||
"savedAt": "2026-06-27T10:00:00+00:00",
|
||||
}
|
||||
|
||||
with patch.object(
|
||||
sessions.session_persistence,
|
||||
"load_case_worksheet",
|
||||
AsyncMock(return_value=(saved_payload, True)),
|
||||
):
|
||||
response = await sessions.get_session_review(sess.session_id, principal)
|
||||
|
||||
worksheet = response.caseWorksheet
|
||||
self.assertEqual(worksheet.status, "saved_by_learner")
|
||||
self.assertEqual(worksheet.generatedBy, "learner-edited worksheet")
|
||||
self.assertEqual(worksheet.sections[0].items[0].value, "학습자가 저장한 주호소")
|
||||
self.assertEqual(worksheet.limitations, ["학습자 저장본"])
|
||||
self.assertEqual(worksheet.savedAt, "2026-06-27T10:00:00+00:00")
|
||||
|
||||
async def test_learner_can_save_case_formulation_worksheet(self) -> None:
|
||||
principal = _principal()
|
||||
sess = _session(principal)
|
||||
request = sessions.ReviewCaseWorksheetSaveRequest(
|
||||
sections=[
|
||||
sessions.ReviewWorksheetSection(
|
||||
key="exploration_11",
|
||||
title="탐색 11항목",
|
||||
items=[
|
||||
sessions.ReviewWorksheetItem(
|
||||
key="presenting_complaint",
|
||||
label="주호소",
|
||||
value="수정한 주호소",
|
||||
confidence="medium",
|
||||
)
|
||||
],
|
||||
)
|
||||
],
|
||||
limitations=["임상 루브릭 전"],
|
||||
)
|
||||
|
||||
with patch.object(
|
||||
sessions,
|
||||
"_load_session_or_404",
|
||||
AsyncMock(return_value=sess),
|
||||
) as load_session, patch.object(
|
||||
sessions.session_persistence,
|
||||
"save_case_worksheet",
|
||||
AsyncMock(return_value=True),
|
||||
) as save_worksheet:
|
||||
response = await sessions.save_session_review_worksheet(
|
||||
sess.session_id,
|
||||
request,
|
||||
principal,
|
||||
)
|
||||
|
||||
load_session.assert_awaited_once_with(
|
||||
sess.session_id,
|
||||
principal,
|
||||
allow_ended=True,
|
||||
include_turn_evaluation=False,
|
||||
)
|
||||
save_worksheet.assert_awaited_once()
|
||||
save_kwargs = save_worksheet.await_args.kwargs
|
||||
self.assertEqual(save_kwargs["session_id"], sess.session_id)
|
||||
self.assertEqual(save_kwargs["learner_id"], principal.user_id)
|
||||
self.assertEqual(save_kwargs["payload"]["status"], "saved_by_learner")
|
||||
self.assertEqual(save_kwargs["payload"]["sections"][0]["items"][0]["value"], "수정한 주호소")
|
||||
self.assertEqual(response.status, "saved_by_learner")
|
||||
self.assertEqual(response.sections[0].items[0].value, "수정한 주호소")
|
||||
|
||||
|
||||
if __name__ == "__main__":
|
||||
unittest.main()
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue