/** * ๆต‹่ฏ• PromptService */ import { PrismaClient } from '@prisma/client'; import { getPromptService } from '../src/common/prompt/index.js'; const prisma = new PrismaClient(); async function main() { console.log('๐Ÿงช ๆต‹่ฏ• PromptService...\n'); const promptService = getPromptService(prisma); // 1. ๆต‹่ฏ•่Žทๅ– ACTIVE Prompt console.log('โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•'); console.log('๐Ÿ“‹ Test 1: ่Žทๅ– ACTIVE Prompt (RVW_EDITORIAL)\n'); const editorial = await promptService.get('RVW_EDITORIAL'); console.log(` ็‰ˆๆœฌ: v${editorial.version}`); console.log(` ๆ˜ฏๅฆ่‰็จฟ: ${editorial.isDraft}`); console.log(` ๆจกๅž‹้…็ฝฎ: ${JSON.stringify(editorial.modelConfig)}`); console.log(` ๅ†…ๅฎน้•ฟๅบฆ: ${editorial.content.length} ๅญ—็ฌฆ`); console.log(` ๅ†…ๅฎน้ข„่งˆ: ${editorial.content.substring(0, 100)}...`); // 2. ๆต‹่ฏ•ๅ˜้‡ๆๅ– console.log('\nโ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•'); console.log('๐Ÿ“‹ Test 2: ๅ˜้‡ๆๅ–\n'); const template = '่ฏท่ฏ„ไผฐไปฅไธ‹็จฟไปถ๏ผš{{title}}\nไฝœ่€…๏ผš{{author}}\n{{#if abstract}}ๆ‘˜่ฆ๏ผš{{abstract}}{{/if}}'; const variables = promptService.extractVariables(template); console.log(` ๆจกๆฟ: ${template}`); console.log(` ๆๅ–็š„ๅ˜้‡: [${variables.join(', ')}]`); // 3. ๆต‹่ฏ•ๅ˜้‡ๆ ก้ชŒ console.log('\nโ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•'); console.log('๐Ÿ“‹ Test 3: ๅ˜้‡ๆ ก้ชŒ\n'); const validation = promptService.validateVariables(template, { title: 'ๆต‹่ฏ•ๆ ‡้ข˜' }); console.log(` ๆœ‰ๆ•ˆ: ${validation.isValid}`); console.log(` ็ผบๅคฑๅ˜้‡: [${validation.missingVariables.join(', ')}]`); console.log(` ๅคšไฝ™ๅ˜้‡: [${validation.extraVariables.join(', ')}]`); // 4. ๆต‹่ฏ•ๆจกๆฟๆธฒๆŸ“ console.log('\nโ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•'); console.log('๐Ÿ“‹ Test 4: ๆจกๆฟๆธฒๆŸ“\n'); const rendered = promptService.render(template, { title: 'ๆต‹่ฏ•่ฎบๆ–‡ๆ ‡้ข˜', author: 'ๅผ ไธ‰', abstract: '่ฟ™ๆ˜ฏๆ‘˜่ฆๅ†…ๅฎน', }); console.log(` ๆธฒๆŸ“็ป“ๆžœ:\n${rendered}`); // 5. ๆต‹่ฏ•่ฐƒ่ฏ•ๆจกๅผ console.log('\nโ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•'); console.log('๐Ÿ“‹ Test 5: ่ฐƒ่ฏ•ๆจกๅผ\n'); const testUserId = 'test-user-123'; console.log(` ่ฎพ็ฝฎ่ฐƒ่ฏ•ๆจกๅผ: userId=${testUserId}, modules=[RVW]`); promptService.setDebugMode(testUserId, ['RVW'], true); const isDebugging = promptService.isDebugging(testUserId, 'RVW_EDITORIAL'); console.log(` ๆ˜ฏๅฆๅœจ่ฐƒ่ฏ• RVW_EDITORIAL: ${isDebugging}`); const isDebuggingASL = promptService.isDebugging(testUserId, 'ASL_SCREENING'); console.log(` ๆ˜ฏๅฆๅœจ่ฐƒ่ฏ• ASL_SCREENING: ${isDebuggingASL}`); const debugState = promptService.getDebugState(testUserId); console.log(` ่ฐƒ่ฏ•็Šถๆ€: modules=[${Array.from(debugState?.modules || []).join(', ')}]`); console.log(` ๅ…ณ้—ญ่ฐƒ่ฏ•ๆจกๅผ`); promptService.setDebugMode(testUserId, [], false); // 6. ๆต‹่ฏ•ๅˆ—่กจๆจกๆฟ console.log('\nโ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•'); console.log('๐Ÿ“‹ Test 6: ๅˆ—่กจๆ‰€ๆœ‰ๆจกๆฟ\n'); const templates = await promptService.listTemplates(); console.log(` ๅ…ฑ ${templates.length} ไธชๆจกๆฟ:`); for (const t of templates) { const latest = t.versions[0]; console.log(` - ${t.code} (${t.name}) - v${latest?.version || 0} ${latest?.status || 'N/A'}`); } // 7. ๆต‹่ฏ•ๅ…œๅบ• Prompt console.log('\nโ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•โ•'); console.log('๐Ÿ“‹ Test 7: ๅ…œๅบ• Prompt\n'); try { // ๆต‹่ฏ•ไธๅญ˜ๅœจไธ”ๆ— ๅ…œๅบ•็š„ Prompt๏ผˆๅบ”่ฏฅๆŠ›้”™๏ผ‰ await promptService.get('NON_EXISTENT_CODE'); console.log(' โŒ ๅบ”่ฏฅๆŠ›ๅ‡บ้”™่ฏฏไฝ†ๆฒกๆœ‰'); } catch (e) { console.log(' โœ… ๆญฃ็กฎๆŠ›ๅ‡บ้”™่ฏฏ๏ผšไธๅญ˜ๅœจ็š„Promptไธ”ๆ— ๅ…œๅบ•'); } // ๆต‹่ฏ•ๆœ‰ๅ…œๅบ•็š„ ASL_SCREENING (่™ฝ็„ถDB้‡Œๆœ‰๏ผŒไฝ†ๆผ”็คบๅ…œๅบ•ๆœบๅˆถ) console.log(' ๅ…œๅบ•Promptๅˆ—่กจ: RVW_EDITORIAL, RVW_METHODOLOGY, ASL_SCREENING'); console.log('\nโœ… ๆ‰€ๆœ‰ๆต‹่ฏ•ๅฎŒๆˆ๏ผ'); } main() .catch(console.error) .finally(() => prisma.$disconnect());