const fs = require('fs');
|
const path = require('path');
|
|
// 讀取設定檔與樣板
|
const configPath = path.join(__dirname, '../doc/curtis/prompt/dfm_to_web/dfm_to_web_requirement.json');
|
const templatePath = path.join(__dirname, '../doc/curtis/prompt/dfm_to_web/dfm_to_web_prompt_template.md');
|
|
const config = JSON.parse(fs.readFileSync(configPath, 'utf8'));
|
const template = fs.readFileSync(templatePath, 'utf8');
|
|
// 產生每個檔案的專屬 prompt
|
const outputDir = path.join(__dirname, '../doc/curtis/prompt/dfm_to_web');
|
if (!fs.existsSync(outputDir)) {
|
fs.mkdirSync(outputDir, { recursive: true });
|
}
|
|
console.log('Generating individual prompts based on requirement.json...');
|
|
config.forEach(item => {
|
// 從路徑中萃取檔名
|
const dfm_filename = path.basename(item.dfm);
|
const pas_filename = path.basename(item.pas);
|
const png_filename = path.basename(item.png);
|
const vue_filename = path.basename(item.vue);
|
const ts_filename = path.basename(item.ts);
|
|
// 取得元件名稱 (不含副檔名)
|
const componentName = path.parse(item.vue).name;
|
|
// 取代樣板中的佔位符
|
let promptContent = template
|
.replace(/\{\{dfm\}\}/g, item.dfm)
|
.replace(/\{\{pas\}\}/g, item.pas)
|
.replace(/\{\{png\}\}/g, item.png)
|
.replace(/\{\{vue\}\}/g, item.vue)
|
.replace(/\{\{ts\}\}/g, item.ts)
|
.replace(/\{\{dfm_filename\}\}/g, dfm_filename)
|
.replace(/\{\{pas_filename\}\}/g, pas_filename)
|
.replace(/\{\{png_filename\}\}/g, png_filename)
|
.replace(/\{\{vue_filename\}\}/g, vue_filename)
|
.replace(/\{\{ts_filename\}\}/g, ts_filename);
|
|
// 寫入專屬的 prompt 檔案
|
const promptFilePath = path.join(outputDir, `dfm_to_web_prompt_${componentName}.md`);
|
fs.writeFileSync(promptFilePath, promptContent, 'utf8');
|
|
console.log(`Created: ${promptFilePath}`);
|
});
|
|
console.log('\n--- Usage ---');
|
console.log('You can now ask the AI:');
|
console.log('"Please execute the conversion based on the requirements in @/doc/curtis/prompt/dfm_to_web/generated_prompts/prompt_PatchFom.md"');
|