108 lines
3.1 KiB
TypeScript
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)
|
|
})
|