풀스택 개발자 과정 75일차

너구·어제

풀스택 성장과정

목록 보기
78/79

팀 프로젝트

2026-08-25 개발 기록

오전 — MD 중고거래 / 사전예약

  • MD 중고거래 등록/조회/구매요청/찜 기능 추가 — 매물 등록, 이미지 업로드, 구매요청, 찜(좋아요) 토글까지 한 번에
  • MD 사전예약 페이지 로그인 필수로 변경
  • 프로필에 중고거래 활동 내역 섹션 추가 — 내가 등록한 매물 / 찜한 매물 목록을 프로필에서 바로 확인 가능하게
  • 알림 관련 자잘한 수정 2건
    • MD 사전예약 알림 클릭 시 공연 상세가 아니라 MD 페이지로 이동하도록 수정
    • 프로필 진입할 때마다 새 뱃지 페이지로 강제 이동하던 동작 제거

오전~점심 — 결제 연동 (Toss Payments)

  • MD 사전예약 / 중고거래에 Toss Payments 결제 연동
    • 공용 TossPaymentClient로 결제 승인(confirm)/취소(cancel) API 연동
    • 중고거래 구매 흐름을 REQUEST → APPROVED → PAID → COMPLETED로 확장 — 구매자가 결제해야 판매자가 거래완료 처리 가능
    • 결제 성공/실패 후 돌아오는 공용 /payment/result 페이지로 두 도메인(MD/중고거래) 모두 처리
    • 사업자등록 없이 쓸 수 있는 Toss 공개 테스트 키를 기본값으로 사용 (실결제 없음)

오후 — AI 포스터/일기 기능

페스티벌 기록에 AI 기능을 붙이는 게 오늘의 메인 작업이었다.

  1. AI 포스터 생성 도입 (Gemini 이미지 모델)
  • 업로드 사진 + 공연명/무드/한줄평/해시태그로 프롬프트를 구성해 Gemini 이미지 모델(gemini-3.1-flash-lite-image)에 전달, 합성된 포스터를 저장
  • 기존 html2canvas 화면 캡처 + 랜덤 사진 배치 방식은 완전히 제거
  1. 포스터 품질 개선 — 스타일 참고 이미지 + 직접 프롬프트
  • 잘 만든 예시 포스터 3장(스크랩북 콜라주 스타일)을 스타일 참고용으로 함께 전달하도록
    프롬프트 재설계 — "이 이미지들은 스타일만 참고하고 내용은 복사하지 마" 식으로 역할
    분리
  • 공연명/날짜를 포스터 안에 타이틀 텍스트로 직접 그려 넣게 지시 (기존엔 텍스트 자체를
    금지했었음)
  • "어떤 느낌의 포스터를 원하시나요?" 직접 입력창 추가 — 생성/재생성 화면 둘 다에 반영,
    프롬프트에서 최우선으로 취급
  1. 무료 생성 횟수를 (회원, 공연) 단위로 관리
  • 기존엔 festival_record.ai_regenerated_count로 기록 단위 관리 → 기록을 지우고 같은
    공연으로 새로 만들면 무료 횟수가 초기화되는 버그가 있었음
  • festival_record_ai_quota 테이블을 새로 만들어 (회원, 공연) 단위로 관리하도록 리팩터링
  1. AI 일기 생성 기능 신설
  • 기록에 이미 있었지만 미사용이던 ai_diary/ai_summary 컬럼을 실제로 채우기 시작
  • 새 GeminiTextClient로 Gemini 텍스트 모델 호출 —
    공연명/날짜/장소/한줄평/셋리스트/먹거리/메모/해시태그를 전부 모아서 "그 날 하루를
    되돌아보는 일기"를 작성하도록 프롬프트 구성
  • [요약] / [본문] 마커로 응답을 파싱해서 요약과 본문을 한 번의 호출로 같이 생성
  • 포스터와 동일하게 무료 3회 제한 적용 (festival_record_ai_quota에 diary_used_count 컬럼
    추가)
  1. 재생성 히스토리 갤러리
  • 포스터/일기를 다시 만들 때마다 덮어쓰지 않고 버전(record_poster_version,
    record_diary_version)으로 남겨서, 이전에 만든 것 중 하나를 다시 골라 쓸 수 있게 함
    (버전 선택은 무료 횟수 소모 안 함)
  • 무료 생성 "n/3회 사용" 표시를 항상 노출하도록 UI 개선
  • AI 일기 요약을 기록 목록 카드에도 노출 (한줄평 대신 AI 요약을 우선 표시) 그 외 — 팀 동기화
  • PR #48이 머지된 직후에 마지막 커밋 하나가 push돼서 PR에 누락되는 일이 있었음 → 새로 PR
    #50을 만들어 정리
  • 팀원들이 각자 작업한 라이브 스트리밍 / 오픈채팅 실시간 채팅 / 계정설정 기능이
    순차적으로 develop에 머지됨 → 로컬 pull하면서 새로 추가된 의존성(livekit, stomp 등)
    설치, 서버 재기동으로 확인

0개의 댓글