#  🐾 宠物档案与健康管理小程序 — 产品功能设计

> **项目名称：**FurBall
>
> 中文名称：毛球手账

## 一、产品定位与目标用户

| 维度         | 定义                                                         |
| ------------ | ------------------------------------------------------------ |
| **产品定位** | 面向养宠人士的轻量级宠物健康管家，核心解决"忘记打疫苗、驱虫时间混乱、病历散落"三大痛点 |
| **目标用户** | 25-40岁城市养宠人群，以猫狗为主，注重宠物健康管理但嫌传统App太复杂 |
| **核心价值** | 让宠物健康管理像记账一样简单，关键时刻（如就医、托运）一键调出完整档案 |

---

## 二、功能架构总览

```
├── 首页（Dashboard）
├── 宠物档案（Pet Profile）
│   ├── 基础信息管理
│   ├── 健康档案
│   └── 成长记录
├── 健康日程（Health Schedule）
│   ├── 疫苗管理
│   ├── 驱虫管理
│   ├── 体检提醒
│   └── 自定义提醒
├── 发现/社区（Discovery）
│   ├── 附近医院
│   ├── 养宠百科
│   └── 丢失宠物启事（可选）
├── 我的（Profile）
│   ├── 多宠物切换
│   ├── 数据导出
│   └── 会员中心
└── 消息中心（Notifications）
```

---

## 三、核心功能模块详细设计

### 模块一：宠物档案管理（Pet Profile）

#### 1.1 基础信息卡片
| 字段      | 类型    | 说明                                     |
| --------- | ------- | ---------------------------------------- |
| 宠物昵称  | String  | 必填，2-10字                             |
| 宠物类型  | Enum    | 猫/狗/其他（兔、仓鼠、鸟、爬宠等）       |
| 品种      | String  | 二级联动选择，如狗→金毛/柯基/柴犬        |
| 性别      | Enum    | 公/母/未知                               |
| 出生日期  | Date    | 用于计算年龄，支持"不知道具体日期，估算" |
| 体重      | Number  | kg，支持历史记录曲线                     |
| 毛色/特征 | String  | 用于丢失启事描述                         |
| 绝育状态  | Boolean | 是/否/未计划                             |
| 头像      | Image   | 支持相册选择或拍照                       |

**产品细节**：
- 首次进入强制创建至少一只宠物档案
- 支持多宠物管理，首页可左右滑动切换
- 年龄自动计算并显示"3岁2个月"格式
- 体重输入后自动生成趋势图（近6个月）

#### 1.2 健康档案（核心差异化功能）
| 子功能       | 描述                                                         |
| ------------ | ------------------------------------------------------------ |
| **疫苗记录** | 记录每次疫苗：名称（如妙三多、狂犬）、批次号、接种日期、下次接种日期、接种医院、医生、疫苗证照片上传 |
| **驱虫记录** | 内驱/外驱/内外同驱分类，品牌（大宠爱、福来恩等），使用日期，下次日期 |
| **病历记录** | 就诊时间、医院、主诉、诊断结果、医嘱、用药清单、检查报告照片（支持多张）、费用 |
| **体检报告** | 年度体检数据归档，支持PDF/图片上传                           |
| **过敏史**   | 食物过敏、药物过敏、环境过敏标签                             |
| **紧急信息** | 血型（如有）、慢性病、正在服用的药物                         |

**产品细节**：
- 每条记录支持**时间轴**展示，按时间倒序
- 疫苗记录可生成「电子免疫证」，模拟真实疫苗本样式，方便给宠物店/托运公司查看
- 病历支持 OCR 识别医院小票/处方单（增值功能）
- 所有记录支持**导出为PDF**（会员功能）

#### 1.3 成长记录（情感向功能）
- 体重变化曲线图
- 身高/体长记录（可选）
- 里程碑事件（第一次洗澡、第一次出门、换牙等）
- 相册时间轴（按宠物维度聚合照片）

---

### 模块二：健康日程与智能提醒（Health Schedule）

这是**最高频使用**的功能，也是用户留存的核心。

#### 2.1 疫苗提醒
| 功能点     | 设计                                                         |
| ---------- | ------------------------------------------------------------ |
| 预设方案   | 根据宠物类型和年龄自动推荐疫苗方案（如幼猫3针妙三多+1针狂犬） |
| 自定义方案 | 用户可手动调整                                               |
| 提醒逻辑   | 到期前7天、3天、当天分别推送订阅消息                         |
| 完成确认   | 用户标记"已完成"后自动计算下次时间                           |

