0.8.0.0
This commit is contained in:
@@ -0,0 +1,97 @@
|
||||
import { PrismaClient } from '@prisma/client'
|
||||
|
||||
const prisma = new PrismaClient()
|
||||
|
||||
async function fixWangGenerations() {
|
||||
try {
|
||||
// 1. 找到 wang@example.com 用户
|
||||
const user = await prisma.user.findUnique({
|
||||
where: { email: 'wang@example.com' }
|
||||
})
|
||||
|
||||
if (!user) {
|
||||
console.log('❌ 用户 wang@example.com 不存在')
|
||||
return
|
||||
}
|
||||
|
||||
console.log(`✅ 找到用户: ${user.name || user.email} (ID: ${user.id})`)
|
||||
|
||||
// 2. 获取该用户的所有家族树
|
||||
const trees = await prisma.familyTree.findMany({
|
||||
where: { ownerId: user.id },
|
||||
include: {
|
||||
members: {
|
||||
orderBy: [
|
||||
{ generation: 'asc' },
|
||||
{ createdAt: 'asc' }
|
||||
]
|
||||
}
|
||||
}
|
||||
})
|
||||
|
||||
if (trees.length === 0) {
|
||||
console.log('❌ 该用户没有家族树')
|
||||
return
|
||||
}
|
||||
|
||||
for (const tree of trees) {
|
||||
console.log(`\n📌 家族树: ${tree.name} (ID: ${tree.id})`)
|
||||
console.log(` 成员数量: ${tree.members.length}`)
|
||||
console.log(` 当前 rootMemberId: ${tree.rootMemberId}`)
|
||||
|
||||
// 显示当前成员的代数分布
|
||||
console.log('\n 当前成员代数分布:')
|
||||
const generationMap = new Map<number, typeof tree.members>()
|
||||
for (const member of tree.members) {
|
||||
if (!generationMap.has(member.generation)) {
|
||||
generationMap.set(member.generation, [])
|
||||
}
|
||||
generationMap.get(member.generation)!.push(member)
|
||||
}
|
||||
|
||||
for (const [gen, members] of Array.from(generationMap.entries()).sort((a, b) => a[0] - b[0])) {
|
||||
console.log(` 第${gen}世: ${members.map(m => m.fullName).join(', ')}`)
|
||||
}
|
||||
|
||||
// 3. 计算需要调整的偏移量
|
||||
const minGeneration = Math.min(...tree.members.map(m => m.generation))
|
||||
if (minGeneration > 1) {
|
||||
const offset = minGeneration - 1
|
||||
console.log(`\n ⚠️ 最小代数为 ${minGeneration},需要减少 ${offset} 代`)
|
||||
|
||||
// 4. 修复代数
|
||||
console.log(' 正在修复代数...')
|
||||
for (const member of tree.members) {
|
||||
const newGeneration = member.generation - offset
|
||||
await prisma.familyMember.update({
|
||||
where: { id: member.id },
|
||||
data: { generation: newGeneration }
|
||||
})
|
||||
console.log(` - ${member.fullName}: 第${member.generation}世 → 第${newGeneration}世`)
|
||||
}
|
||||
|
||||
// 5. 更新 rootMemberId 为第1代成员
|
||||
const newRootMember = tree.members.find(m => m.generation === minGeneration)
|
||||
if (newRootMember && tree.rootMemberId !== newRootMember.id) {
|
||||
await prisma.familyTree.update({
|
||||
where: { id: tree.id },
|
||||
data: { rootMemberId: newRootMember.id }
|
||||
})
|
||||
console.log(` ✅ 更新 rootMemberId 为: ${newRootMember.fullName} (${newRootMember.id})`)
|
||||
}
|
||||
|
||||
console.log(` ✅ 家族树 "${tree.name}" 代数修复完成`)
|
||||
} else {
|
||||
console.log(` ✅ 代数正常,无需修复`)
|
||||
}
|
||||
}
|
||||
|
||||
console.log('\n🎉 所有数据修复完成!')
|
||||
} catch (error) {
|
||||
console.error('❌ 修复失败:', error)
|
||||
} finally {
|
||||
await prisma.$disconnect()
|
||||
}
|
||||
}
|
||||
|
||||
fixWangGenerations()
|
||||
Reference in New Issue
Block a user