[이 모듈이 하는 일] 만들어진 키프레임 이미지가 설계도의 프롬프트와 조건에 맞는지 멀티모달 평가(review_image)로 확인한다. 기준 점수에 못 미치면 평가가 제안한 프롬프트로 한 번 다시 만들어 다시 평가하고, 그래도 안 되면 이미지 단계로 되돌려 보낸다(route "retry"). [입력] 이전 단계 JSON(vidia.doc@1). - blueprint.video: {visualStyle, negativeStyle} - blueprint.elements[]: {id, name, identityRules[]} - blueprint.scenes[]: {id, purpose, utterances, media.type, keyframes[{id, imagePrompt, references[{elementId, viewId}], referenceKeyframeIds}]} - assets: "kf:<장면>:<키프레임>", "sheet:<요소>:<구도>" - reviews.images: 이전 평가 기록(재방문일 때) - input.image_threshold: 통과 점수(0~10). 없으면 7. - promptOverrides: 이전에 고친 프롬프트(있을 때) [할 일] 1. 평가할 목록: assets 에서 "kf:" 로 시작하는 모든 키. 단 reviews.images 에 같은 key·같은 asset_id 로 pass 가 true 인 기록이 있으면 건너뛴다(이미 통과한 이미지는 다시 평가하지 않는다). 2. 키마다 평가 기준(criteria)을 한국어로 만든다. 400자 안팎으로 짧게: - "화면 내용: <그 키프레임 imagePrompt 의 핵심(주 피사체·상태·공간·카메라)>" - "이 장면의 뜻: <장면 purpose>" - references 가 있으면 "등장 요소 동일성: <요소 name> — " - 공통: "이미지 안에 글자·숫자·로고·워터마크가 없어야 함", "얼굴·손·핵심 부위가 화면 위쪽 80% 안에 있어야 함", "손가락·얼굴 왜곡, 물체 구조 붕괴가 없어야 함", "화풍: " 3. review_image(asset_id, criteria) 를 부른다. 결과의 score(0~10), pass, issues, suggested_prompt 를 읽는다. 결과에 pass 가 없으면 score ≥ 기준 점수를 pass 로 본다. 기준 점수는 input.image_threshold(없으면 7)이고, 도구의 pass 보다 이 기준을 우선한다. 4. 기준 미달이면 이 방문에서 한 번만 다시 만든다. - 이 키의 재생성 횟수(reviews.images 에서 같은 key 의 regenerated 가 true 인 기록 수)가 이미 2 이상이면 다시 만들지 않는다. - 새 프롬프트 = suggested_prompt(영어가 아니면 영어로 옮긴다). 없으면 원래 imagePrompt 에 issues 를 고치는 문장을 더한다. 글자 금지·동일성 조건은 빠뜨리지 않는다. - image_generate 를 부른다: prompt = "\n<새 프롬프트>\nAvoid: , text, letters, logos, watermark.", size "auto", reference_asset_ids = 원래 키프레임의 참조(references 의 시트 asset + referenceKeyframeIds 의 이미지, 최대 3장), label = 키. - 새 이미지를 같은 기준으로 review_image 로 다시 평가한다. - 새 이미지 점수가 원래보다 높거나 같으면 assets[키] 를 새 asset_id 로 바꾼다. 낮으면 원래 이미지를 유지한다. - promptOverrides[키] = 새 프롬프트. 5. 기록: 평가할 때마다 reviews.images 에 {"key": 키, "asset_id": 평가한 asset, "score": 점수, "pass": 통과 여부, "issues": 문제 목록(최대 5개, 짧게), "regenerated": 재생성한 이미지의 평가면 true, "visit": 이번 방문 번호(같은 키의 기록 수 기준)} 를 더한다. 6. 판정: - 다시 만든 뒤에도 기준 미달인 키가 있고, 그 키의 재생성 횟수가 2 미만이면 retry.images 에 그 키를 넣는다. 하나라도 있으면 route "retry". - 없으면 route "pass". 재생성 한도에 걸려 끝내 기준 미달인 키는 가장 점수가 높은 이미지를 assets 에 남기고 reviewWarnings 에 {"key": 키, "score": 점수, "issues": […]} 를 더한다. 7. 도구 오류로 평가하지 못한 키는 통과로 간주하고 reviewWarnings 에 남긴다(평가 장애로 제작 전체를 멈추지 않는다). [출력] 다음 최상위 필드만 담은 JSON 객체 하나(적지 않은 최상위 필드는 입력값이 그대로 이어지므로 다시 적지 않는다. 바꾸는 필드는 값 전체를 적는다.) - assets: 더 나은 이미지로 바뀐 키만 새 asset_id - reviews: {"images": 기존 기록 + 이번 기록, "videos": 기존 그대로} - retry: {"images": 다시 만들 키 목록, …기존 retry 의 다른 키는 그대로} - promptOverrides: 고친 프롬프트를 더한 객체 - reviewWarnings: 경고 목록(기존 뒤에 더한다) - route: "retry" 또는 "pass" - reviewSummary: {"reviewed": 평가 수, "passed": 통과 수, "regenerated": 재생성 수, "retry": retry.images 개수} [주의] - review_image 와 image_generate 는 비용이 드는 도구다. 이미 통과한 이미지는 다시 평가하지 않고, 한 방문에서 키마다 재생성은 한 번뿐이다. - 요소 시트("sheet:")는 평가하지 않는다. - 평가 결과를 지어내지 않는다. 도구가 준 점수만 쓴다. - 설계도(blueprint)는 바꾸지 않는다. - 설명·마크다운 없이 JSON 객체 하나만 답한다.