#### 2.2 驱虫提醒
| 功能点   | 设计                                               |
| -------- | -------------------------------------------------- |
| 频率设置 | 内驱（3月/次）、外驱（1月/次），根据品牌推荐默认值 |
| 季节模式 | 夏季自动缩短外驱间隔（可选智能建议）               |
| 提醒方式 | 同疫苗，支持微信订阅消息                           |

#### 2.3 自定义提醒
- 洗澡、剪指甲、换粮、买粮、体内外驱分开提醒等
- 支持循环周期（每N天/周/月）
- 支持一次性提醒（如预约了绝育手术）

#### 2.4 日程看板（首页核心）
```
┌─────────────────────────────┐
│  今日日程                    │
│  🐱 咪咪 — 外驱（大宠爱）    │
│     已逾期2天 ⚠️            │
│  🐶 旺财 — 狂犬疫苗（第2年） │
│     还有5天                  │
├─────────────────────────────┤
│  本周待办（3）               │
│  本月已完成（5）             │
└─────────────────────────────┘
```

**产品细节**：
- 逾期事项红色高亮，点击直达记录页面
- 完成操作后弹出「成就卡片」，可分享朋友圈
- 连续按时完成N次获得徽章（游戏化）

---

### 模块三：附近服务（LBS Discovery）

#### 3.1 附近宠物医院
| 功能         | 说明                                           |
| ------------ | ---------------------------------------------- |
| 地图模式     | 基于腾讯位置服务，显示3km/5km/10km内医院       |
| 列表模式     | 距离排序，显示评分、营业时间、是否24小时       |
| 医院档案     | 名称、地址、电话、营业时间、特色科室、用户评价 |
| 一键导航     | 唤起腾讯地图/高德地图                          |
| 我的就诊记录 | 关联到该医院的病历自动聚合                     |

**数据来源**：
- MVP阶段：手动录入种子数据（你所在城市50家医院）
- 增长阶段：UGC 允许用户添加/纠错，审核后展示

#### 3.2 养宠百科（内容运营）
- 按宠物类型分类的科普文章（疫苗知识、驱虫指南、常见疾病）
- 搜索功能（如"猫咪呕吐怎么办"）
- 症状自查工具（决策树：症状→可能原因→建议就医/观察）

#### 3.3 宠物丢失启事（社区功能，可选）
- 发布丢失信息：宠物照片、特征、丢失地点、时间、联系方式
- 基于地理位置推送给附近用户
- 发现宠物者可点击「我看见了」上传位置
- **注意**：需接入微信内容安全API审核，避免诈骗

---

### 模块四：数据与个性化（My Profile）

#### 4.1 多宠物管理
- 支持创建最多3只宠物（免费版）/ 无限（会员版）
- 快速切换：首页顶部宠物头像Tab切换
- 家庭共享：邀请家人共同管理同一只宠物（通过分享链接绑定）

#### 4.2 数据安全与导出
- 云端自动备份（uniCloud天然支持）
- 导出PDF：疫苗接种证明、完整健康档案
- 数据迁移：支持导出Excel/导入（防平台锁定）

#### 4.3 会员体系
| 等级     | 功能                                                   |
| -------- | ------------------------------------------------------ |
| 免费版   | 2只宠物、基础提醒、本地记录                            |
| 高级会员 | 无限宠物、PDF导出、OCR识别、家庭共享、去广告、优先客服 |

---

## 四、核心用户流程（User Flow）

### 流程1：新用户首次使用（Onboarding）
```
启动小程序 → 微信授权登录 → 引导创建宠物档案
    ↓
输入宠物昵称、类型、品种、生日、头像
    ↓
系统根据年龄自动推荐疫苗/驱虫计划
    ↓
"是否开启提醒？" → 引导开启订阅消息授权
    ↓
进入首页，展示今日/近期日程
```

### 流程2：记录一次疫苗接种
```
首页点击"+" → 选择"记录疫苗" → 选择宠物
    ↓
填写：疫苗名称、接种日期、医院、医生、批次号
    ↓
上传疫苗证照片（可选）
    ↓
系统自动计算下次接种日期（如1年后）
    ↓
确认保存 → 更新日程看板
```

### 流程3：逾期提醒处理
```
收到订阅消息："咪咪的外驱已逾期3天"
    ↓
点击消息进入小程序 → 高亮显示逾期事项
    ↓
用户选择："已完成" / "推迟3天" / "忽略"
    ↓
若完成：要求补录使用的驱虫药品牌 → 更新记录
```

---

