# 始祖标识功能说明 ## 功能概述 当创建新家族树后添加第一个成员时,系统会自动将其标记为"始祖",并赋予特殊的视觉标识。 ## 自动设置 ### 第一个成员自动处理 当家族树中没有任何成员时,添加的第一个成员会自动: 1. **设置世代**:自动设为第 1 代 2. **添加标签**:自动添加"始祖"标签 3. **特殊提示**:页面标题显示"添加家族始祖" ### 页面提示 - **标题**:添加家族始祖 - **说明**:这是家族树的第一位成员,将自动标记为"始祖"并设为第1代 ## 视觉标识 ### 始祖标签样式 "始祖"标签具有特殊的视觉样式: - **图标**:👑 皇冠图标 - **颜色**:金色主题(amber) - 背景:`bg-amber-100` - 文字:`text-amber-800` - 边框:`border-amber-300` - **字体**:加粗显示(`font-semibold`) ### 普通标签样式 其他标签使用默认样式: - 背景:`bg-primary/10` - 文字:`text-primary` - 边框:`border-primary/20` ## 显示位置 始祖标签会显示在以下位置: 1. **成员列表页**:每个成员卡片的标签区域 2. **成员详情页**:成员信息的标签部分 3. **族谱图**:成员节点上 ## 使用场景 ### 创建新家族树 1. 创建家族树后,点击"添加成员" 2. 系统检测到这是第一个成员 3. 页面显示"添加家族始祖" 4. 填写成员信息并保存 5. 成员自动标记为"始祖",世代为1 ### 后续添加成员 - 第二个及以后的成员不会自动标记为始祖 - 需要手动设置世代和关系 - 可以手动添加其他标签 ## 技术实现 ### 检测逻辑 ```typescript const existingMembers = Object.values(treeData.members) const isFirstMember = existingMembers.length === 0 ``` ### 自动设置 ```typescript const memberData = isFirstMember ? { ...newMember, generation: 1, tags: [...(newMember.tags || []), '始祖'], createdAt: new Date().toISOString(), updatedAt: new Date().toISOString(), } : { ...newMember, createdAt: new Date().toISOString(), updatedAt: new Date().toISOString(), } ``` ### 样式渲染 ```typescript className={tag === '始祖' ? "text-xs bg-amber-100 text-amber-800 px-2 py-0.5 rounded border border-amber-300 font-semibold" : "text-xs bg-primary/10 text-primary px-2 py-0.5 rounded border border-primary/20"} ``` ## 注意事项 1. **唯一性**:每个家族树只有第一个成员会自动标记为始祖 2. **不可撤销**:一旦标记为始祖,需要手动编辑才能移除标签 3. **世代固定**:始祖默认为第1代 4. **视觉突出**:始祖标签使用金色主题,在列表中更加醒目 ## 未来扩展 可能的功能扩展: - [ ] 支持多个始祖(如夫妻双方都是始祖) - [ ] 始祖成员在族谱图中的特殊显示 - [ ] 始祖成员的专属统计信息 - [ ] 从始祖开始的完整世系追溯