| 12345678910111213141516171819202122232425262728 |
- import fs from 'node:fs';
- import assert from 'node:assert/strict';
- import { updateManual, manualFile } from './update-workshop-dialogue-manual.mjs';
- const file = manualFile;
- let html = fs.readFileSync(file, 'utf8');
- // The shared prompt bank owns delivery wording once the manual has multiple rounds.
- if (html.includes(' const dialogueMap = ')) {
- const result = updateManual();
- console.log(JSON.stringify({ file, promptCount: result.roundCount, source: result.promptBank, productionPublished: false }));
- process.exit(0);
- }
- const dataMatch = html.match(/window\.WORKSHOP_MANUAL_DATA = (\{[\s\S]*?\n\});\r?\n<\/script>/);
- const promptsMatch = html.match(/ const promptMap = (\{[^\r\n]+\});/);
- assert.ok(dataMatch && promptsMatch, '手册数据结构已变化,停止修改');
- const data = JSON.parse(dataMatch[1]), prompts = JSON.parse(promptsMatch[1]);
- const rule = '本节成果按当前登录员工个人保存,小组仅用于组织展示。沿用本人的课题、会话和任务版本,按Skill将核心交付物与报告分类、实质章节对应。完成后给可点击的报告链接,核对同一编号的正文、来源、版本及个人归属;生成的HTML报告、图片等实际交付文件也须关联该报告并核可读取。逐题更新七类个人交付状态,草稿、缺项和未定位如实标明,不以聊天文字或本地文件代替看板同步。服务尚未支持时说明停点并保留完整成果,不编造保存结果。';
- for (const key of Object.keys(prompts)) {
- if (key === 'topic') continue; // Research briefing precedes substantive report delivery.
- if (!prompts[key].includes(rule)) prompts[key] += '\n\n' + rule;
- }
- if (!data.common.includes(rule)) data.common += '\n\n' + rule;
- data.release.contentVersion = 'r14-report-delivery';
- data.release.deploymentStatus = 'local-pending-deployment';
- data.release.productionCutoverConfirmed = false;
- html = html.replace(dataMatch[0], 'window.WORKSHOP_MANUAL_DATA = ' + JSON.stringify(data, null, 2) + ';\n</script>');
- html = html.replace(promptsMatch[0], ' const promptMap = ' + JSON.stringify(prompts) + ';');
- fs.writeFileSync(file, html);
- console.log(JSON.stringify({ file, promptCount: Object.keys(prompts).length, reportPromptsUpdated: Object.keys(prompts).length - 1, productionPublished: false }));
|