문제
채권운용 강의노트 PDF를 6번+ 재생성하면서 오히려 품질이 계속 떨어짐.
증상: 1. 정밀 추출 1,968줄 → PDF에는 105줄만 반영 (95% 누락) 2. 재생성할 때마다 이전에 잘 된 부분까지 날아감 3. 차트에 강사가 말하지 않은 임의 숫자 삽입 (교육자료에 치명적) 4. 내부 검증용 대조표를 사용자에게 보여줌 5. 영어로 생성 (한국어 강의인데) 6. 목차 인포그래픽에 집중하다 본문 날림
근본 원인
- 소스 혼동: 105줄 요약 MD vs 1,968줄 정밀 추출 — 에이전트가 짧은 것을 소스로 사용
- 전체 재작성 함정: 부분 수정이 필요한데 매번 처음부터 재생성 → 이전 성과 소실
- 검증 없이 전송: PDF 생성 후 내용/분량/언어 확인 없이 바로 DM 발송
- 에이전트 컨텍스트 단절: 새 에이전트 spawn 시 "이전에 뭐가 잘 됐는지" 전달 안 됨
- 교육자료 정확성 기준 부재: 임의 숫자 생성이 일반 보고서에서는 OK지만 교육자료에서는 절대 금지
방지책 (How to apply)
1. 소스 고정
- 정밀 추출 파일을 볼트에 영구 저장 (임시 /tmp 아님)
- PDF 생성 시 반드시 이 파일을 소스로 지정
- 요약 MD는 별도 용도, PDF 소스로 절대 사용 금지
2. 점진적 수정 (재작성 금지)
- "차트가 불친절하다" → 차트만 교체, 본문 건드리지 않음
- "목차가 안 와닿는다" → 목차 페이지만 추가, 본문 유지
- "영어가 섞였다" → sed로 영어 부분만 교체
- 전체 재생성은 최후 수단
3. 전송 전 품질 게이트
# PDF 전송 전 필수 확인
text = extract_text(pdf_path)
lines = [l for l in text.split('\n') if l.strip()]
assert len(lines) > 500, f"내용 부족: {len(lines)}줄"
assert not any(eng_word in text[:200] for eng_word in ['Bond', 'Part', 'Strategy']), "영어 제목"
# 원문 수치 검증
for num in ['58.1', '103.93', '44:36:20']:
assert num in text, f"원문 수치 누락: {num}"
4. 교육자료 정확성 규칙
- 강사가 말한 숫자만 차트/본문에 사용
- 임의 데이터 포인트 생성 시 반드시 "예시" 표기
- 강사 원문 인용은 타임스탬프와 함께
- 해석/보충은 "정리:" 또는 "참고:" 라벨로 구분
5. 스펙 문서 선행
대형 PDF 생성 전에 스펙 문서를 먼저 작성: - 소스 파일 경로 - 목차/구성 - 각 파트 예상 분량 - 사용할 차트 목록 + 데이터 출처 - 금지 사항 → 사용자 확인 후 생성 착수