전 저장소 리팩터링과 SSOT 정비

This commit is contained in:
Yun Chan 2026-07-15 21:31:30 +09:00
parent 14ecbd4e7d
commit 3dfddcac6f
173 changed files with 19679 additions and 6952 deletions

View file

@ -8,6 +8,28 @@ from .services import guardrail
class ClientReplyQualityGateTest(unittest.TestCase):
def test_blocks_self_harm_means_detail(self) -> None:
"""자해 수단·방법 상세는 차단(1.1 확장 — DBT 자해 페르소나 대비)."""
samples = [
"커터로 했어요. 그게 제일 쉬워서요.",
"면도날을 항상 가지고 다녀요.",
"어젯밤에도 손목 긋고 잠들었어요.",
]
for sample in samples:
with self.subTest(sample=sample):
result = guardrail.sanitize_client_reply(sample, ideation_stage=3, turn_seq=4)
self.assertTrue(result.needs_regeneration)
self.assertTrue(any(r.startswith("means_info:") for r in result.reasons))
def test_allows_boundary_setting_language(self) -> None:
"""'선을 긋다'(경계 설정) 같은 정상 상담 표현은 차단하지 않는다."""
result = guardrail.sanitize_client_reply(
"이제는 엄마랑 선을 긋고 제 생활을 지키고 싶어요.",
ideation_stage=1,
turn_seq=4,
)
self.assertFalse(result.needs_regeneration)
def test_blocks_role_meta_speech_variants(self) -> None:
samples = [
"내담자 역할로 응답하겠습니다. 엄마가 가보라고 해서요.",