from __future__ import annotations import unittest from claridoc.models import Brief, LintReport from claridoc.prompts import drafting_prompt, review_prompt, revision_prompt from claridoc.structures import create_outline from tests.helpers import brief_dict, make_sources class PromptTests(unittest.TestCase): def _korean_blog(self) -> Brief: data = brief_dict() data["title"] = "기술적 선택을 설명하는 글" data["language"] = "ko-KR" data["reader_goal"] = "안전한 구현 방식을 선택한다" data["core_message"] = "기술 선택은 문제와 비용을 함께 설명해야 한다." data["constraints"]["style_profile"] = "woowahan_tech_blog_ko" return Brief.from_dict(data) def test_korean_blog_prompts_separate_information_structure_from_sentence_form(self) -> None: brief = self._korean_blog() sources = make_sources() outline = create_outline(brief, sources) lint_report = LintReport(score=100.0, word_count=0, issues=[], metrics={}) draft = drafting_prompt(brief, outline, sources) review = review_prompt(brief, outline, sources, "# draft", lint_report, "editor") revision = revision_prompt(brief, outline, sources, "# draft", lint_report, []) self.assertIn("semantic order, never as a sentence template", draft) self.assertIn("첫 번째 제약은", draft) self.assertIn("Information-architecture labels must not leak", review) self.assertIn("real ordered sequences", review) self.assertIn("Remove repeated ordinal sentence scaffolding", revision) self.assertIn("real procedure, method, layer, or figure", revision) if __name__ == "__main__": unittest.main()