import { mkdir, writeFile } from "node:fs/promises"; import { dirname, resolve } from "node:path"; import { fileURLToPath } from "node:url"; import { sampleProject } from "../src/data/sampleProject.js"; import { buildEditList, buildPromptPack, buildShotList, buildVoiceTable } from "../src/lib/exporters.js"; import { projectQa } from "../src/lib/qa.js"; const root = resolve(dirname(fileURLToPath(import.meta.url)), ".."); const out = resolve(root, "exports/project-template"); const files = [ ["bible/series-bible.json", sampleProject.series], ["shots/shot-list.json", buildShotList(sampleProject)], ["shots/prompt-pack.json", buildPromptPack(sampleProject)], ["voices/voice-lines.json", buildVoiceTable(sampleProject)], ["qa/qa-results.json", projectQa(sampleProject)], ["edit/edit-list.json", buildEditList(sampleProject)], ["characters/character-locks.json", sampleProject.characters], ["locations/location-locks.json", sampleProject.locations], ["props/prop-locks.json", sampleProject.props], ["final-video/delivery-manifest.json", { schema: "ai-drama-platform.delivery-manifest.v1", episodeId: sampleProject.episode.id, expectedFinal: "final-video/E01_别往树下跑_master.mp4", sourceEditList: "edit/edit-list.json", subtitles: "edit/E01_别往树下跑.zh-CN.srt", audioPolicy: "固定 TTS 声线替换随机原生音轨;环境声可独立保留。" }] ]; for (const [name, value] of files) { const target = resolve(out, name); await mkdir(dirname(target), { recursive: true }); await writeFile(target, `${JSON.stringify(value, null, 2)}\n`, "utf8"); } console.log(`sample exports written to ${out}`);