PPT 생성기 개발 로그 – 2025-11-16

1. credentials.json 오류 정리

  • /result/ 페이지(썸네일/다운로드 뷰)로 들어가자마자 아래 에러 발생

    FileNotFoundError: [Errno 2] No such file or directory: 'credentials.json'
    
  • 원인

    • prompt 뷰에서 슬라이드를 만들 때는 OAuth 인증(token.json) 을 쓰고 있었는데,
    • display_slides() / download_pptx() 쪽에서는 예전 코드 그대로 서비스 계정용 credentials.json 파일을 찾고 있었다.
  • 해결

    • 두 뷰가 같은 인증 방식을 쓰도록 정리해서, 더 이상 credentials.json 을 찾지 않도록 수정.
    • 결과적으로 /result/ 접근 시 FileNotFoundError 는 사라짐.

2. “내용이 템플릿 그대로” 문제 해결

  • 증상

    • GPT가 생성한 텍스트를 파일로 잘 만들어 두었는데,
    • 실제로 만들어진 PPT를 열어보면 템플릿에 있던 기본 문구가 그대로 남아 있음.
  • 조치

    • create_slides() 에서 템플릿 복사 → batchUpdate 요청까지 전체 흐름 점검.
    • 디버그 로그 추가

      • DEBUG: 56 texts, 0 boxes, 50 requests 처럼 텍스트 개수, 매핑된 박스 수, 요청 수를 출력해 확인.
    • 이후 수정으로 텍스트 교체 자체는 정상 동작하게 만들었고,

      • 템플릿 기본 문구 대신 GPT가 만든 내용이 들어가는 것까지 확인.

3. 텍스트가 “제목 박스에 세로로 쌓이는” 깨짐 현상 분석

  • 새로운 문제

    • 내용은 들어가는데, 어떤 슬라이드는 제목 박스 한 칸에 본문이 몽땅 들어가서 세로로 쭉 쌓이면서 레이아웃이 무너짐.
  • 원인 후보

    1. 코드가 슬라이드 구조를 모르고 단순히 elements[:2] 같은 방식으로 objectId 를 수집해서,

      • 제목 박스(TITLE), 본문 박스(SUBTITLE), 장식 도형을 구분하지 못함.
    2. 그 상태로 text_list 전체를 순서대로 매핑하면서

      • 어떤 슬라이드는 제목 박스에 본문까지 다 들어가 버림.
  • presentation_data.json 구조 분석

    • 실제 JSON을 열어보니 각 텍스트 박스에 이런 정보가 붙어 있음:

      "placeholder": {
        "type": "TITLE"  
      }
      
    • 예시 – 섹션 타이틀 슬라이드 (p1)

      • TITLE 박스: 2 한국의 역사적 사건과 인물 같은 큰 제목
      • SUBTITLE 박스: 한 줄짜리 요약 문장
    • 예시 – 내용 슬라이드 (p8)

      • TITLE: 근대화와 한국의 독립 운동 (소제목)
      • SUBTITLE: 불릿 포함 본문 전체 (여러 줄)
  • 오늘까지 얻은 결론

    • 텍스트를 넣을 때는 순서가 아니라 placeholder.type 기준으로 매핑해야 한다.

      • TITLE → 슬라이드 제목 1줄
      • SUBTITLE → 본문(혹은 요약) 전체
      • BODY (notes 등) → 발표자 노트, 보통 건드리지 않기
      • 그 외 텍스트 없는 도형들은 전부 장식이므로 건드리지 않기

4. 다음 할 일(To-do)

  • create_slides() 안에서:

    1. presentation_data.json 을 돌면서 슬라이드별로

      • 제목 박스 objectId (TITLE)
      • 본문 박스 objectId (SUBTITLE/BODY) 를 딕셔너리로 수집하는 함수 만들기.
    2. GPT가 만든 내용도 “슬라이드별 제목 · 슬라이드별 본문” 두 덩어리로 나누기.
    3. batchUpdate 요청을

      • 제목 박스에는 제목만,
      • 본문 박스에는 본문 전체 가 들어가도록 분리해서 생성.
  • 이걸 적용하면,

    • 섹션 슬라이드는 깔끔한 제목 슬라이드로,
    • 내용 슬라이드는 제목 + 본문 구조로
    • 레이아웃이 깨지지 않게 정리될 예정.

5. 결론

오류는 그대로 해결된건 웹에서 보이는 오류는 사라짐 credentials.json문제 해결로 모든 기능들은 작동은 함 하지만 처음에 잘 작동했던 기능들이 뭔가 바뀌면서 꼬여서 정상적으로 작동을 안함

이 문제는 아마도 내가 기존에 있는 템플릿별로 내용들이 나오면 그 내용들을 각각 숫자별로 나눠서 해당 page에 맞게 수동으로 배치를 해 줬는데 수정하면서 그 부분이 나라감 그래서 기존에 어떤 방식으로 출력된 txt데이터를 나눴는지 presentation_data.json통해서 파악하는데 시간을 많이 소비함

일단 여기까지 정리하고 다음에 작업할땐 기존에 잘 작동했던 코드에서 어떻게 출력된 txt파일을 ppt에 적용시켜서 결과물을 출력했는지 한번 확인해봐야 할 듯 싶음