497 lines
18 KiB
Markdown
497 lines
18 KiB
Markdown
# 🐾 宠物档案与健康管理小程序 — 产品功能设计
|
||
|
||
> **项目名称:**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、定时提醒)
|
||
|
||
你想先从哪个部分深入? |