Skip to main content

페르소나 서비스 개요

기준일: 2026-04-23 (Scene studio prompt 및 영상 시작 이미지 흐름 반영)

페르소나 서비스는 Persona -> Coordi -> Outfit -> Scene 흐름으로 구성됩니다.

MVP 핵심 원칙

  1. coordis(코디)와 outfits(착장)는 별도 테이블로 분리한다.
  2. outfits.coordiId는 필수이며, 착장은 반드시 특정 코디를 기반으로 생성된다.
  3. 공유는 원본 참조가 아니라 내 계정 복제 방식으로만 허용한다.
  4. 착장 생성 기본 배치는 4장(batch_size=4) 으로 고정한다.
  5. 사진 Scene 생성 시 기본 입력 이미지는 페르소나 이미지 + 선택 착장 이미지다.
  6. 영상 Scene 생성 시 기본 입력 이미지는 등록된 사진 1장이며, 이 사진을 단독 시작 이미지로 사용한다.
  7. 사진 Scene 생성에서는 추가 참조 이미지 1장을 허용하고, 영상 Scene 생성에서는 사용자가 직접 이미지를 업로드하지 않는다.
  8. Persona 생성은 MVP 동안 realistic-only 정책을 사용한다.
  9. 생성 프롬프트는 studio + dynamic + user 계층으로 분리한다.
  10. Scene 생성에도 studio prompt를 사용하며, 품질/입력 보존/영상 일관성 규칙은 모두 이 레이어로 통일한다.
  11. 기본 에셋은 공개 범위가 아니라 시스템 제공 출처로 분리한다.

도메인 경계

  • personas: 정체성(얼굴/체형/피부 톤 등) 기반 이미지
  • coordis: 패션 중심 재사용 코디(이미지 + 선택 텍스트 프롬프트)
  • outfits: persona + coordi로 생성한 페르소나 종속 결과 이미지
  • default assets: 관리자가 직접 업로드한 시스템 제공 샘플 자산

기본 에셋 정책

용어

  • 기본 에셋(Default Asset)은 서비스 온보딩과 탐색 편의를 위해 관리자가 제공하는 시스템 자산이다.
  • PUBLIC/PRIVATE는 공개 범위다.
  • USER/SYSTEM은 자산 출처다.
  • 두 개념은 서로 대체되지 않는다.

분리 원칙

  1. 기본 에셋PUBLIC의 별칭으로 취급하지 않는다.
  2. 페르소나/코디/착장에는 assetSource = USER | SYSTEM 축을 별도로 둔다.
  3. 관리자가 직접 업로드한 사진/영상은 creations가 아니라 별도 에셋 저장 모델로 관리한다.
  4. 일반 유저는 SYSTEM 에셋을 읽기 전용으로만 본다.
  5. 향후 편집이 필요하면 원본 수정이 아니라 내 계정으로 복제 흐름으로 확장한다.

사용자 경험 원칙

  1. 각 좌측 목록 영역에 기본 에셋 포함 체크박스를 둔다.
  2. 기본값은 포함이다.
  3. 체크 해제 시에는 사용자 자산만 표시한다.
  4. 기본 에셋은 일반 유저에게 수정/삭제 액션을 노출하지 않는다.

관리자 경험 원칙

  1. 관리자 메뉴에 기본 에셋 관리를 별도로 둔다.
  2. 탭은 페르소나, 코디, 착장, 이미지/영상으로 분리한다.
  3. 관리자는 각 에셋에 대해 업로드, 썸네일, 연결 대상, 정렬 순서, 활성화 상태를 관리한다.

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

페이지 흐름

  1. /personas
    • 목록 + 새 페르소나(생성/등록)
  2. /personas/[id]
    • 탭: 코디 | 착장
    • 코디 생성/복제/선택, 착장 생성/선택
  3. /personas/[id]/prepare/image|video
    • Scene 생성 전 촬영 준비 단계
    • 사진 준비는 착장 선택 중심으로 동작한다.
    • 영상 준비는 해당 페르소나에 등록된 사진 선택 중심으로 동작한다.
    • 사진 준비는 향후 헤어, 메이크업 등 외형 프리셋 카테고리로 확장 가능
  4. /personas/[id]/generate/image|video
    • 사진 생성은 준비 단계에서 선택한 outfit 또는 페르소나 단독 입력을 기준으로 Scene 생성
    • 영상 생성은 준비 단계에서 선택한 imageId 사진을 단독 시작 이미지로 사용해 Scene 생성

