현재 작업 전체 반영
This commit is contained in:
parent
5560638e54
commit
c0dddab594
85 changed files with 11322 additions and 539 deletions
|
|
@ -145,11 +145,34 @@ class OrchestratorMaskingGateTest(unittest.IsolatedAsyncioTestCase):
|
|||
for masked in MASK_VALUES:
|
||||
self.assertIn(masked, blob)
|
||||
|
||||
def test_prepare_turn_threads_theory_mode_into_engine_messages(self) -> None:
|
||||
ctx = orchestrator.prepare_turn(
|
||||
session_id="theory-session",
|
||||
case_id="theory-case",
|
||||
card=persona.P2,
|
||||
state=_initial_state(),
|
||||
learner_text="그냥 아무것도 하기 싫어요.",
|
||||
theory_mode="cbt",
|
||||
)
|
||||
|
||||
blob = _message_blob(ctx.messages)
|
||||
self.assertIn("[L3-T 이론모드: CBT]", blob)
|
||||
self.assertIn("자동적 사고", blob)
|
||||
self.assertIn("행동활성화", blob)
|
||||
|
||||
async def test_run_turn_generate_sends_only_masked_engine_payload(self) -> None:
|
||||
ctx = _prepare_context()
|
||||
engine = CaptureGenerateEngine()
|
||||
audit_payloads: list[dict[str, Any]] = []
|
||||
|
||||
await orchestrator.run_turn_generate(ctx, engine) # type: ignore[arg-type]
|
||||
async def audit_hook(payload: dict[str, Any]) -> None:
|
||||
audit_payloads.append(payload)
|
||||
|
||||
await orchestrator.run_turn_generate(
|
||||
ctx,
|
||||
engine, # type: ignore[arg-type]
|
||||
audit_hook=audit_hook,
|
||||
)
|
||||
|
||||
self.assertIsNotNone(engine.request)
|
||||
self.assertIsNotNone(engine.payload)
|
||||
|
|
@ -158,14 +181,28 @@ class OrchestratorMaskingGateTest(unittest.IsolatedAsyncioTestCase):
|
|||
_assert_masked_pii_present(self, engine.request.messages)
|
||||
_assert_masked_pii_present(self, engine.payload)
|
||||
self.assertEqual(ctx.learner_text_raw, RAW_TEXT)
|
||||
self.assertEqual(len(audit_payloads), 1)
|
||||
self.assertEqual(audit_payloads[0]["provider"], "fake-provider")
|
||||
self.assertEqual(audit_payloads[0]["model"], "fake-model")
|
||||
_assert_no_raw_pii(self, audit_payloads)
|
||||
for key in ("messages", "prompt", "text"):
|
||||
self.assertNotIn(key, audit_payloads[0])
|
||||
|
||||
async def test_run_turn_stream_sends_only_masked_engine_payload(self) -> None:
|
||||
ctx = _prepare_context()
|
||||
engine = CaptureStreamEngine()
|
||||
audit_payloads: list[dict[str, Any]] = []
|
||||
|
||||
async def audit_hook(payload: dict[str, Any]) -> None:
|
||||
audit_payloads.append(payload)
|
||||
|
||||
events = [
|
||||
event
|
||||
async for event in orchestrator.run_turn_stream(ctx, engine) # type: ignore[arg-type]
|
||||
async for event in orchestrator.run_turn_stream(
|
||||
ctx,
|
||||
engine, # type: ignore[arg-type]
|
||||
audit_hook=audit_hook,
|
||||
)
|
||||
]
|
||||
|
||||
self.assertEqual([event.event for event in events], ["token", "done"])
|
||||
|
|
@ -176,6 +213,12 @@ class OrchestratorMaskingGateTest(unittest.IsolatedAsyncioTestCase):
|
|||
_assert_masked_pii_present(self, engine.request.messages)
|
||||
_assert_masked_pii_present(self, engine.payload)
|
||||
self.assertEqual(ctx.learner_text_raw, RAW_TEXT)
|
||||
self.assertEqual(len(audit_payloads), 1)
|
||||
self.assertEqual(audit_payloads[0]["tokens_in"], 5)
|
||||
self.assertEqual(audit_payloads[0]["tokens_out"], 6)
|
||||
_assert_no_raw_pii(self, audit_payloads)
|
||||
for key in ("messages", "prompt", "text"):
|
||||
self.assertNotIn(key, audit_payloads[0])
|
||||
|
||||
|
||||
if __name__ == "__main__":
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue