18 KiB
18 KiB
🐾 宠物档案与健康管理小程序 — 产品功能设计
**项目名称:**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(用户表)
{
_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(宠物档案表)
{
_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(健康记录表)
{
_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(日程/提醒表)
{
_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)
{
_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. 定时触发器(关键)
// 每天上午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 控制数据安全:
{
"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 分销(支付宝/众安宠物险)、宠物医院导流抽佣、宠物用品电商 |
十、风险与合规注意
- 订阅消息限制:微信小程序订阅消息需要用户每次授权,设计时要引导用户在关键节点(如设置提醒时)授权,且文案说明价值
- 医疗免责声明:所有健康建议需标注"仅供参考,具体请遵医嘱",避免医疗纠纷
- 图片审核:用户上传的宠物照片、病历等需接入微信内容安全API
- 数据隐私:宠物档案属于个人数据,需在用户协议中明确数据使用范围
如果你确定要做这个方向,我可以继续帮你输出:
- 详细的数据库 Schema 代码(uniCloud 的 DB Schema 格式)
- 核心页面的前端组件结构(uni-app 页面规划)
- 云函数代码框架(登录、CRUD、定时提醒)
你想先从哪个部分深入?