File size: 5,565 Bytes
69b897d |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 |
/**
* 测试 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()
|