const familyFeeds = [ { feedId: '1', genealogyId: '1001', feedType: '团圆记忆', createTime: '今天 10:24', feedContent: '今年端午全家相聚,长辈讲起祖居旧事,孩子们也为大家拍下了新的全家福。饭后我们把照片和口述片段整理进家族档案,让这份热闹成为往后仍能翻看的共同记忆。', publisherNickName: '汤正国', mediaOssIds: '', likedByMe: false, likeCount: 0, commentCount: 2, pinned: '0' }, { feedId: '2', genealogyId: '1001', feedType: '家族通知', createTime: '昨天 18:02', feedContent: '请家人补充老照片中的人物姓名、拍摄时间和地点。无法确认的信息也可以先写下线索,由熟悉往事的长辈共同核对。', publisherNickName: '谱主', mediaOssIds: '', likedByMe: false, likeCount: 0, commentCount: 0, pinned: '0' } ] const familyArticles = [ { id: '101', genealogyId: '1001', category: '家风家训', title: '孝友传家的日常', summary: '从敬老、睦亲与守信的小事里,看见家风如何代代相传。', author: '汤文正', updatedAt: '2024 年 5 月 12 日', paragraphs: [ '孝友传家,不只在族谱序言里,也在一家人每日的言行中。长辈以宽厚待晚辈,晚辈以耐心照料长辈,亲友之间守信互助,便是最朴素也最长久的家风。', '勤俭并非一味节省,而是珍惜所得、量入为出,也愿意在家人需要时伸出援手。家中每一代人都可以用自己的方式,把这份分寸与担当继续传下去。', '敬祖睦宗,最终是为了让今天的家人彼此认识、彼此关心。记录姓名与世代之外,也应留下真实的生活、共同经历和温暖记忆。' ] }, { id: '102', genealogyId: '1001', category: '家族往事', title: '祖居门前的那棵桂花树', summary: '长辈口述的旧居记忆,以及每年中秋一家人相聚的故事。', author: '汤淑华', updatedAt: '2024 年 5 月 10 日', paragraphs: [ '祖居门前曾有一棵桂花树。每到中秋,院里都是清甜的香气,远道回来的家人也总能循着那股味道找到家门。', '后来房屋几经修缮,桂花树仍被大家小心保留下来。它见过孩子长大,也见过长辈把往事一遍遍讲给后来人。' ] }, { id: '103', genealogyId: '1001', category: '族谱序言', title: '续修族谱序', summary: '说明本次续修的缘起、资料来源与共同参与的家人。', author: '谱主', updatedAt: '2024 年 5 月 8 日', paragraphs: [ '本次续修以旧谱、碑记、户籍资料和长辈口述为基础,由家人共同核对补充。凡暂不能确认之处,均保留来源和疑问,留待后续查证。', '愿这份记录不仅理清世系,也能保存家风、人物与共同记忆。' ] } ] const familyAlbums = [ { id: '201', genealogyId: '1001', name: '2024 春节团圆', updatedAt: '今天更新', description: '三代家人的团圆饭与院前合影', cover: '/static/assets/modules/family/albums/reunion-hero.png', photos: [ { id: '20101', src: '/static/assets/modules/family/albums/reunion-hero.png', alt: '春节团圆时三代家人的合影', caption: '除夕团圆 · 2024' }, { id: '20102', src: '/static/assets/modules/family/albums/family-portrait.png', alt: '家人在院落前的春节合影', caption: '院前合影 · 2024' }, { id: '20103', src: '/static/assets/modules/family/albums/reunion-table.png', alt: '家人围坐吃年夜饭', caption: '围桌守岁 · 2024' }, { id: '20104', src: '/static/assets/modules/family/albums/ancestral-home.png', alt: '祖居院落的复古旧照', caption: '祖居旧影 · 1968' }, { id: '20105', src: '/static/assets/modules/family/albums/ancestral-portrait.png', alt: '老一辈家人在祖居门前的合影', caption: '门前合影 · 1972' } ] }, { id: '202', genealogyId: '1001', name: '祖居旧影', updatedAt: '5 月 10 日更新', description: '祖居、旧物与长辈珍藏的老照片', cover: '/static/assets/modules/family/albums/ancestral-home.png', photos: [ { id: '20201', src: '/static/assets/modules/family/albums/ancestral-home.png', alt: '祖居院落的复古旧照', caption: '祖居旧影 · 1968' }, { id: '20202', src: '/static/assets/modules/family/albums/ancestral-portrait.png', alt: '老一辈家人在祖居门前的合影', caption: '门前合影 · 1972' } ] }, { id: '203', genealogyId: '1001', name: '儿童成长', updatedAt: '持续更新', description: '记录孩子们每一个值得珍藏的瞬间', cover: '/static/assets/modules/family/albums/family-portrait.png', photos: [ { id: '20301', src: '/static/assets/modules/family/albums/family-portrait.png', alt: '家人在院落前的春节合影', caption: '院前合影 · 2024' } ] } ] const clonePreviewFamilyFeed = (feed) => ({ ...feed }) const clonePreviewFamilyArticle = (article) => ({ ...article, paragraphs: [...article.paragraphs] }) const clonePreviewFamilyAlbum = (album) => ({ ...album, photoCount: album.photos.length, photos: album.photos.map((photo) => ({ ...photo })) }) const listScopedPreviewFamilyContent = (items, clone, genealogyId) => { const normalizedGenealogyId = String(genealogyId || '') if (!normalizedGenealogyId) return [] return items .filter((item) => item.genealogyId === normalizedGenealogyId) .map(clone) } export const listPreviewFamilyFeeds = (genealogyId) => listScopedPreviewFamilyContent(familyFeeds, clonePreviewFamilyFeed, genealogyId) export const listPreviewFamilyArticles = (genealogyId) => listScopedPreviewFamilyContent(familyArticles, clonePreviewFamilyArticle, genealogyId) export const listPreviewFamilyAlbums = (genealogyId) => listScopedPreviewFamilyContent(familyAlbums, clonePreviewFamilyAlbum, genealogyId)