import fs from 'node:fs'; import assert from 'node:assert/strict'; import {credentials} from './role-permissions-live.mjs'; import videos from '../../unreal_tran_web/src/features/virtual-training-scripts/narration-video-manifest.js'; import {scriptTrainingDefinition} from '../../unreal_tran_web/src/features/virtual-training-scripts/registry.js'; const origin=process.env.BASE_URL || 'http://127.0.0.1:6180'; const dir=process.env.REPORT_DIR || 'reports/bridge-lecture-polish-20260915/local'; const login=await fetch(`${origin}/api/auth/v1/auth/login`,{method:'POST',headers:{'Content-Type':'application/json'},body:JSON.stringify({...credentials('root'),roleCode:'admin',rememberMe:false})}).then(r=>r.json()); assert.ok(login.data?.accessToken); const tasks=await fetch(`${origin}/api/tran/v1/teaching/assignments?channel=VIRTUAL&assignmentKind=TRAINING&size=100`,{headers:{Authorization:`Bearer ${login.data.accessToken}`}}).then(r=>r.json()); const result=[]; for(const script of videos.scripts){ const task=tasks.data.records.find(t=>t.code===script.code);assert.ok(task); const definition=scriptTrainingDefinition(task); assert.equal(definition.steps.length,script.steps.length); for(const [i,clip] of script.steps.entries()){ assert.equal(definition.steps[i].audio.narrationUrl,clip.url,script.code+' '+clip.number); assert.equal(definition.steps[i].audio.narrationText,clip.text); assert.deepEqual(definition.steps[i].action,task.definitionSnapshot.steps[i].action); } result.push({task:script.code,id:task.id,version:task.contentVersionId,exactVideoAndTextBindings:script.steps.length,operationsUnchanged:true}); } fs.mkdirSync(dir,{recursive:true});fs.writeFileSync(dir+'/bindings.json',JSON.stringify({origin,result},null,2));console.log(JSON.stringify(result));