43 lines
1.7 KiB
Python
43 lines
1.7 KiB
Python
"""라이브 코칭 source pack → RAG 색인 payload 변환 테스트."""
|
|
|
|
from __future__ import annotations
|
|
|
|
import unittest
|
|
|
|
from .services import live_coach
|
|
|
|
|
|
class LiveCoachSourcePackTest(unittest.TestCase):
|
|
def test_source_packs_build_rag_rows_and_index_payloads(self) -> None:
|
|
rows = live_coach.build_rag_source_rows()
|
|
payloads = live_coach.build_rag_index_payloads()
|
|
|
|
row_ids = {row["source_id"] for row in rows}
|
|
payload_ids = {payload["source_id"] for payload in payloads}
|
|
self.assertIn("workbook_0615_case_conceptualization", row_ids)
|
|
self.assertIn("dsm5tr_case_formulation", row_ids)
|
|
self.assertIn("official_suicide_risk_guidelines", row_ids)
|
|
self.assertEqual(row_ids, payload_ids)
|
|
|
|
for row in rows:
|
|
self.assertTrue(row["title"])
|
|
self.assertIn(row["license_class"], {"A", "B", "C", "D"})
|
|
self.assertTrue(row["external_llm_ok"])
|
|
|
|
for payload in payloads:
|
|
self.assertRegex(payload["content_hash"], r"^[0-9a-f]{64}$")
|
|
self.assertGreater(payload["version"], 0)
|
|
self.assertTrue(payload["chunks"])
|
|
for chunk in payload["chunks"]:
|
|
self.assertTrue(chunk["chunk_text"])
|
|
self.assertEqual(chunk["visible_to"], ["evaluator"])
|
|
self.assertNotIn("client", chunk["visible_to"])
|
|
self.assertTrue(chunk["meta"]["live_coaching_source"])
|
|
self.assertTrue(chunk["meta"]["citation"])
|
|
|
|
dsm = next(payload for payload in payloads if payload["source_id"] == "dsm5tr_case_formulation")
|
|
self.assertTrue(all(chunk["sensitivity"] == 2 for chunk in dsm["chunks"]))
|
|
|
|
|
|
if __name__ == "__main__":
|
|
unittest.main()
|