## 五、数据库设计（uniCloud / MongoDB）

### 集合1：users（用户表）
```javascript
{
  _id: ObjectId,
  wx_openid: String,          // 微信openid
  unionid: String,            // 微信unionid
  nickName: String,
  avatarUrl: String,
  phone: String,              // 可选绑定
  membership: {
    type: String,             // 'free' | 'premium'
    expireAt: Date
  },
  createdAt: Date,
  updatedAt: Date
}
```

### 集合2：pets（宠物档案表）
```javascript
{
  _id: ObjectId,
  user_id: ObjectId,          // 关联users
  name: String,
  type: String,               // 'cat' | 'dog' | 'other'
  breed: String,
  gender: String,             // 'male' | 'female' | 'unknown'
  birthday: Date,
  isBirthdayEstimated: Boolean,
  color: String,
  weight: [{                  // 体重历史数组
    value: Number,
    date: Date,
    note: String
  }],
  neutered: Boolean,
  avatar: String,             // 云存储URL
  allergies: [String],
  chronicDiseases: [String],
  emergencyContact: {
    name: String,
    phone: String
  },
  createdAt: Date
}
```

### 集合3：health_records（健康记录表）
```javascript
{
  _id: ObjectId,
  pet_id: ObjectId,
  user_id: ObjectId,
  type: String,               // 'vaccine' | 'deworm' | 'medical' | 'checkup'
  // 疫苗专用字段
  vaccineName: String,
  batchNumber: String,
  // 驱虫专用字段
  dewormType: String,         // 'internal' | 'external' | 'both'
  brand: String,
  // 病历通用字段
  hospital: String,
  doctor: String,
  date: Date,
  nextDate: Date,             // 下次提醒日期
  description: String,
  diagnosis: String,
  medications: [{
    name: String,
    dosage: String,
    frequency: String
  }],
  images: [String],           // 云存储图片数组
  cost: Number,               // 费用，可选
  isCompleted: Boolean,       // 是否完成（用于提醒）
  createdAt: Date
}
```

### 集合4：schedules（日程/提醒表）
```javascript
{
  _id: ObjectId,
  pet_id: ObjectId,
  user_id: ObjectId,
  type: String,               // 'vaccine' | 'deworm' | 'custom'
  title: String,
  scheduledDate: Date,
  frequency: String,          // 'once' | 'daily' | 'weekly' | 'monthly' | 'yearly'
  interval: Number,           // 每N个frequency
  status: String,             // 'pending' | 'completed' | 'overdue' | 'skipped'
  reminderDays: [Number],     // 提前提醒天数 [7,3,1]
  relatedRecordId: ObjectId,  // 关联health_records
  createdAt: Date
}
```

### 集合5：hospitals（医院表，种子数据+UGC）
```javascript
{
  _id: ObjectId,
  name: String,
  address: String,
  location: {
    type: "Point",
    coordinates: [lng, lat]   // GeoJSON，用于地理位置查询
  },
  phone: String,
  hours: String,
  is24Hour: Boolean,
  tags: [String],             // ['骨科', '心脏科', '夜间急诊']
  rating: Number,
  reviewCount: Number,
  verified: Boolean,          // 是否官方认证
  createdAt: Date
}
```

**索引建议**：
- `pets`: `{ user_id: 1 }`
- `health_records`: `{ pet_id: 1, date: -1 }`, `{ user_id: 1 }`
- `schedules`: `{ user_id: 1, scheduledDate: 1 }`, `{ status: 1 }`
- `hospitals`: `{ location: "2dsphere" }`（地理位置查询必需）

---

## 六、技术实现要点（uniCloud侧）

### 1. 云函数设计
| 云函数            | 职责                                                         |
| ----------------- | ------------------------------------------------------------ |
| `login`           | 微信登录，获取openid，创建/更新用户                          |
| `petCrud`         | 宠物的增删改查                                               |
| `recordCrud`      | 健康记录的增删改查                                           |
| `scheduleManager` | 创建提醒、计算下次日期、更新状态                             |
| `reminderPush`    | **定时触发器**：每天9:00扫描`schedules`，给当天/逾期用户发订阅消息 |
| `nearbyHospitals` | 接收经纬度，用MongoDB `$near`查询附近医院                    |
| `exportPdf`       | 生成PDF档案（可用`pdfkit`或调用外部API）                     |
| `contentCheck`    | 调用微信内容安全API审核UGC内容                               |

