Files
claude-relay-service/scripts/test-api-response.js
mouyong 5af8913954 refactor(backend): 统一账户平台标识字段
WHAT: 统一 Claude 账户的平台标识,从 claude-oauth 改为 claude
WHY: 简化平台标识命名规范,提高前后端数据一致性,为多平台支持奠定基础
HOW: 在账户创建和查询接口中添加 platform 字段支持;更新 claudeAccountService 默认平台标识;保持向后兼容性,旧数据自动使用默认值
2025-08-20 21:40:24 +08:00

142 lines
5.4 KiB
JavaScript
Raw Blame History

This file contains invisible Unicode characters

This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

/**
* 测试 API 响应中的账号数据
*/
const redis = require('../src/models/redis')
const claudeAccountService = require('../src/services/claudeAccountService')
const claudeConsoleAccountService = require('../src/services/claudeConsoleAccountService')
const accountGroupService = require('../src/services/accountGroupService')
async function testApiResponse() {
console.log('🔍 测试 API 响应数据...\n')
try {
// 确保 Redis 已连接
await redis.connect()
// 1. 测试 Claude OAuth 账号服务
console.log('📋 测试 Claude OAuth 账号服务...')
const claudeAccounts = await claudeAccountService.getAllAccounts()
console.log(`找到 ${claudeAccounts.length} 个 Claude OAuth 账号`)
// 检查前3个账号的数据结构
console.log('\n账号数据结构示例:')
claudeAccounts.slice(0, 3).forEach((acc) => {
console.log(`\n账号: ${acc.name}`)
console.log(` - ID: ${acc.id}`)
console.log(` - accountType: ${acc.accountType}`)
console.log(` - platform: ${acc.platform}`)
console.log(` - status: ${acc.status}`)
console.log(` - isActive: ${acc.isActive}`)
})
// 统计专属账号
const claudeDedicated = claudeAccounts.filter((a) => a.accountType === 'dedicated')
const claudeGroup = claudeAccounts.filter((a) => a.accountType === 'group')
console.log('\n统计结果:')
console.log(` - 专属账号: ${claudeDedicated.length}`)
console.log(` - 分组账号: ${claudeGroup.length}`)
// 2. 测试 Claude Console 账号服务
console.log('\n\n📋 测试 Claude Console 账号服务...')
const consoleAccounts = await claudeConsoleAccountService.getAllAccounts()
console.log(`找到 ${consoleAccounts.length} 个 Claude Console 账号`)
// 检查前3个账号的数据结构
console.log('\n账号数据结构示例:')
consoleAccounts.slice(0, 3).forEach((acc) => {
console.log(`\n账号: ${acc.name}`)
console.log(` - ID: ${acc.id}`)
console.log(` - accountType: ${acc.accountType}`)
console.log(` - platform: ${acc.platform}`)
console.log(` - status: ${acc.status}`)
console.log(` - isActive: ${acc.isActive}`)
})
// 统计专属账号
const consoleDedicated = consoleAccounts.filter((a) => a.accountType === 'dedicated')
const consoleGroup = consoleAccounts.filter((a) => a.accountType === 'group')
console.log('\n统计结果:')
console.log(` - 专属账号: ${consoleDedicated.length}`)
console.log(` - 分组账号: ${consoleGroup.length}`)
// 3. 测试账号分组服务
console.log('\n\n📋 测试账号分组服务...')
const groups = await accountGroupService.getAllGroups()
console.log(`找到 ${groups.length} 个账号分组`)
// 显示分组信息
groups.forEach((group) => {
console.log(`\n分组: ${group.name}`)
console.log(` - ID: ${group.id}`)
console.log(` - platform: ${group.platform}`)
console.log(` - memberCount: ${group.memberCount}`)
})
// 4. 验证结果
console.log('\n\n📊 验证结果:')
// 检查 platform 字段
const claudeWithPlatform = claudeAccounts.filter((a) => a.platform === 'claude')
const consoleWithPlatform = consoleAccounts.filter((a) => a.platform === 'claude-console')
if (claudeWithPlatform.length === claudeAccounts.length) {
console.log('✅ 所有 Claude OAuth 账号都有正确的 platform 字段')
} else {
console.log(
`⚠️ 只有 ${claudeWithPlatform.length}/${claudeAccounts.length} 个 Claude OAuth 账号有正确的 platform 字段`
)
}
if (consoleWithPlatform.length === consoleAccounts.length) {
console.log('✅ 所有 Claude Console 账号都有正确的 platform 字段')
} else {
console.log(
`⚠️ 只有 ${consoleWithPlatform.length}/${consoleAccounts.length} 个 Claude Console 账号有正确的 platform 字段`
)
}
// 总结
const totalDedicated = claudeDedicated.length + consoleDedicated.length
const totalGroup = claudeGroup.length + consoleGroup.length
const totalGroups = groups.filter((g) => g.platform === 'claude').length
console.log('\n📈 总结:')
console.log(
`- 专属账号总数: ${totalDedicated} 个 (Claude OAuth: ${claudeDedicated.length}, Console: ${consoleDedicated.length})`
)
console.log(
`- 分组账号总数: ${totalGroup} 个 (Claude OAuth: ${claudeGroup.length}, Console: ${consoleGroup.length})`
)
console.log(`- 账号分组总数: ${totalGroups}`)
if (totalDedicated + totalGroups > 0) {
console.log('\n✅ 前端下拉框应该能够显示:')
if (totalGroups > 0) {
console.log(' - 调度分组')
}
if (claudeDedicated.length > 0) {
console.log(' - Claude OAuth 专属账号 (仅 dedicated 类型)')
}
if (consoleDedicated.length > 0) {
console.log(' - Claude Console 专属账号 (仅 dedicated 类型)')
}
} else {
console.log('\n⚠ 没有找到任何专属账号或分组,请检查账号配置')
}
console.log('\n💡 说明:')
console.log('- 专属账号下拉框只显示 accountType="dedicated" 的账号')
console.log('- accountType="group" 的账号通过分组调度,不在专属账号中显示')
} catch (error) {
console.error('❌ 测试失败:', error)
console.error(error.stack)
} finally {
process.exit(0)
}
}
testApiResponse()