import fs from 'node:fs'; import assert from 'node:assert/strict'; import { login, call } from './role-permissions-live.mjs'; const fixture = JSON.parse(fs.readFileSync('reports/bridge-005-authoring-20260916/pilot.json', 'utf8')); const session = await login('root'); const projectResult = await call(`tran/v1/content/projects/${fixture.trainingId}`, session.accessToken); assert.equal(projectResult.status, 200); const { project, currentVersion } = projectResult.data; assert.equal(project.id, '458'); assert.equal(project.name, '005 液压泵应急切换(编排验证)'); const task = await call(`tran/v1/teaching/assignments/${fixture.taskId}`, session.accessToken); assert.equal(task.data.status, 'DRAFT'); assert.equal(task.data.contentProjectId, project.id); const content = structuredClone(currentVersion.content); for (const [index, step] of content.steps.entries()) { const video = `PILOT-005-${index + 1}-VIDEO`, audio = `PILOT-005-${index + 1}-AUDIO`; for (const code of [video, audio]) assert.ok(currentVersion.assets.some(a => a.code === code && a.status === 'READY')); Object.assign(step.audio, { narrationVideoAssetCode: video, narrationAssetCode: audio, offlineMediaType: 'video' }); } const saved = await call(`tran/v1/content/projects/${project.id}`, session.accessToken, { ...project, content, assets: currentVersion.assets, dependencies: currentVersion.dependencies, version: project.version }, 'PUT'); assert.equal(saved.status, 200, saved.message); console.log('Pilot media bindings restored; save/reopen/publish through editor next');