Files
claude-relay-service/scripts/test-pricing-fallback.js
千羽 8a74bf5afe refactor: standardize code formatting and linting configuration
- Replace .eslintrc.js with .eslintrc.cjs for better ES module compatibility
- Add .prettierrc configuration for consistent code formatting
- Update package.json with new lint and format scripts
- Add nodemon.json for development hot reloading configuration
- Standardize code formatting across all JavaScript and Vue files
- Update web admin SPA with improved linting rules and formatting
- Add prettier configuration to web admin SPA

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-08-07 18:19:31 +09:00

92 lines
3.0 KiB
JavaScript
Raw Permalink 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.

#!/usr/bin/env node
const fs = require('fs')
const path = require('path')
// 测试定价服务的fallback机制
async function testPricingFallback() {
console.log('🧪 Testing pricing service fallback mechanism...\n')
// 备份现有的模型定价文件
const dataDir = path.join(process.cwd(), 'data')
const pricingFile = path.join(dataDir, 'model_pricing.json')
const backupFile = path.join(dataDir, 'model_pricing.backup.json')
// 1. 备份现有文件
if (fs.existsSync(pricingFile)) {
console.log('📦 Backing up existing pricing file...')
fs.copyFileSync(pricingFile, backupFile)
}
try {
// 2. 删除现有定价文件以触发fallback
if (fs.existsSync(pricingFile)) {
console.log('🗑️ Removing existing pricing file to test fallback...')
fs.unlinkSync(pricingFile)
}
// 3. 初始化定价服务
console.log('🚀 Initializing pricing service...\n')
// 清除require缓存以确保重新加载
delete require.cache[require.resolve('../src/services/pricingService')]
const pricingService = require('../src/services/pricingService')
// 模拟网络失败强制使用fallback
const originalDownload = pricingService._downloadFromRemote
pricingService._downloadFromRemote = function () {
return Promise.reject(new Error('Simulated network failure for testing'))
}
// 初始化服务
await pricingService.initialize()
// 4. 验证fallback是否工作
console.log('\n📊 Verifying fallback data...')
const status = pricingService.getStatus()
console.log(` - Initialized: ${status.initialized}`)
console.log(` - Model count: ${status.modelCount}`)
console.log(` - Last updated: ${status.lastUpdated}`)
// 5. 测试获取模型定价
const testModels = ['claude-3-opus-20240229', 'gpt-4', 'gemini-pro']
console.log('\n💰 Testing model pricing retrieval:')
for (const model of testModels) {
const pricing = pricingService.getModelPricing(model)
if (pricing) {
console.log(`${model}: Found pricing data`)
} else {
console.log(`${model}: No pricing data`)
}
}
// 6. 验证文件是否被创建
if (fs.existsSync(pricingFile)) {
console.log('\n✅ Fallback successfully created pricing file in data directory')
const fileStats = fs.statSync(pricingFile)
console.log(` - File size: ${(fileStats.size / 1024).toFixed(2)} KB`)
} else {
console.log('\n❌ Fallback failed to create pricing file')
}
// 恢复原始下载函数
pricingService._downloadFromRemote = originalDownload
} finally {
// 7. 恢复备份文件
if (fs.existsSync(backupFile)) {
console.log('\n📦 Restoring original pricing file...')
fs.copyFileSync(backupFile, pricingFile)
fs.unlinkSync(backupFile)
}
}
console.log('\n✨ Fallback mechanism test completed!')
}
// 运行测试
testPricingFallback().catch((error) => {
console.error('❌ Test failed:', error)
process.exit(1)
})