### 2. 定时触发器（关键）
```javascript
// 每天上午9点执行
exports.main = async (event, context) => {
  const today = new Date();
  const db = uniCloud.database();
  
  // 查找今天需要提醒或已逾期的日程
  const schedules = await db.collection('schedules')
    .where({
      scheduledDate: db.command.lte(today),
      status: db.command.in(['pending', 'overdue'])
    })
    .get();
    
  // 批量发送订阅消息（需用户之前授权过）
  for (let item of schedules.data) {
    await sendSubscribeMessage(item.user_id, item);
  }
  
  // 标记逾期
  await markOverdue(schedules.data);
};
```

### 3. 权限设计（DB Schema）
利用 uniCloud 的 DB Schema 控制数据安全：
```json
{
  "bsonType": "object",
  "permission": {
    "read": "doc.user_id == auth.uid",
    "create": "auth.uid != null",
    "update": "doc.user_id == auth.uid",
    "delete": "doc.user_id == auth.uid"
  }
}
```
确保用户只能看到自己的宠物数据。

---

## 七、UI/UX 设计建议

### 首页布局
```
┌──────────────────────────────┐
│  [头像] 早上好，铲屎官        │
│                              │
│  ┌────┐  ┌────┐  ┌────┐    │
│  │🐱咪咪│  │🐶旺财│  │+添加│   │
│  └────┘  └────┘  └────┘    │
│                              │
│  📅 今日日程                 │
│  ┌────────────────────────┐  │
│  │ ⚠️ 咪咪外驱 已逾期2天   │  │
│  │    [立即补录]           │  │
│  └────────────────────────┘  │
│  ┌────────────────────────┐  │
│  │ ✅ 旺财狂犬疫苗 还有5天 │  │
│  └────────────────────────┘  │
│                              │
│  📊 咪咪本月健康概览          │
│  体重: 4.2kg ↑0.1           │
│  下次疫苗: 2026-12-01        │
│                              │
│  [快速记录] [查看档案] [附近医院] │
└──────────────────────────────┘
```

### 设计规范
- **主色调**：暖橙色（#FF8C42）+ 薄荷绿（#4ECDC4），传递温暖、健康、活力
- **图标风格**：线性插画，宠物形象圆润可爱
- **空状态**：未创建宠物时展示引导插画；无日程时显示"今天可以撸猫啦~"
- **加载态**： paw print（爪印）旋转动画

---

## 八、MVP 版本排期建议

### Phase 1（2-3周）：核心闭环
- [ ] 微信登录 + 用户系统
- [ ] 创建/编辑宠物基础档案
- [ ] 疫苗/驱虫记录 CRUD
- [ ] 基础提醒逻辑 + 订阅消息推送
- [ ] 首页日程看板

### Phase 2（2周）：体验增强
- [ ] 体重记录 + 曲线图
- [ ] 病历记录（图文）
- [ ] 电子免疫证生成（H5页面样式）
- [ ] 多宠物切换

### Phase 3（2周）：社区与变现
- [ ] 附近医院（种子数据）
- [ ] 养宠百科（10篇种子文章）
- [ ] 会员系统（uniCloud支持微信支付）
- [ ] PDF导出

### Phase 4（持续运营）
- [ ] 丢失宠物启事
- [ ] 家庭共享
- [ ] OCR识别
- [ ] 用户反馈迭代

---

## 九、商业化路径

| 阶段       | 策略                                                         |
| ---------- | ------------------------------------------------------------ |
| **冷启动** | 免费使用，通过宠物群、小红书、豆瓣小组引流                   |
| **成长期** | 推出高级会员（¥12/月 或 ¥98/年），核心功能免费，高级功能付费 |
| **变现期** | 宠物保险 CPS 分销（支付宝/众安宠物险）、宠物医院导流抽佣、宠物用品电商 |

---

## 十、风险与合规注意

1. **订阅消息限制**：微信小程序订阅消息需要用户每次授权，设计时要引导用户在关键节点（如设置提醒时）授权，且文案说明价值
2. **医疗免责声明**：所有健康建议需标注"仅供参考，具体请遵医嘱"，避免医疗纠纷
3. **图片审核**：用户上传的宠物照片、病历等需接入微信内容安全API
4. **数据隐私**：宠物档案属于个人数据，需在用户协议中明确数据使用范围

---

如果你确定要做这个方向，我可以继续帮你输出：
1. **详细的数据库 Schema 代码**（uniCloud 的 DB Schema 格式）
2. **核心页面的前端组件结构**（uni-app 页面规划）
3. **云函数代码框架**（登录、CRUD、定时提醒）

你想先从哪个部分深入？