/** * 创建一个真实的成员更新操作,用于在前端查看操作日志 */ 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 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) })