Files
chinese-family-tree-2/scripts/create-test-update.ts
T
freedakgmail 3d075c6076 0.0.8.5
2025-11-24 14:02:34 +08:00

108 lines
3.1 KiB
TypeScript

/**
* 创建一个真实的成员更新操作,用于在前端查看操作日志
*/
import { prisma } from '../lib/prisma'
import { recordMemberHistory } from '../lib/member-history'
async function createTestUpdate() {
console.log('🧪 创建测试更新操作...\n')
try {
// 1. 查找测试用的家族树和用户
const tree = await prisma.familyTree.findFirst()
if (!tree) {
console.error('❌ 未找到测试用的家族树')
return
}
const userId = tree.ownerId
console.log('✅ 测试家族树:', tree.name)
console.log('✅ 测试用户ID:', userId)
console.log()
// 2. 查找一个现有成员
const existingMember = await prisma.familyMember.findFirst({
where: { treeId: tree.id }
})
if (!existingMember) {
console.error('❌ 未找到现有成员')
return
}
console.log('✅ 找到成员:', existingMember.fullName)
console.log()
// 3. 保存旧数据
const oldData = { ...existingMember }
// 4. 更新成员
console.log('📝 更新成员信息...')
const updatedMember = await prisma.familyMember.update({
where: { id: existingMember.id },
data: {
phone: existingMember.phone ? existingMember.phone + '1' : '13800138000',
bio: (existingMember.bio || '') + '\n\n【测试更新】这是一条测试更新记录,用于验证操作日志的详细变更显示功能。',
address: '测试地址:北京市朝阳区',
}
})
console.log('✅ 成员已更新')
// 5. 记录历史
const historyRecord = await recordMemberHistory({
memberId: existingMember.id,
treeId: tree.id,
changedBy: userId,
changeType: 'UPDATE',
oldData: oldData,
newData: updatedMember
})
console.log('✅ 历史记录已创建')
// 6. 创建操作日志
await prisma.activityLog.create({
data: {
treeId: tree.id,
userId: userId,
action: 'UPDATE',
entityType: 'MEMBER',
entityId: existingMember.id,
entityName: updatedMember.fullName,
changes: historyRecord?.changes || {},
}
})
console.log('✅ 操作日志已创建')
console.log()
console.log('✅ 测试更新操作创建成功!')
console.log()
console.log('📋 现在可以在前端查看操作日志:')
console.log(' 1. 访问 /settings 页面')
console.log(' 2. 滚动到"操作日志"部分')
console.log(' 3. 查看最新的更新记录')
console.log(' 4. 应该能看到详细的变更对比信息')
console.log()
console.log('变更内容:')
if (historyRecord?.changes) {
const changes = historyRecord.changes as Record<string, { old: any, new: any }>
for (const [field, change] of Object.entries(changes)) {
console.log(`${field}: "${change.old}" → "${change.new}"`)
}
}
} catch (error) {
console.error('❌ 创建测试更新失败:', error)
throw error
} finally {
await prisma.$disconnect()
}
}
// 运行
createTestUpdate()
.catch((error) => {
console.error('执行失败:', error)
process.exit(1)
})