import { PrismaClient } from '@prisma/client' import bcrypt from 'bcryptjs' const prisma = new PrismaClient() async function main() { console.log('开始清理数据库...') // 清理所有数据 await prisma.activityLog.deleteMany() await prisma.familyMember.deleteMany() await prisma.treeCollaborator.deleteMany() await prisma.familyTree.deleteMany() await prisma.user.deleteMany() console.log('数据库清理完成') console.log('开始创建测试用户和家族树...') // 创建用户1: 王先生 const hashedPassword1 = await bcrypt.hash('123456', 10) const user1 = await prisma.user.create({ data: { email: 'wang@example.com', name: '王先生', password: hashedPassword1, }, }) console.log('✓ 创建用户: 王先生') // 创建用户2: 虞女士 const hashedPassword2 = await bcrypt.hash('123456', 10) const user2 = await prisma.user.create({ data: { email: 'yu@example.com', name: '虞女士', password: hashedPassword2, }, }) console.log('✓ 创建用户: 虞女士') // 为王先生创建家族树 const wangTree = await prisma.familyTree.create({ data: { name: '王氏家族', description: '王氏家族世系谱', ownerId: user1.id, }, }) console.log('✓ 创建家族树: 王氏家族') // 王氏家族成员 // 第一代 - 始祖 const wang1 = await prisma.familyMember.create({ data: { treeId: wangTree.id, surname: '王', givenName: '德厚', fullName: '王德厚', gender: 'MALE', generation: 1, generationName: '德', isFounder: true, birthDate: '1880-03-15', deathDate: '1955-08-20', ancestralHome: '山东省济南市', birthPlace: '山东省济南市历城区', bio: '王氏家族始祖,清末秀才,以教书为业。', tags: ['教书先生'], }, }) const wang1Wife = await prisma.familyMember.create({ data: { treeId: wangTree.id, surname: '李', givenName: '秀英', fullName: '李秀英', gender: 'FEMALE', generation: 1, birthDate: '1882-05-10', deathDate: '1960-12-05', ancestralHome: '山东省济南市', birthPlace: '山东省济南市天桥区', spouseIds: [wang1.id], bio: '贤妻良母,持家有道。', }, }) await prisma.familyMember.update({ where: { id: wang1.id }, data: { spouseIds: [wang1Wife.id] }, }) // 第二代 const wang2_1 = await prisma.familyMember.create({ data: { treeId: wangTree.id, surname: '王', givenName: '建国', fullName: '王建国', gender: 'MALE', generation: 2, generationName: '建', birthDate: '1910-01-20', deathDate: '1985-06-15', ancestralHome: '山东省济南市', birthPlace: '山东省济南市历城区', fatherId: wang1.id, motherId: wang1Wife.id, bio: '参加过抗日战争,新中国成立后在政府部门工作。', tags: ['抗战老兵', '公务员'], }, }) const wang2_1Wife = await prisma.familyMember.create({ data: { treeId: wangTree.id, surname: '张', givenName: '淑贞', fullName: '张淑贞', gender: 'FEMALE', generation: 2, birthDate: '1915-07-08', deathDate: '1990-03-22', ancestralHome: '山东省青岛市', birthPlace: '山东省青岛市市南区', spouseIds: [wang2_1.id], bio: '小学教师,教书育人三十载。', }, }) await prisma.familyMember.update({ where: { id: wang2_1.id }, data: { spouseIds: [wang2_1Wife.id], childrenIds: [], }, }) const wang2_2 = await prisma.familyMember.create({ data: { treeId: wangTree.id, surname: '王', givenName: '建华', fullName: '王建华', gender: 'MALE', generation: 2, generationName: '建', birthDate: '1918-11-12', deathDate: '1995-09-08', ancestralHome: '山东省济南市', birthPlace: '山东省济南市历城区', fatherId: wang1.id, motherId: wang1Wife.id, bio: '医生,在济南市立医院工作。', tags: ['医生'], }, }) const wang2_2Wife = await prisma.familyMember.create({ data: { treeId: wangTree.id, surname: '赵', givenName: '玉兰', fullName: '赵玉兰', gender: 'FEMALE', generation: 2, birthDate: '1920-03-25', deathDate: '1998-11-15', ancestralHome: '河北省石家庄市', birthPlace: '河北省石家庄市长安区', spouseIds: [wang2_2.id], bio: '护士,与丈夫在同一医院工作。', }, }) await prisma.familyMember.update({ where: { id: wang2_2.id }, data: { spouseIds: [wang2_2Wife.id] }, }) const wang2_3 = await prisma.familyMember.create({ data: { treeId: wangTree.id, surname: '王', givenName: '建英', fullName: '王建英', gender: 'FEMALE', generation: 2, generationName: '建', birthDate: '1922-06-18', deathDate: '2005-02-10', ancestralHome: '山东省济南市', birthPlace: '山东省济南市历城区', fatherId: wang1.id, motherId: wang1Wife.id, bio: '纺织女工,勤劳朴实。', tags: ['工人'], }, }) // 更新第一代的子女关系 await prisma.familyMember.update({ where: { id: wang1.id }, data: { childrenIds: [wang2_1.id, wang2_2.id, wang2_3.id] }, }) await prisma.familyMember.update({ where: { id: wang1Wife.id }, data: { childrenIds: [wang2_1.id, wang2_2.id, wang2_3.id] }, }) // 第三代 const wang3_1 = await prisma.familyMember.create({ data: { treeId: wangTree.id, surname: '王', givenName: '明', fullName: '王明', gender: 'MALE', generation: 3, generationName: '明', birthDate: '1945-04-18', ancestralHome: '山东省济南市', birthPlace: '山东省济南市历下区', fatherId: wang2_1.id, motherId: wang2_1Wife.id, phone: '13800138001', email: 'wangming@example.com', address: '山东省济南市历下区解放路123号', bio: '工程师,从事机械制造行业。', tags: ['工程师', '在世'], }, }) const wang3_1Wife = await prisma.familyMember.create({ data: { treeId: wangTree.id, surname: '刘', givenName: '芳', fullName: '刘芳', gender: 'FEMALE', generation: 3, birthDate: '1948-08-25', ancestralHome: '河北省石家庄市', birthPlace: '河北省石家庄市长安区', spouseIds: [wang3_1.id], phone: '13800138002', bio: '会计师,已退休。', }, }) await prisma.familyMember.update({ where: { id: wang3_1.id }, data: { spouseIds: [wang3_1Wife.id] }, }) // 第三代 - 更多子女 const wang3_2 = await prisma.familyMember.create({ data: { treeId: wangTree.id, surname: '王', givenName: '亮', fullName: '王亮', gender: 'MALE', generation: 3, generationName: '明', birthDate: '1950-09-12', ancestralHome: '山东省济南市', birthPlace: '山东省济南市历下区', fatherId: wang2_1.id, motherId: wang2_1Wife.id, phone: '13800138003', bio: '教师,在中学任教。', tags: ['教师', '在世'], }, }) const wang3_3 = await prisma.familyMember.create({ data: { treeId: wangTree.id, surname: '王', givenName: '强', fullName: '王强', gender: 'MALE', generation: 3, generationName: '明', birthDate: '1952-02-28', ancestralHome: '山东省济南市', birthPlace: '山东省济南市历城区', fatherId: wang2_2.id, motherId: wang2_2Wife.id, phone: '13800138004', bio: '医生,继承父业。', tags: ['医生', '在世'], }, }) const wang3_3Wife = await prisma.familyMember.create({ data: { treeId: wangTree.id, surname: '孙', givenName: '丽', fullName: '孙丽', gender: 'FEMALE', generation: 3, birthDate: '1955-11-05', ancestralHome: '江苏省南京市', birthPlace: '江苏省南京市玄武区', spouseIds: [wang3_3.id], phone: '13800138005', bio: '药剂师。', }, }) await prisma.familyMember.update({ where: { id: wang3_3.id }, data: { spouseIds: [wang3_3Wife.id] }, }) const wang3_4 = await prisma.familyMember.create({ data: { treeId: wangTree.id, surname: '王', givenName: '丽', fullName: '王丽', gender: 'FEMALE', generation: 3, generationName: '明', birthDate: '1954-07-20', ancestralHome: '山东省济南市', birthPlace: '山东省济南市历城区', fatherId: wang2_2.id, motherId: wang2_2Wife.id, phone: '13800138006', bio: '护士,在医院工作。', tags: ['护士', '在世'], }, }) const wang3_5 = await prisma.familyMember.create({ data: { treeId: wangTree.id, surname: '王', givenName: '军', fullName: '王军', gender: 'MALE', generation: 3, generationName: '明', birthDate: '1956-12-08', ancestralHome: '山东省济南市', birthPlace: '山东省济南市历城区', fatherId: wang2_2.id, motherId: wang2_2Wife.id, phone: '13800138007', bio: '军人,服役20年后转业。', tags: ['军人', '在世'], }, }) // 更新第二代的子女关系 await prisma.familyMember.update({ where: { id: wang2_1.id }, data: { childrenIds: [wang3_1.id, wang3_2.id] }, }) await prisma.familyMember.update({ where: { id: wang2_1Wife.id }, data: { childrenIds: [wang3_1.id, wang3_2.id] }, }) await prisma.familyMember.update({ where: { id: wang2_2.id }, data: { childrenIds: [wang3_3.id, wang3_4.id, wang3_5.id] }, }) await prisma.familyMember.update({ where: { id: wang2_2Wife.id }, data: { childrenIds: [wang3_3.id, wang3_4.id, wang3_5.id] }, }) // 第四代 const wang4_1 = await prisma.familyMember.create({ data: { treeId: wangTree.id, surname: '王', givenName: '浩', fullName: '王浩', gender: 'MALE', generation: 4, generationName: '浩', birthDate: '1975-06-10', ancestralHome: '山东省济南市', birthPlace: '山东省济南市历下区', fatherId: wang3_1.id, motherId: wang3_1Wife.id, phone: '13900139001', email: 'wanghao@example.com', address: '山东省济南市高新区科技路456号', bio: '软件工程师,在互联网公司工作。', tags: ['程序员', '在世'], }, }) const wang4_1Wife = await prisma.familyMember.create({ data: { treeId: wangTree.id, surname: '陈', givenName: '静', fullName: '陈静', gender: 'FEMALE', generation: 4, birthDate: '1978-09-15', ancestralHome: '江苏省南京市', birthPlace: '江苏省南京市玄武区', spouseIds: [wang4_1.id], phone: '13900139002', email: 'chenjing@example.com', bio: '设计师,从事UI/UX设计工作。', }, }) await prisma.familyMember.update({ where: { id: wang4_1.id }, data: { spouseIds: [wang4_1Wife.id] }, }) // 第四代 - 更多子女(迁徙到不同城市) const wang4_2 = await prisma.familyMember.create({ data: { treeId: wangTree.id, surname: '王', givenName: '磊', fullName: '王磊', gender: 'MALE', generation: 4, generationName: '浩', birthDate: '1978-03-22', ancestralHome: '山东省济南市', birthPlace: '上海市浦东新区', // 迁徙到上海 fatherId: wang3_1.id, motherId: wang3_1Wife.id, phone: '13900139003', email: 'wanglei@example.com', address: '上海市浦东新区陆家嘴环路1000号', bio: '金融分析师,在投资银行工作。', tags: ['金融', '在世', '上海'], }, }) const wang4_3 = await prisma.familyMember.create({ data: { treeId: wangTree.id, surname: '王', givenName: '超', fullName: '王超', gender: 'MALE', generation: 4, generationName: '浩', birthDate: '1980-11-08', ancestralHome: '山东省济南市', birthPlace: '广东省深圳市', // 迁徙到深圳 fatherId: wang3_2.id, phone: '13900139004', email: 'wangchao@example.com', address: '广东省深圳市南山区科技园', bio: '创业者,经营科技公司。', tags: ['创业者', '在世', '深圳'], }, }) const wang4_4 = await prisma.familyMember.create({ data: { treeId: wangTree.id, surname: '王', givenName: '鹏', fullName: '王鹏', gender: 'MALE', generation: 4, generationName: '浩', birthDate: '1982-05-15', ancestralHome: '山东省济南市', birthPlace: '浙江省杭州市', // 迁徙到杭州 fatherId: wang3_3.id, motherId: wang3_3Wife.id, phone: '13900139005', email: 'wangpeng@example.com', address: '浙江省杭州市西湖区文三路', bio: '医生,在浙江大学附属医院工作。', tags: ['医生', '在世', '杭州'], }, }) const wang4_5 = await prisma.familyMember.create({ data: { treeId: wangTree.id, surname: '王', givenName: '婷', fullName: '王婷', gender: 'FEMALE', generation: 4, generationName: '浩', birthDate: '1984-08-20', ancestralHome: '山东省济南市', birthPlace: '四川省成都市', // 迁徙到成都 fatherId: wang3_3.id, motherId: wang3_3Wife.id, phone: '13900139006', email: 'wangting@example.com', address: '四川省成都市武侯区天府大道', bio: '教师,在大学任教。', tags: ['教师', '在世', '成都'], }, }) const wang4_6 = await prisma.familyMember.create({ data: { treeId: wangTree.id, surname: '王', givenName: '娜', fullName: '王娜', gender: 'FEMALE', generation: 4, generationName: '浩', birthDate: '1986-02-14', ancestralHome: '山东省济南市', birthPlace: '江苏省苏州市', // 迁徙到苏州 fatherId: wang3_4.id, phone: '13900139007', email: 'wangna@example.com', address: '江苏省苏州市工业园区', bio: '护士,在医院工作。', tags: ['护士', '在世', '苏州'], }, }) const wang4_7 = await prisma.familyMember.create({ data: { treeId: wangTree.id, surname: '王', givenName: '涛', fullName: '王涛', gender: 'MALE', generation: 4, generationName: '浩', birthDate: '1988-07-30', ancestralHome: '山东省济南市', birthPlace: '陕西省西安市', // 迁徙到西安 fatherId: wang3_5.id, phone: '13900139008', email: 'wangtao@example.com', address: '陕西省西安市雁塔区高新路', bio: '工程师,在航天企业工作。', tags: ['工程师', '在世', '西安'], }, }) // 更新第三代的子女关系 await prisma.familyMember.update({ where: { id: wang3_1.id }, data: { childrenIds: [wang4_1.id, wang4_2.id] }, }) await prisma.familyMember.update({ where: { id: wang3_1Wife.id }, data: { childrenIds: [wang4_1.id, wang4_2.id] }, }) await prisma.familyMember.update({ where: { id: wang3_2.id }, data: { childrenIds: [wang4_3.id] }, }) await prisma.familyMember.update({ where: { id: wang3_3.id }, data: { childrenIds: [wang4_4.id, wang4_5.id] }, }) await prisma.familyMember.update({ where: { id: wang3_3Wife.id }, data: { childrenIds: [wang4_4.id, wang4_5.id] }, }) await prisma.familyMember.update({ where: { id: wang3_4.id }, data: { childrenIds: [wang4_6.id] }, }) await prisma.familyMember.update({ where: { id: wang3_5.id }, data: { childrenIds: [wang4_7.id] }, }) // 第五代 const wang5_1 = await prisma.familyMember.create({ data: { treeId: wangTree.id, surname: '王', givenName: '子轩', fullName: '王子轩', gender: 'MALE', generation: 5, generationName: '子', birthDate: '2005-03-20', ancestralHome: '山东省济南市', birthPlace: '山东省济南市高新区', fatherId: wang4_1.id, motherId: wang4_1Wife.id, bio: '在读大学生,就读于计算机科学专业。', tags: ['学生', '在世'], }, }) // 第五代 - 更多子女 const wang5_2 = await prisma.familyMember.create({ data: { treeId: wangTree.id, surname: '王', givenName: '梓涵', fullName: '王梓涵', gender: 'FEMALE', generation: 5, generationName: '子', birthDate: '2008-07-15', ancestralHome: '山东省济南市', birthPlace: '山东省济南市高新区', fatherId: wang4_1.id, motherId: wang4_1Wife.id, bio: '在读高中生。', tags: ['学生', '在世'], }, }) const wang5_3 = await prisma.familyMember.create({ data: { treeId: wangTree.id, surname: '王', givenName: '宇轩', fullName: '王宇轩', gender: 'MALE', generation: 5, generationName: '子', birthDate: '2010-11-22', ancestralHome: '山东省济南市', birthPlace: '上海市浦东新区', fatherId: wang4_2.id, bio: '在读中学生。', tags: ['学生', '在世'], }, }) const wang5_4 = await prisma.familyMember.create({ data: { treeId: wangTree.id, surname: '王', givenName: '思远', fullName: '王思远', gender: 'MALE', generation: 5, generationName: '子', birthDate: '2012-04-08', ancestralHome: '山东省济南市', birthPlace: '广东省深圳市', fatherId: wang4_3.id, bio: '在读小学生。', tags: ['学生', '在世'], }, }) const wang5_5 = await prisma.familyMember.create({ data: { treeId: wangTree.id, surname: '王', givenName: '雨萱', fullName: '王雨萱', gender: 'FEMALE', generation: 5, generationName: '子', birthDate: '2014-09-18', ancestralHome: '山东省济南市', birthPlace: '浙江省杭州市', fatherId: wang4_4.id, bio: '在读小学生。', tags: ['学生', '在世'], }, }) // 更新第四代的子女关系 await prisma.familyMember.update({ where: { id: wang4_1.id }, data: { childrenIds: [wang5_1.id, wang5_2.id] }, }) await prisma.familyMember.update({ where: { id: wang4_1Wife.id }, data: { childrenIds: [wang5_1.id, wang5_2.id] }, }) await prisma.familyMember.update({ where: { id: wang4_2.id }, data: { childrenIds: [wang5_3.id] }, }) await prisma.familyMember.update({ where: { id: wang4_3.id }, data: { childrenIds: [wang5_4.id] }, }) await prisma.familyMember.update({ where: { id: wang4_4.id }, data: { childrenIds: [wang5_5.id] }, }) // 更新王氏家族树的 rootMemberId await prisma.familyTree.update({ where: { id: wangTree.id }, data: { rootMemberId: wang1.id } }) console.log('✓ 创建王氏家族成员: 5代共32人') // 为虞女士创建家族树 const yuTree = await prisma.familyTree.create({ data: { name: '虞氏家族', description: '虞氏家族世系谱', ownerId: user2.id, }, }) console.log('✓ 创建家族树: 虞氏家族') // 虞氏家族成员 // 第一代 - 始祖 const yu1 = await prisma.familyMember.create({ data: { treeId: yuTree.id, surname: '虞', givenName: '文昌', fullName: '虞文昌', gender: 'MALE', generation: 1, generationName: '文', isFounder: true, birthDate: '1885-07-08', deathDate: '1960-11-15', ancestralHome: '浙江省杭州市', birthPlace: '浙江省杭州市西湖区', bio: '虞氏家族始祖,清末举人,民国时期从商。', tags: ['商人'], }, }) const yu1Wife = await prisma.familyMember.create({ data: { treeId: yuTree.id, surname: '周', givenName: '婉仪', fullName: '周婉仪', gender: 'FEMALE', generation: 1, birthDate: '1888-02-20', deathDate: '1965-05-10', ancestralHome: '浙江省杭州市', birthPlace: '浙江省杭州市上城区', spouseIds: [yu1.id], bio: '大家闺秀,知书达理。', }, }) await prisma.familyMember.update({ where: { id: yu1.id }, data: { spouseIds: [yu1Wife.id] }, }) // 第二代 const yu2_1 = await prisma.familyMember.create({ data: { treeId: yuTree.id, surname: '虞', givenName: '国栋', fullName: '虞国栋', gender: 'MALE', generation: 2, generationName: '国', birthDate: '1915-09-12', deathDate: '1988-07-25', ancestralHome: '浙江省杭州市', birthPlace: '浙江省杭州市西湖区', fatherId: yu1.id, motherId: yu1Wife.id, bio: '大学教授,从事文学研究。', tags: ['教授', '学者'], }, }) const yu2_1Wife = await prisma.familyMember.create({ data: { treeId: yuTree.id, surname: '林', givenName: '雅芳', fullName: '林雅芳', gender: 'FEMALE', generation: 2, birthDate: '1920-04-18', deathDate: '1992-12-08', ancestralHome: '福建省福州市', birthPlace: '福建省福州市鼓楼区', spouseIds: [yu2_1.id], bio: '中学教师,教授语文。', }, }) await prisma.familyMember.update({ where: { id: yu2_1.id }, data: { spouseIds: [yu2_1Wife.id] }, }) // 第二代 - 更多子女 const yu2_2 = await prisma.familyMember.create({ data: { treeId: yuTree.id, surname: '虞', givenName: '国华', fullName: '虞国华', gender: 'MALE', generation: 2, generationName: '国', birthDate: '1918-06-20', deathDate: '1996-03-15', ancestralHome: '浙江省杭州市', birthPlace: '浙江省杭州市西湖区', fatherId: yu1.id, motherId: yu1Wife.id, bio: '医生,在杭州市第一人民医院工作。', tags: ['医生'], }, }) const yu2_2Wife = await prisma.familyMember.create({ data: { treeId: yuTree.id, surname: '周', givenName: '婉仪', fullName: '周婉仪', gender: 'FEMALE', generation: 2, birthDate: '1922-08-10', deathDate: '1999-11-20', ancestralHome: '江苏省苏州市', birthPlace: '江苏省苏州市姑苏区', spouseIds: [yu2_2.id], bio: '护士,与丈夫在同一医院工作。', }, }) await prisma.familyMember.update({ where: { id: yu2_2.id }, data: { spouseIds: [yu2_2Wife.id] }, }) const yu2_3 = await prisma.familyMember.create({ data: { treeId: yuTree.id, surname: '虞', givenName: '国英', fullName: '虞国英', gender: 'FEMALE', generation: 2, generationName: '国', birthDate: '1925-12-05', deathDate: '2008-05-18', ancestralHome: '浙江省杭州市', birthPlace: '浙江省杭州市西湖区', fatherId: yu1.id, motherId: yu1Wife.id, bio: '教师,在小学任教。', tags: ['教师'], }, }) // 更新第一代的子女关系 await prisma.familyMember.update({ where: { id: yu1.id }, data: { childrenIds: [yu2_1.id, yu2_2.id, yu2_3.id] }, }) await prisma.familyMember.update({ where: { id: yu1Wife.id }, data: { childrenIds: [yu2_1.id, yu2_2.id, yu2_3.id] }, }) // 第三代 const yu3_1 = await prisma.familyMember.create({ data: { treeId: yuTree.id, surname: '虞', givenName: '晓梅', fullName: '虞晓梅', gender: 'FEMALE', generation: 3, generationName: '晓', birthDate: '1950-06-25', ancestralHome: '浙江省杭州市', birthPlace: '浙江省杭州市西湖区', fatherId: yu2_1.id, motherId: yu2_1Wife.id, phone: '13700137001', email: 'yuxiaomei@example.com', address: '浙江省杭州市西湖区文三路789号', bio: '医生,在浙江大学附属医院工作。', tags: ['医生', '在世'], }, }) const yu3_1Husband = await prisma.familyMember.create({ data: { treeId: yuTree.id, surname: '赵', givenName: '建平', fullName: '赵建平', gender: 'MALE', generation: 3, birthDate: '1948-03-15', ancestralHome: '浙江省宁波市', birthPlace: '浙江省宁波市海曙区', spouseIds: [yu3_1.id], spouseFatherName: '赵国强', spouseMotherName: '李秀芳', phone: '13700137002', bio: '工程师,已退休。', }, }) await prisma.familyMember.update({ where: { id: yu3_1.id }, data: { spouseIds: [yu3_1Husband.id] }, }) // 第三代 - 更多子女 const yu3_2 = await prisma.familyMember.create({ data: { treeId: yuTree.id, surname: '虞', givenName: '晓东', fullName: '虞晓东', gender: 'MALE', generation: 3, generationName: '晓', birthDate: '1953-11-20', ancestralHome: '浙江省杭州市', birthPlace: '浙江省杭州市上城区', fatherId: yu2_1.id, motherId: yu2_1Wife.id, phone: '13700137003', bio: '建筑师,设计过多个知名建筑。', tags: ['建筑师', '在世'], }, }) const yu3_3 = await prisma.familyMember.create({ data: { treeId: yuTree.id, surname: '虞', givenName: '晓华', fullName: '虞晓华', gender: 'MALE', generation: 3, generationName: '晓', birthDate: '1955-04-08', ancestralHome: '浙江省杭州市', birthPlace: '浙江省杭州市西湖区', fatherId: yu2_2.id, motherId: yu2_2Wife.id, phone: '13700137004', bio: '医生,继承父业。', tags: ['医生', '在世'], }, }) const yu3_3Wife = await prisma.familyMember.create({ data: { treeId: yuTree.id, surname: '钱', givenName: '丽', fullName: '钱丽', gender: 'FEMALE', generation: 3, birthDate: '1958-09-15', ancestralHome: '江苏省南京市', birthPlace: '江苏省南京市鼓楼区', spouseIds: [yu3_3.id], phone: '13700137005', bio: '药剂师。', }, }) await prisma.familyMember.update({ where: { id: yu3_3.id }, data: { spouseIds: [yu3_3Wife.id] }, }) const yu3_4 = await prisma.familyMember.create({ data: { treeId: yuTree.id, surname: '虞', givenName: '晓英', fullName: '虞晓英', gender: 'FEMALE', generation: 3, generationName: '晓', birthDate: '1957-07-12', ancestralHome: '浙江省杭州市', birthPlace: '浙江省杭州市西湖区', fatherId: yu2_2.id, motherId: yu2_2Wife.id, phone: '13700137006', bio: '护士,在医院工作。', tags: ['护士', '在世'], }, }) const yu3_5 = await prisma.familyMember.create({ data: { treeId: yuTree.id, surname: '虞', givenName: '晓军', fullName: '虞晓军', gender: 'MALE', generation: 3, generationName: '晓', birthDate: '1959-12-25', ancestralHome: '浙江省杭州市', birthPlace: '浙江省杭州市西湖区', fatherId: yu2_2.id, motherId: yu2_2Wife.id, phone: '13700137007', bio: '企业家,经营贸易公司。', tags: ['企业家', '在世'], }, }) // 更新第二代的子女关系 await prisma.familyMember.update({ where: { id: yu2_1.id }, data: { childrenIds: [yu3_1.id, yu3_2.id] }, }) await prisma.familyMember.update({ where: { id: yu2_1Wife.id }, data: { childrenIds: [yu3_1.id, yu3_2.id] }, }) await prisma.familyMember.update({ where: { id: yu2_2.id }, data: { childrenIds: [yu3_3.id, yu3_4.id, yu3_5.id] }, }) await prisma.familyMember.update({ where: { id: yu2_2Wife.id }, data: { childrenIds: [yu3_3.id, yu3_4.id, yu3_5.id] }, }) // 第四代 const yu4_1 = await prisma.familyMember.create({ data: { treeId: yuTree.id, surname: '虞', givenName: '雨欣', fullName: '虞雨欣', gender: 'FEMALE', generation: 4, generationName: '雨', birthDate: '1980-11-08', ancestralHome: '浙江省杭州市', birthPlace: '浙江省杭州市西湖区', motherId: yu3_1.id, phone: '13800138003', email: 'yuyuxin@example.com', address: '浙江省杭州市滨江区江南大道321号', bio: '律师,在知名律师事务所工作。', tags: ['律师', '在世'], }, }) const yu4_1Husband = await prisma.familyMember.create({ data: { treeId: yuTree.id, surname: '钱', givenName: '俊杰', fullName: '钱俊杰', gender: 'MALE', generation: 4, birthDate: '1978-05-20', ancestralHome: '江苏省苏州市', birthPlace: '江苏省苏州市姑苏区', spouseIds: [yu4_1.id], spouseFatherName: '钱文华', spouseMotherName: '陈美玲', phone: '13800138004', email: 'qianjunjie@example.com', bio: '企业家,经营进出口贸易公司。', }, }) await prisma.familyMember.update({ where: { id: yu4_1.id }, data: { spouseIds: [yu4_1Husband.id] }, }) // 第四代 - 更多子女(迁徙到不同城市) const yu4_2 = await prisma.familyMember.create({ data: { treeId: yuTree.id, surname: '虞', givenName: '雨辰', fullName: '虞雨辰', gender: 'MALE', generation: 4, generationName: '雨', birthDate: '1983-03-15', ancestralHome: '浙江省杭州市', birthPlace: '上海市黄浦区', // 迁徙到上海 motherId: yu3_1.id, phone: '13800138005', email: 'yuyuchen@example.com', address: '上海市黄浦区南京东路888号', bio: '金融分析师,在投资银行工作。', tags: ['金融', '在世', '上海'], }, }) const yu4_3 = await prisma.familyMember.create({ data: { treeId: yuTree.id, surname: '虞', givenName: '雨轩', fullName: '虞雨轩', gender: 'MALE', generation: 4, generationName: '雨', birthDate: '1985-07-22', ancestralHome: '浙江省杭州市', birthPlace: '北京市朝阳区', // 迁徙到北京 fatherId: yu3_2.id, phone: '13800138006', email: 'yuyuxuan@example.com', address: '北京市朝阳区建国门外大街100号', bio: '软件工程师,在科技公司工作。', tags: ['程序员', '在世', '北京'], }, }) const yu4_4 = await prisma.familyMember.create({ data: { treeId: yuTree.id, surname: '虞', givenName: '雨婷', fullName: '虞雨婷', gender: 'FEMALE', generation: 4, generationName: '雨', birthDate: '1987-11-10', ancestralHome: '浙江省杭州市', birthPlace: '广东省深圳市', // 迁徙到深圳 fatherId: yu3_3.id, motherId: yu3_3Wife.id, phone: '13800138007', email: 'yuyuting@example.com', address: '广东省深圳市福田区中心区', bio: '设计师,从事UI/UX设计工作。', tags: ['设计师', '在世', '深圳'], }, }) const yu4_5 = await prisma.familyMember.create({ data: { treeId: yuTree.id, surname: '虞', givenName: '雨萱', fullName: '虞雨萱', gender: 'FEMALE', generation: 4, generationName: '雨', birthDate: '1989-04-18', ancestralHome: '浙江省杭州市', birthPlace: '四川省成都市', // 迁徙到成都 fatherId: yu3_3.id, motherId: yu3_3Wife.id, phone: '13800138008', email: 'yuyuxuan2@example.com', address: '四川省成都市锦江区红星路', bio: '文化工作者,在博物馆工作。', tags: ['文化', '在世', '成都'], }, }) const yu4_6 = await prisma.familyMember.create({ data: { treeId: yuTree.id, surname: '虞', givenName: '雨涵', fullName: '虞雨涵', gender: 'FEMALE', generation: 4, generationName: '雨', birthDate: '1991-09-05', ancestralHome: '浙江省杭州市', birthPlace: '江苏省南京市', // 迁徙到南京 motherId: yu3_4.id, phone: '13800138009', email: 'yuyuhan@example.com', address: '江苏省南京市鼓楼区中山路', bio: '教师,在大学任教。', tags: ['教师', '在世', '南京'], }, }) const yu4_7 = await prisma.familyMember.create({ data: { treeId: yuTree.id, surname: '虞', givenName: '雨泽', fullName: '虞雨泽', gender: 'MALE', generation: 4, generationName: '雨', birthDate: '1993-12-20', ancestralHome: '浙江省杭州市', birthPlace: '浙江省宁波市', // 迁徙到宁波 fatherId: yu3_5.id, phone: '13800138010', email: 'yuyuze@example.com', address: '浙江省宁波市海曙区天一广场', bio: '企业家,经营贸易公司。', tags: ['企业家', '在世', '宁波'], }, }) // 更新第三代的子女关系 await prisma.familyMember.update({ where: { id: yu3_1.id }, data: { childrenIds: [yu4_1.id, yu4_2.id] }, }) await prisma.familyMember.update({ where: { id: yu3_1Husband.id }, data: { childrenIds: [yu4_1.id, yu4_2.id] }, }) await prisma.familyMember.update({ where: { id: yu3_2.id }, data: { childrenIds: [yu4_3.id] }, }) await prisma.familyMember.update({ where: { id: yu3_3.id }, data: { childrenIds: [yu4_4.id, yu4_5.id] }, }) await prisma.familyMember.update({ where: { id: yu3_3Wife.id }, data: { childrenIds: [yu4_4.id, yu4_5.id] }, }) await prisma.familyMember.update({ where: { id: yu3_4.id }, data: { childrenIds: [yu4_6.id] }, }) await prisma.familyMember.update({ where: { id: yu3_5.id }, data: { childrenIds: [yu4_7.id] }, }) // 第五代 const yu5_1 = await prisma.familyMember.create({ data: { treeId: yuTree.id, surname: '虞', givenName: '诗涵', fullName: '虞诗涵', gender: 'FEMALE', generation: 5, generationName: '诗', birthDate: '2008-08-08', ancestralHome: '浙江省杭州市', birthPlace: '浙江省杭州市滨江区', motherId: yu4_1.id, bio: '在读中学生,品学兼优。', tags: ['学生', '在世'], }, }) // 第五代 - 更多子女 const yu5_2 = await prisma.familyMember.create({ data: { treeId: yuTree.id, surname: '虞', givenName: '诗雅', fullName: '虞诗雅', gender: 'FEMALE', generation: 5, generationName: '诗', birthDate: '2011-05-12', ancestralHome: '浙江省杭州市', birthPlace: '浙江省杭州市滨江区', motherId: yu4_1.id, bio: '在读小学生。', tags: ['学生', '在世'], }, }) const yu5_3 = await prisma.familyMember.create({ data: { treeId: yuTree.id, surname: '虞', givenName: '诗轩', fullName: '虞诗轩', gender: 'MALE', generation: 5, generationName: '诗', birthDate: '2013-09-20', ancestralHome: '浙江省杭州市', birthPlace: '上海市黄浦区', fatherId: yu4_2.id, bio: '在读小学生。', tags: ['学生', '在世'], }, }) const yu5_4 = await prisma.familyMember.create({ data: { treeId: yuTree.id, surname: '虞', givenName: '诗语', fullName: '虞诗语', gender: 'FEMALE', generation: 5, generationName: '诗', birthDate: '2015-11-08', ancestralHome: '浙江省杭州市', birthPlace: '北京市朝阳区', fatherId: yu4_3.id, bio: '在读小学生。', tags: ['学生', '在世'], }, }) const yu5_5 = await prisma.familyMember.create({ data: { treeId: yuTree.id, surname: '虞', givenName: '诗琪', fullName: '虞诗琪', gender: 'FEMALE', generation: 5, generationName: '诗', birthDate: '2017-03-25', ancestralHome: '浙江省杭州市', birthPlace: '广东省深圳市', motherId: yu4_4.id, bio: '幼儿园学生。', tags: ['学生', '在世'], }, }) // 更新第四代的子女关系 await prisma.familyMember.update({ where: { id: yu4_1.id }, data: { childrenIds: [yu5_1.id, yu5_2.id] }, }) await prisma.familyMember.update({ where: { id: yu4_1Husband.id }, data: { childrenIds: [yu5_1.id, yu5_2.id] }, }) await prisma.familyMember.update({ where: { id: yu4_2.id }, data: { childrenIds: [yu5_3.id] }, }) await prisma.familyMember.update({ where: { id: yu4_3.id }, data: { childrenIds: [yu5_4.id] }, }) await prisma.familyMember.update({ where: { id: yu4_4.id }, data: { childrenIds: [yu5_5.id] }, }) // 更新虞氏家族树的 rootMemberId await prisma.familyTree.update({ where: { id: yuTree.id }, data: { rootMemberId: yu1.id } }) console.log('✓ 创建虞氏家族成员: 5代共33人') // 创建一些活动日志 await prisma.activityLog.create({ data: { treeId: wangTree.id, userId: user1.id, action: 'CREATE', entityType: 'MEMBER', entityId: wang1.id, entityName: '王德厚', timestamp: new Date(), }, }) await prisma.activityLog.create({ data: { treeId: yuTree.id, userId: user2.id, action: 'CREATE', entityType: 'MEMBER', entityId: yu1.id, entityName: '虞文昌', timestamp: new Date(), }, }) console.log('✓ 创建活动日志') console.log('\n========================================') console.log('数据库初始化完成!') console.log('========================================') console.log('\n测试账号信息:') console.log('1. 王先生') console.log(' 邮箱: wang@example.com') console.log(' 密码: 123456') console.log(' 家族树: 王氏家族 (5代32人)') console.log(' 迁徙城市: 济南→北京、上海、深圳、杭州、成都、苏州、西安') console.log('\n2. 虞女士') console.log(' 邮箱: yu@example.com') console.log(' 密码: 123456') console.log(' 家族树: 虞氏家族 (5代33人)') console.log(' 迁徙城市: 杭州→上海、北京、深圳、成都、南京、宁波') console.log('========================================\n') } main() .catch((e) => { console.error('数据库初始化失败:', e) process.exit(1) }) .finally(async () => { await prisma.$disconnect() })