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