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를 사용하지 않습니다.

사용자 캐릭터 시트 등록 (2026-09-10)​

  • 홈과 목록의 새 페르소나에서 동일하게 AI로 생성과 내 이미지로 등록을 선택한다. 홈에서는 목록으로 이동한 뒤 선택 창을 연다. AI 생성은 기존 온보딩과 생성 패널을 유지한다.
  • 등록은 PNG/JPG/WebP 이미지 한 장(최대 20MB), 필수 이름, 선택 설명으로 완료한다. 업로드 전 전체 이미지와 크기를 확인할 수 있다.
  • 원본 비율과 파일을 보존한다. 선택 사항인 목록 썸네일 조정에서만 16:9 영역을 별도 JPEG로 저장한다.
  • 기존 POST /v1/personas와 s3Path/thumbnailS3Path를 사용한다. 생성 작업이나 별도 에셋 테이블은 만들지 않는다.
  • 등록 완료 후 목록 캐시를 갱신하고 상세 페이지로 이동한다. 프로젝트 에셋과 캐릭터 연결에서도 기존 페르소나와 동일하게 선택한다.
  • 목록에는 썸네일을, 상세보기·다운로드·이미지 생성 참조에는 원본 캐릭터 시트를 우선 사용한다. 합성 참조를 만드는 경로도 썸네일로 대체하지 않는다.
  • 업로드/등록 중 중복 제출과 닫기를 막고, 실패 시 입력 내용을 보존한다. 재시도 시 성공한 파일 업로드를 재사용한다.

페이지 흐름​

  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 범위에서 제외한다.

참고 문서​