31차시. 예외 처리 설계
10. app.py 업데이트
출처: 원본 PDF 31차시_방어적코딩실습.pdf 20쪽 · 쪽 그림 20쪽
불확실성을 사용자에게 표시하도록 화면을 수정합니다.
from graph import ask
import time
from logger import log_query
def main():
print(BANNER)
while True:
q = input("\n질문 > ").strip()
if q.lower() in ("q", "exit", "quit", "종료"):
break
if not q:
continue
t0 = time.time()
r = ask(q)
elapsed = time.time() - t0
log_query(q, r.get("_state", {}), elapsed)
print("\n" + "─" * 52)
# 미검증 답변에는 경고 표시
if r.get("answer") and not r.get("verified"):
if r.get("grade") == "unverified":
print("⚠ 이 답변은 자동 검증을 통과하지 못했습니다.")
print(" 원문과 대조해 확인해주세요.\n")
print(r["answer"])
if r.get("sources"):
print("\n📎 참고 자료")
seen = set()
for s in r["sources"]:
key = (s["file"], s["page"])
if key not in seen:
seen.add(key)
print(f" · {s['file']} {s['page']}페이지")
print(f"\n({elapsed:.1f}초)")
print("─" * 52)