feat: add versioned Blender production contracts
This commit is contained in:
@@ -1,42 +1,32 @@
|
||||
---
|
||||
name: short-video-images
|
||||
description: 승인된 짧은 영상의 컷별 시작·끝 이미지 요청서를 작성하고 11 이미지의 실제 PNG와 장면 연속성을 검증할 때 사용한다.
|
||||
description: 승인된 컷의 Blender Scene·시작/끝 상태와 논리 프레임을 작성하고 11의 실제 .blend·PNG·연속성을 검증한다.
|
||||
---
|
||||
|
||||
# 컷 이미지 요청과 결과 확인
|
||||
# Blender 컷 끝점 렌더
|
||||
|
||||
11-images만 담당한다. 각 컷에 시작과 끝 프레임이 필요하며 요청서만으로 생성 완료를 보고하지 않는다.
|
||||
## 입력과 경계
|
||||
|
||||
## 읽을 자료와 시작 조건
|
||||
[공통 계약](../../../docs/workflow-contracts.md), [전달 형식](../../../docs/contracts.md), [제작 지침](../../../docs/short-video-guide.md), [결과 스키마](../../../contracts/artifact.schema.json), [검토 양식](../../../templates/review.md)을 읽는다. 새 결과는 1.1이고 기존 1.0 결과를 보존·참조한다. 필수 입력 topic/language, Qwen3-TTS 기존 qwen3-tts 환경, 세로 9:16·최종 180000ms 이하·실측 컷 5000ms 이하를 유지한다.
|
||||
|
||||
- [공통 계약](../../../docs/workflow-contracts.md): 입력·선행 버전·경로·승인·실제 미디어 완료 기준.
|
||||
- [제작 지침](../../../docs/short-video-guide.md): 근거와 숫자, 화면의 역할, 연속 연결, 그림체와 주석.
|
||||
- [11 양식](../../../templates/stages/11-images.json), [결과 스키마](../../../contracts/artifact.schema.json), [검토 양식](../../../templates/review.md).
|
||||
- [그림체 기준](../../../references/1.png): 실제 이미지를 열어 가는 윤곽선·단순 형태·정돈된 색면·제한적인 음영을 확인한다.
|
||||
같은 제작물의 유효한 선행 버전·실제 파일과 topic/story/scenes 승인을 확인하고 사용 버전을 inputs에 기록한다. 필요한 결과·승인이 없거나 stale이면 누락과 돌아갈 단계를 총괄에 보고한다. 같은 유효 승인 버전은 다시 묻지 않는다. 08의 제한된 대표 화면·짧은 움직임만 scenes 승인 전 검토용으로 허용하며 정식 10–12 전체 제작·완료와 구분한다. 새 08·09 승인 후 정식 제작한다.
|
||||
|
||||
1. 제작물의 `topic`, `language`를 보존하고 세로 9:16, 전체 180000ms 이내, 각 컷 0ms 초과 5000ms 이하 조건을 확인한다.
|
||||
2. 같은 제작물의 유효한 02-research, 03-script, 07-cuts, 08-scenes, 09-entities, 10-references를 읽고 실제 사용 버전을 `inputs`에 기록한다. 10의 모든 필요한 기준 PNG와 참조가 검증되어야 한다. 자료가 없거나 stale·부분 결과이면 먼저 해결할 단계와 이유를 총괄에 보고한다.
|
||||
3. scenes 검토의 실제 사용자 응답과 `artifact_refs`가 사용하는 07·08·09 버전을 승인했는지 확인한다. 10이 이 승인 전에 진행되었다면 유효한 선행 완료로 취급하지 않는다. topic·story 등 앞선 승인도 유효해야 한다. 개별 호출로 선행 결과·승인을 우회하지 않으며 같은 승인 버전에 재승인을 요구하지 않는다.
|
||||
원본 references/1.png를 보존하고 단순 형태·정돈된 색을 교육용 3D로 해석한다. 단순 배경·부드러운 조명·선명한 형태를 사용하며 평면 복제·캠핑 소재·상표를 강제하지 않는다. 02의 조사와 대본 근거로 모델·재질·방향·상태·수치를 확인하고 사실에 없는 구조를 만들지 않는다. 설명 텍스트는 검증한 합성 텍스트로 배치한다.
|
||||
|
||||
## 컷별 요청서 작성
|
||||
## 컷별 Scene·끝점 요청
|
||||
|
||||
`payload.request`의 기존 `model`, `frames`만 사용하며 모델은 `gpt-image-2.5-sunburst`다. 스타일은 10의 기준 결과와 원본 `references/1.png`에 연결한다.
|
||||
[11 양식](../../../templates/stages/11-images.json)을 사용한다. 유효한 02/03/07/08/09/10과 10의 실제 기준 .blend·PNG를 확인한다. request={engine:"Blender",scene_path,render_profile,frames}. scene_path는 만들 원본의 루트 상대 경로다.
|
||||
|
||||
- 각 frame은 유일한 `id`, `cut_id`, `position`, `prompt`, `reference_ids`를 가진다. 07의 모든 컷마다 `position=start`와 `position=end`가 정확히 하나씩 있어야 한다. 추가 컷·중복 위치·누락은 허용하지 않는다.
|
||||
- `cut_id`는 07·08의 같은 컷을 가리키고, `reference_ids`는 10의 요청 `id`와 결과 `reference_id`가 일치하는 검증된 기준 이미지를 참조한다. 스타일 및 해당 컷의 인물·배경 기준을 포함하고 09의 등장 인물·배경 ID를 프롬프트에 연결한다.
|
||||
- `prompt`는 03의 관련 블록·주장, 02의 확인한 근거, 08의 해당 start_state/end_state와 camera를 따른다. 인물·배경의 고정 특징을 유지하고 의상·표정·시간 변화는 장면에 근거해 명시한다. 원본 스타일 이미지의 등장인물을 모든 영상의 고정 인물로 삼지 않는다.
|
||||
- 작동 원리와 단면·지도·주석의 구조·재료·방향·수치를 조사·대본과 대조한다. 근거가 없거나 선행 설계와 충돌하면 임의로 도해하지 말고 수정할 단계·컷을 보고한다. 단순화해도 사실에 중요한 차이를 남긴다.
|
||||
- 그림체는 첨부의 가는 윤곽선·단순 형태·색면·제한적 음영을 따른다. 참고 Shorts의 입체 렌더링이나 캠핑 소재·상표 복제를 강제하지 않는다. 부정확한 생성 글자·숫자는 검증한 텍스트로 합성하도록 메모한다.
|
||||
frame={id,cut_id,position,prompt,reference_ids,scene_name,frame_index}. 모든 실제 07 컷마다 start/end가 정확히 하나씩 있고 ID가 유일해야 한다. reference_ids는 10의 검증된 요청/결과 ID, scene_name은 비어 있지 않은 실제 Scene 이름, frame_index는 0 이상 논리 프레임이다. 같은 컷 start/end는 같은 Scene을 사용한다. 조사·대본·08 상태와 카메라·09 고정 특징을 prompt에 연결한다.
|
||||
|
||||
## 인접 프레임 연결
|
||||
continuous는 같은 Scene의 앞 end와 뒤 start 상태를 맞추고 실제 PNG를 공유해도 위치별 별도 ID를 유지한다. cut은 서로 다른 Scene의 같은 프레임 번호를 구별하며 캐시 식별에 Scene 이름을 포함한다. 연결을 임의로 바꾸지 않는다. Blender 실제 번호=논리 프레임+1로 평가한다. 영상은 [start,end) 구간이고 끝점 PNG는 end 자체를 평가한다.
|
||||
|
||||
08의 `connections.mode`와 `reason`을 따른다. continuous는 앞 컷 end와 다음 컷 start의 같은 인물·배경·물체 위치·행동 진행·흐름 방향·카메라 상태를 맞춘다. 동일한 이미지를 공유할 수 있으나 각 컷·위치에는 별도 frame ID를 유지하고, 두 결과의 실제 `media.path` 및 공유하는 end/start frame ID 관계를 `review.md`에 명시한다. cut은 위치·시간·시점이 어떻게 바뀌는지 프롬프트와 검토 메모에서 설명한다. 장면 연결을 이미지 단계에서 임의로 변경하지 않는다.
|
||||
result는 null 또는 {scene_file,frames:[{frame_id,media:image}]}다. 요청마다 실제 PNG가 누락·중복·추가 없이 대응하며 실제 .blend의 Scene·프레임·상태·재질·연결을 확인한다. 원본과 RenderProfile은 후속 12의 기준이다.
|
||||
|
||||
## 실제 결과 확인과 전달
|
||||
## 실제 결과와 전달
|
||||
|
||||
실제 제작 시 해당 모델과 세로 출력 지원을 확인한다. 확인하지 않은 API 파라미터를 고정하거나 다른 모델로 무단 대체하지 않는다. 지원이 확인되지 않거나 실제 결과가 없으면 요청서를 보존하고 `result=null`, `awaiting_input`을 총괄에 보고한다.
|
||||
승인된 저장소 내 Blender 실행 경로를 사용한다. 기존 설치를 무단 변경하거나 다른 도구로 바꾸지 않는다. 설치·요청 준비와 실제 렌더링 성공을 구분한다. .blend는 BlendFile={path,verified,sha256,blender_version}로 기록하고 실제 파일·해시·버전·재열기·Scene/자산을 검증한다. PNG/MP4 media로 위장하지 않는다. RenderProfile의 실제 지원을 확인하며 요청값을 실측 결과로 복사하지 않는다.
|
||||
|
||||
- 실제 부분 결과는 `payload.result.frames`에 보존한다. 각 결과는 `frame_id`, `media`이며 frame_id는 요청 frame의 `id`와 일치해야 한다. 모든 요청의 start/end 결과가 누락·중복 없이 검증되기 전 전체 complete로 보고하지 않는다.
|
||||
- `media`는 기존 `{path, kind, verified, duration_ms, width, height}`를 사용한다. 경로는 저장소 루트 기준이다. 실제 파일 존재·PNG 내용 형식·해상도와 화면을 확인한 경우만 `verified=true`다. `kind=image`, `duration_ms=null`, 크기는 실제 측정값이며 미확인 값은 null이다. 확장자·요청 크기·예제 경로만으로 검증하지 않는다. 실제 세로 9:16, 컷 상태·고정 특징·근거·연속성도 확인한다.
|
||||
- 자기 단계의 새 `stages/11-images/r<revision>/artifact.json`과 `review.md`만 작성하고 이전 버전을 덮어쓰지 않는다. 메모에 적용 원칙과 결과, 비적용 이유, 실제 모델·지원 확인, 컷·프레임·파일별 검증과 미확인 사항을 적는다. 새 JSON 필드·필수 입력·승인 지점은 만들지 않는다.
|
||||
- 모든 컷의 두 위치와 결과 검증을 대조해 준비 여부·남은 문제·후속 영향과 수정할 단계를 총괄에 보고한다. `project.json`, 상태·현재 포인터·사용자 승인은 총괄만 변경한다.
|
||||
media는 기존 여섯 키 {path,kind,verified,duration_ms,width,height}다. PNG는 image·duration_ms=null, MP4는 video·실측 양수 길이이며 실제 형식·해상도·9:16·내용을 확인한다. 확인한 파일만 verified=true이고 미확인 크기·시간은 null이다. 데이터 경로는 루트 상대 경로다. 실제 파일이 없으면 result=null·awaiting_input, 실행/검증 실패는 failed로 보고한다. 부분 결과와 실패 시도를 보존하며 전체 요청 결과가 검증되기 전 complete로 보고하지 않는다.
|
||||
|
||||
자기 단계의 projects/<project_id>/stages/<stage_id>/r<revision>/artifact.json과 같은 버전 review.md만 작성하고 이전 결과를 덮어쓰지 않는다. 실제 사용 버전·파일별 검사·명령·종료코드·미확인 영역·적용 원칙과 비적용 이유를 적는다. project.json·상태·현재 포인터·사용자 승인은 총괄만 갱신한다. 필드·열거값은 계약을 따르고 새 필수 입력·승인 지점을 만들지 않는다.
|
||||
|
||||
Reference in New Issue
Block a user