Skip to main content

Decisions, Current State, and Roadmap

1. 설계 결정 상태

주제상태결정 또는 기준
서비스 정체성확정단순 AI Video Generator가 아니라 계층형 영화 제작 데이터 모델 기반 워크스페이스
탐색 구조확정Script에서 Project -> Sequence -> Scene -> Beat/Shot으로 점진적 구체화
Beat와 Shot 관계확정Scene 아래 독립 엔티티, BeatShotMapping으로 M:N 연결
상속 범위확정Project -> Sequence -> Scene의 기본값 해석. Beat와 Shot은 서로 상속하지 않음
Concept Frame 위치확정Scene 레벨의 시각 구체화 자료
Performance의 위치확정Beat Design 안의 독립 하위 영역
Asset 소유 모델확정Project와 분리된 Asset Library + 프로젝트·단계별 Usage/State/Reference
Blender 역할확정Physical / World State. Narrative State의 단일 저장소가 아님
생성 결과 모델확정Attempt를 누적하고 Selected Clip을 명시적으로 선택
Edit Relation확정인접 Shot의 연결이 만드는 관객 추론, 감정, 연속성, 정보 공개를 별도 관계로 관리
Context Director 역할확정전체 맥락을 해석하되 직접 생성하지 않고 Renderer Brief와 QA 기준을 생성
Context Director 명칭임시역할 계층의 작업명이며 Montage Director AI, Narrative Context AI 등 대체 명칭 검토 가능
상속과 프롬프트 주입확정resolved context는 Director 입력이며 Renderer에는 선별된 부분집합만 전달
Shot 생성 단계확정Frame Design 기반 Start Image와 Motion Design 기반 Video 생성을 분리
Renderer Prompt 원칙확정현재 보이는 상태를 긍정형으로 기술하고 미래·숨김 정보는 제외
관계형 DB 스키마미결정엔티티, ID, 삭제·복구, JSONB 경계, 인덱스 설계 필요
Script 범위 추적미결정Script 수정 후 Sequence/Scene 원문 범위를 유지·재매핑하는 정책 필요
Blender 동기화미결정초기 수동 연결 이후의 일방향/양방향 동기화 계약 필요
모델 Adapter 계약미결정provider별 기능 선언, 오류·비용 표준화, 참조 자료 변환 계약 필요
Field Routing 스키마미결정단일 route와 복수 audience, visibility/purpose 분리 여부 결정 필요
Context Director JSON미결정Context Window, Brief source, withheld information, QA 출력 계약 필요
편집 타임라인 모델미결정Selected Clip 이후의 편집 데이터 모델과 export 정책 필요

2. 현재 구현 상태

현재 frontend-vivid-film과 기존 backend에는 다음 기반 기능이 구현되어 있다.

  • Film 프론트엔드의 인증·포인트 연동 기반
  • Scene 단위 평면도 에디터: 카메라, 인물, 조명, 소품, 벽의 배치·회전·스케일과 카메라 FOV
  • 평면도 서버 저장·불러오기 API 및 참조 이미지의 S3 외부화
  • 카메라 중심 Shot 목록과 평면도·참조 이미지를 사용한 이미지 생성 연동
  • 생성 결과의 기본 표시와 기존 생성 파이프라인 연계

자세한 인프라와 구현 이력은 film.surfai.org Subdomain Service Plan을 기준으로 한다.

다음은 아직 구현됐다고 간주하지 않는다.

  • Project, Sequence, Scene, Beat, Shot의 완전한 저장 모델과 화면
  • Script 자동 Sequence/Scene 분해 및 사용자 승인 흐름
  • Beat-Shot Mapping 편집기
  • Edit Relation과 Timeline View
  • 전역 Asset Library와 Asset Usage/State/Reference 모델
  • Context Director, Field Routing, Renderer Brief Compiler, Reference Composer
  • Frame Design 기반 시작 이미지와 Motion Design 기반 영상 생성 파이프라인
  • 범용 Model Adapter
  • Blender Scene 동기화
  • Context QA, Attempt 비교, Selected Clip, 편집 타임라인 모델

3. 권장 구현 순서

단계범위완료 기준
1. 프로젝트 골격Project, Script, Sequence CRUD와 순서·원문 발췌사용자가 Script로부터 Sequence 구조를 만들고 수정·승인 가능
2. Scene 구조화Sequence 안의 Scene CRUD, physical setting, 기존 평면도 연결Scene이 Sequence 문맥과 Layout을 함께 보유
3. 서사와 편집 관계Beat, Shot, Mapping, Performance, Edit Relation 입력Beat와 Shot을 M:N 연결하고 인접 Shot의 편집 의도를 설계 가능
4. Asset 기반Asset Library, Version, Usage, State, Reference동일 에셋을 여러 Project에서 안전하게 재사용하고 버전 추적 가능
5. Context와 생성 CompilerContext Window, Director, Field Routing, Frame/Motion Brief, attempt snapshot전체 맥락과 Renderer 전달 정보가 분리되고 출처·제외 이유 확인 가능
6. 모델·Blender 확장model adapter, Blender link, previs모델 기능 차이를 명시하고 물리 씬 입력을 연결
7. QA와 후반 작업Context QA, Selected Clip, continuity review, editing timeline전후 맥락을 검수하고 결과를 선택해 편집 단계로 전달 가능

4. 구현 전 결정해야 할 세부 계약

Script와 구조화 결과

  • Script를 수정할 때 기존 Sequence/Scene의 원문 범위를 자동 이동할지, 사용자 검토 상태로 둘지
  • AI 재분해 결과를 기존 수동 수정과 어떻게 비교·병합할지
  • 원문 발췌를 문자 offset, 문단 ID, 별도 segment ID 중 무엇으로 식별할지

상속과 상태

  • 상속 가능한 필드와 반드시 로컬이어야 하는 필드의 목록
  • unset, 명시적 제거, 로컬 override의 API 표현
  • 에셋 상태가 Sequence·Scene·Beat에 중복 지정될 때 충돌 해석 규칙

버전·삭제·권한

  • Script, Asset, Concept Frame, Layout, Blender Scene, Generation Attempt의 버전 단위
  • 삭제 시 하위 엔티티와 과거 Attempt를 보존하는 방법
  • 공유 Asset의 읽기·복제·프로젝트 전용 파생 권한

AI 입력과 검증

  • 모델별 capability registry의 스키마
  • 참조 이미지가 모델 상한을 넘을 때의 선택·합성 규칙
  • 모델이 지원하지 않는 시간축·카메라·연기 지시를 사용자에게 알리는 방식
  • 생성 실패의 분류, 재시도, 비용·환불 정책

Context Director와 편집 관계

  • Context Window의 기본 크기, 확장 조건, 토큰 예산
  • Edit Relation과 비인접 Shot Relation의 테이블 분리 여부
  • Field Routing의 단일·복수 audience 표현과 접근 제어
  • Context Director 입력·출력, Frame/Motion Brief, QA 결과 JSON Schema
  • 긍정형 Renderer Prompt 변환과 모델별 negative prompt 예외 정책
  • Start Image Attempt와 Video Attempt의 연결 및 비용 기록 방식

5. 문서 유지 원칙

이 카테고리는 목표 도메인 모델의 단일 기준 문서다. DB 스키마, API, 화면 구현이 확정되면 해당 문서는 여기의 원칙과 모순되지 않는지 검토한 뒤 구체 계약 문서로 확장한다. 구현 상태가 바뀌면 본 문서의 "현재 구현 상태"와 changelog를 함께 갱신한다.