TidGi-Desktop/scripts/startMockOpenAI.ts
lin onetwo a42af638b6 lint
2025-10-31 00:10:44 +08:00

57 lines
2 KiB
TypeScript
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

// pnpm dlx tsx scripts/startMockOpenAI.ts
import { MockOpenAIServer } from '../features/supports/mockOpenAI';
async function main() {
// 使用固定端口 15121 用于手动测试和 E2E 测试
const server = new MockOpenAIServer(15121);
console.log('启动 Mock OpenAI 服务器...');
try {
await server.start();
console.log(`✅ Mock OpenAI 服务器已启动:`);
console.log(` URL: ${server.baseUrl}`);
console.log(` 端口: ${server.port}`);
console.log(` Health Check: ${server.baseUrl}/health`);
console.log('');
console.log('测试命令示例:');
console.log(`# Health Check:`);
console.log(`curl ${server.baseUrl}/health`);
console.log('');
console.log(`# Chat Completions:`);
console.log(`curl -X POST ${server.baseUrl}/v1/chat/completions \\`);
console.log(' -H "Content-Type: application/json" \\');
console.log(' -H "Authorization: Bearer test-key" \\');
console.log(' -d \'{"model": "test-model", "messages": [{"role": "user", "content": "搜索 wiki 中的 index 条目并解释"}]}\'');
console.log('');
console.log('PowerShell 测试命令:');
console.log(`Invoke-RestMethod -Uri "${server.baseUrl}/health"`);
console.log('');
console.log('按 Ctrl+C 停止服务器');
// 保持服务器运行
process.on('SIGINT', async () => {
console.log('\n正在停止服务器...');
await server.stop();
process.exit(0);
});
process.on('SIGTERM', async () => {
console.log('\n正在停止服务器...');
await server.stop();
process.exit(0);
});
// 防止进程退出 - 使用 setInterval 而不是空的 Promise
// 注意在 e2e 的 CleanUp 里关闭服务器
setInterval(() => {
// 每10秒输出一次状态确认服务器还在运行
console.log('Mock OpenAI 服务器仍在运行...');
}, 10000);
} catch (error) {
console.error('❌ 启动服务器失败:', error);
process.exit(1);
}
}
main().catch(console.error);