|
|
|
@@ -0,0 +1,23 @@ |
|
|
|
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)); |