[이 모듈이 하는 일] 성인·수험생 대상 강의·온라인 클래스 대본을 평가한다. 학습 목표, 작게 나누기, 개념별 예시와 반례, 정의·공식의 정확성, 이해 확인 질문과 정리를 본다. 평가 팩 lecture@1(강의·교육(성인 학습), 10축, 통과선 60점)으로 대본을 채점하고, 통과 여부와 고칠 방향을 evaluation 에 적는다. 다음 단계를 고를 수 있게 route 를 "pass"(통과) 또는 "rewrite"(개선 필요)로 정한다. 대본개선 모듈과 짝을 지으면 평가 → 개선 루프가 된다. [이 팩이 보는 것] - 무겁게 보는 축: 학습 목표, 정확성, 작게 나누기, 예시, 구성 - 전체 10축: 학습 목표, 선수 지식 연결, 작게 나누기, 예시, 정확성, 이해 확인, 구성, 몰입, 쉬운 설명, 정리 - 평가자가 근거 없는 사실 단정을 하나라도 지적하면 점수와 무관하게 통과하지 못한다. - 평가자 2명이 축마다 0~10점을 매기고 가중 평균을 100점으로 환산한다(5점 = 같은 장르의 평범한 영상). [입력] 이전 단계 JSON(vidia.doc@1). - blueprint: 평가할 설계도. - input.script_text: 설계도 없이 대본 글만 평가할 때(선택). blueprint 가 있으면 blueprint 를 쓴다. - input.facts: 근거자료(선택, 있으면 사실 판정 기준으로 넘긴다). - evaluation: 이전 평가 결과(재평가일 때). round 와 history 를 이어 쓴다. [할 일] 1. 평가 대상을 정한다. blueprint 가 있으면 blueprint, 없고 input.script_text 가 비어 있지 않으면 그 글이다. 둘 다 없으면 평가하지 말고 "error" 에 "평가할 대본이 없습니다" 를 적고 route "rewrite" 로 내보낸다. 2. evaluate_script 를 한 번 부른다. - blueprint: 입력의 blueprint 를 그대로(고치지 않는다). 설계도가 없으면 대신 text: input.script_text(200000자 이내로 자른다) - pack: "lecture@1" — 이 모듈은 항상 이 팩을 쓴다(input.evaluation_pack·설계도 authoring.evaluationPack 은 보지 않는다) - facts: input.facts(있을 때만, 20000자 이내로 자른다) models 는 넘기지 않는다(기본 평가자 2명). 3. 도구 결과로 evaluation 을 만든다. - packId: 도구 결과 pack - profile: null - source: 설계도로 평가했으면 "blueprint", 글로 평가했으면 "text" - score: 결과 score(0~100) - pass: 결과 pass(true/false). 점수가 통과선 이상이어도 사실 위반·블로커가 있으면 도구가 false 로 준다. 그대로 따른다. - threshold: 결과 threshold - decision: 결과 decision(pass / rewrite / fail) - weakAxes: 결과 weakAxes 그대로([{key,label,avg,fix}]) - guidance: 결과 guidance(재작성 지침) 그대로. 비어 있으면 weakAxes 의 fix 를 줄마다 이어 붙인다. - blockers: 결과 blockers(없으면 []) - factViolations: 결과 factViolations(없으면 []) - readability: 결과 readability 의 ok 와 findings 중 severity 가 hard 인 것의 message 목록 - round: 이전 evaluation.round 가 있으면 그 값, 없으면 1 - history: 이전 evaluation.history 배열 뒤에 {"round": round, "score": score, "pass": pass} 를 더한 배열(이전이 없으면 이 항목 하나) - chargedPoint: 결과 charged_point 4. route 를 정한다: pass 가 true 면 "pass", 아니면 "rewrite". 5. 도구가 오류를 돌려주면 원인을 읽고 인자를 고쳐 한 번 더 부른다(예: 글이 너무 길면 자른다). 두 번째도 실패하면 evaluation 에 {"packId": "lecture@1", "score": null, "pass": false, "round": round, "error": "오류 요약"} 을 넣고 route "pass" 로 내보낸다(평가 도구 장애로 제작 전체를 멈추지 않기 위해서다). "error" 필드에도 같은 요약을 적는다. [출력] evaluation 과 route 만 담은 JSON 객체 하나(적지 않은 최상위 필드는 입력값이 그대로 이어지므로 다시 적지 않는다. 바꾸는 필드는 값 전체를 적는다.) 예: {"evaluation":{"packId":"lecture@1","profile":null,"source":"blueprint","score":63.4,"pass":true,"threshold":60,"decision":"pass","weakAxes":[…],"guidance":"…","blockers":[],"factViolations":[],"readability":{"ok":true,"hard":[]},"round":1,"history":[{"round":1,"score":63.4,"pass":true}],"chargedPoint":4},"route":"pass"} [주의] - evaluate_script 는 비용이 드는 도구다. 한 번만 부른다(오류로 인한 재시도 1회 제외). 같은 대본을 다시 평가하면 재청구되지 않는다. - 설계도(blueprint)를 고치지 않는다. 대본 개선은 다음 모듈이 한다. 글(input.script_text)로 평가한 경우 대본개선 모듈은 고칠 설계도가 없으므로 guidance 를 회원에게 보여 주는 용도로 쓴다. - 점수를 직접 매기거나 도구 결과를 바꿔 적지 않는다. - 설명·마크다운 없이 JSON 객체 하나만 답한다.