Skip to main content

Persona-Coordi-Scene 모델 설계

기준일: 2026-03-04 (MVP 합의 반영)

이 문서는 Persona/Coordi/Scene 도메인의 MVP 데이터 계약을 정의합니다.

1) 핵심 원칙

  1. 코디는 coordis + outfits 2계층으로 구성한다.
  2. outfits.coordiId는 필수다.
  3. 공유 적용은 내 계정 복제 방식만 허용한다.
  4. Scene 생성의 기준 이미지는 항상 outfit이다(image_1 = outfit).
  5. 착장 생성 기본 배치는 4장이다.
  6. Scene 진입 전에는 준비 단계에서 현재 사용할 outfit을 먼저 선택한다.
  7. 준비 단계 UI는 미래에 헤어, 메이크업 등 외형 프리셋 선택으로 확장 가능하지만, MVP 계약은 여전히 outfit 중심이다.

2) 도메인 엔티티

2.1 coordis (필수)

  • 패션 중심 재사용 단위
  • 핵심 필드
    • id, userId, name, description
    • positivePrompt, negativePrompt
    • refImageS3Path, refImage2S3Path
    • tags(jsonb), visibility, createdAt

2.2 outfits (필수)

  • persona + coordi 합성 결과 이미지
  • 핵심 필드
    • id, personaId, userId, name
    • coordiId (NOT NULL)
    • s3Path, thumbnailS3Path
    • outfitPrompt, outfitNegativePrompt
    • visibility, createdAt

MVP에서는 coordi_cards를 사용하지 않는다.

3) 관계

4) 생성 계약

4.1 코디 생성 (PERSONA_COORDI_GEN)

  • 목적: 패션 잡지 스타일의 순수 OOTD 코디 생성
  • 입력:
    • text_1, text_2
    • 참조 이미지(선택, i2i 모드)
  • 실행:
    • t2i/i2i 통합 기능
  • 결과:
    • 코디 이미지 + 코디 프롬프트 저장

4.2 착장 생성 (PERSONA_OUTFIT_GEN)

  • 목적: 페르소나에 코디를 합성한 착장 생성
  • 필수 입력:
    • personaId, coordiId
  • 기본 배치:
    • batch_size = 4
  • 결과:
    • 4개 후보 중 선택 저장하여 outfits 생성

4.3 Scene 생성 (PERSONA_TO_IMAGE_GEN, PERSONA_TO_VIDEO_GEN)

  • 준비 단계:
    • /personas/[id]/prepare/image|video
    • 현재는 outfitId 선택만 활성
  • 필수 입력:
    • outfitId
  • 주입 규칙:
    • image_1 = outfit.s3Path
    • image_2, image_3 = 사용자 참조 이미지(선택)

프롬프트 합성 규칙

  • resolved_positive = join([coordi.positivePrompt, scene.text_1])
  • resolved_negative = join([coordi.negativePrompt, scene.text_2])
  • 빈 값은 제외하며, 최종 빈 문자열("")은 허용

5) 공유/복제 정책

  1. 공개 코디는 타 사용자가 조회 가능
  2. 적용 시 코디는 내 계정으로 복제하여 사용
  3. 착장은 항상 내 페르소나 기준으로 새로 생성
  4. 타인 착장 원본을 내 Scene에 직접 주입하지 않음

6) Snapshot / Persistence

6.1 creations.snapshot 필수 키

  • text_1, text_2
  • personaId, coordiId, outfitId
  • featureKey, workflowGroupId, variantId

비고:

  • 준비 단계의 미래 확장 카테고리(hairStyleId, makeupId 등)는 MVP snapshot 필수 키가 아니다.
  • MVP 동안 Scene 실행 계약은 outfitId 기준을 유지한다.

6.2 projection

  • resolved_prompt, resolved_negative_prompt, ratio, refs

6.3 결과

  • creation_results.seed
  • creation_results.resultIndex
  • creation_results.s3Path
  • creation_results.thumbnailS3Path

정렬:

  • Creation(1):CreationResult(N)
  • creation.createdAt DESC
  • 내부 resultIndex ASC

7) Feature Key

  • PERSONA_PROFILE_IMAGE_GEN
  • PERSONA_COORDI_GEN
  • PERSONA_OUTFIT_GEN
  • PERSONA_TO_IMAGE_GEN
  • PERSONA_TO_VIDEO_GEN

참고 문서