o2o-site-AEO/solution/backend/tests/test_itinerary_prompt.py
Mina Choi 11d30bb3d1 [chore] solution,admin,ontology: 코드 주석을 한 줄로 — 히스토리 주석 삭제
여러 줄 주석이 설명보다 경위(예전·실측·지적)를 적고 있어 읽는 사람이 결론을 찾기 어려웠다.

- ts·tsx·js·mjs·css·py 478개: 여러 줄 주석은 첫 문장 한 줄로, 과거형·날짜 문장은 삭제
- 주석 위치는 TypeScript 파서·파이썬 tokenize/ast 로 찾는다 — 문자열 안의 # · /* 는 건드리지 않는다
- eslint·ts·noqa·type: ignore 같은 지시 주석은 그대로 둔다

파이썬 275개 정리 전후 AST 동일, TS 298개 주석 뺀 토큰 동일(빈 JSX 주석 10곳만 차이).
site·frontend·admin tsc, site vitest 105 passed

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
2026-09-28 16:05:19 +09:00

58 lines
2.3 KiB
Python

"""여행 일정 프롬프트 — 무엇을 반드시 물어야 하는가."""
import pytest
from services.prompts import itinerary as prompts
def test_durations_are_two_render_contract_strings():
"""검증: 기간 문자열."""
assert prompts.DURATIONS == ("1박 2일", "2박 3일")
def test_prompt_carries_place_region_and_duration():
"""검증: 변수 세 개가 프롬프트에 들어간다."""
text = prompts.build_prompt("스테이,머뭄", "전북특별자치도 군산시", "1박 2일")
assert "스테이,머뭄" in text
assert "전북특별자치도 군산시" in text
assert '"1박 2일"' in text # 스키마의 duration 고정값
assert "1박 2일 여행 일정" in text # 해야 할 일
def test_prompt_fixes_five_concepts():
"""검증: 컨셉 5개가 프롬프트에 박혀 있다."""
text = prompts.build_prompt("업소", "지역", "2박 3일")
for concept in ("역사·근대건축", "자연 풍경", "미식", "아이와 함께", "야외활동"):
assert concept in text
def test_prompt_asks_for_ten_courses_total():
"""검증: 컨셉당 2개씩 총 10개를 요청한다."""
text = prompts.build_prompt("업소", "지역", "1박 2일")
assert "5개 컨셉마다 2개씩, 총 10개" in text
assert "같은 컨셉 안의 두 코스도 서로 다른 일정이어야 한다" in text
def test_prompt_forbids_the_lodging_itself_as_a_stop():
"""검증: 업소를 정거장에 넣지 말라는 규칙."""
text = prompts.build_prompt("업소", "지역", "1박 2일")
assert "[업소] 자신은 정거장에 넣지 않는다" in text
def test_prompt_requires_coordinates_and_forbids_fences():
"""검증: 좌표는 항상 요구하고, 코드펜스는 금지한다."""
text = prompts.build_prompt("업소", "지역", "1박 2일")
assert "모든 정거장에 latitude·longitude 를 적는다" in text
assert "코드펜스를 붙이지 않는다" in text
def test_prompt_forbids_identical_courses():
"""검증: 같은 정거장 집합 금지 규칙."""
text = prompts.build_prompt("업소", "지역", "2박 3일")
assert "같은 정거장 집합" in text
def test_unknown_duration_is_rejected():
"""검증: 모르는 기간."""
with pytest.raises(ValueError):
prompts.build_prompt("업소", "지역", "3박 4일")