생성 입력 계약

A) 코디 생성

  • 단일 기능: 코디 생성 (t2i/i2i 통합)
  • 입력:
    • text_1, text_2
    • 필요 시 참조 이미지(i2i)
  • 출력:
    • 패션 중심 코디 이미지 + 코디 프롬프트

B) 착장 생성

  • 입력:
    • personaId (대상 페르소나)
    • coordiId (필수)
  • 기본 배치: 4장
  • 출력:
    • 착장 후보 4장 (선택 저장)

C) Scene 생성

사진 Scene 생성:

  • 입력:
    • personaId (필수)
    • outfitId (선택)
    • 추가 참조 이미지 1장 (선택)
  • 주입:
    • image_1 = persona
    • image_2 = outfit (착장 선택 시)
    • 추가 참조 이미지는 착장 여부에 따라 다음 빈 이미지 슬롯에 배치
    • text_1, text_2 = studio prompt + user prompt 기준으로 생성

영상 Scene 생성:

  • 입력:
    • personaId (필수)
    • imageId (필수, 해당 페르소나에 등록된 사진 결과)
  • 주입:
    • image_1 = selected registered photo
    • batch_size = 1
    • text_1, text_2 = studio prompt + user prompt 기준으로 생성
  • 사용자가 직접 시작 이미지를 업로드하지 않는다.

프롬프트 표시:

  • 생성 레시피의 최종 프롬프트dynamic + user 관점의 사용자 제어 값을 보여준다.
  • studio prompt는 기본적으로 접힌 상태로 분리하고, 필요 시 사용자가 펼쳐 확인/수정할 수 있다.
  • 영상 일관성 규칙은 별도 영역으로 구분하지 않고 영상 Scene의 studio prompt에 포함한다.

촬영 준비 단계 원칙

  1. Scene 생성 전에는 반드시 준비 단계를 거친다.
  2. 사진 준비 단계의 기본 선택 단위는 outfit이다.
  3. 영상 준비 단계의 기본 선택 단위는 등록된 photo다.
  4. 사진 준비 단계는 미래 확장을 고려해 외형 구성 선택 페이지로 설계한다.
  5. 헤어, 메이크업 등의 외형 프리셋 카테고리는 추후 추가한다.

저장 계약

creations.snapshot 필수 키

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

projection

  • resolved_prompt, resolved_negative_prompt, ratio, refs

creation_results

  • seed, resultIndex, s3Path, thumbnailS3Path

기본 에셋 저장 방향

엔티티 필드

  • personas, coordis, outfits
    • assetSource: USER | SYSTEM
    • 필요 시 isArchived 또는 isActive
    • 필요 시 sortOrder

별도 미디어 저장소

  • 관리자 업로드 이미지/영상은 별도 테이블(예: persona_media_assets)로 관리한다.
  • 이유:
    • creations는 생성 비용, 레시피, 워크플로우, 결과 이력의 의미를 가진다.
    • 기본 이미지/영상은 생성물이 아니라 운영용 카탈로그 자산이다.
    • 따라서 두 모델을 분리해야 의미와 권한이 명확해진다.

Feature Key (MVP)

  • PERSONA_PROFILE_IMAGE_GEN
  • PERSONA_COORDI_GEN (코디 생성 통합 키)
  • PERSONA_OUTFIT_GEN
  • PERSONA_TO_IMAGE_GEN
  • PERSONA_TO_VIDEO_GEN

프롬프트 정책

  • Persona / Coordi / Outfit 생성은 studio + dynamic + user -> final 규칙을 따른다.
  • 저장 프롬프트에는 studio를 남기지 않고 dynamic + user만 보존한다.
  • Persona는 realistic-only를 사용하며, style, personality 태그는 MVP 범위에서 제외한다.

참고 문서