FurBall/毛球手账 — 产品功能设计.md

497 lines
18 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# 🐾 宠物档案与健康管理小程序 — 产品功能设计
> **项目名称:**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
### 集合1users用户表
```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
}
```
### 集合2pets宠物档案表
```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
}
```
### 集合3health_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
}
```
### 集合4schedules日程/提醒表)
```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
}
```
### 集合5hospitals医院表种子数据+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 12-3周核心闭环
- [ ] 微信登录 + 用户系统
- [ ] 创建/编辑宠物基础档案
- [ ] 疫苗/驱虫记录 CRUD
- [ ] 基础提醒逻辑 + 订阅消息推送
- [ ] 首页日程看板
### Phase 22周体验增强
- [ ] 体重记录 + 曲线图
- [ ] 病历记录(图文)
- [ ] 电子免疫证生成H5页面样式
- [ ] 多宠物切换
### Phase 32周社区与变现
- [ ] 附近医院(种子数据)
- [ ] 养宠百科10篇种子文章
- [ ] 会员系统uniCloud支持微信支付
- [ ] PDF导出
### Phase 4持续运营
- [ ] 丢失宠物启事
- [ ] 家庭共享
- [ ] OCR识别
- [ ] 用户反馈迭代
---
## 九、商业化路径
| 阶段 | 策略 |
| ---------- | ------------------------------------------------------------ |
| **冷启动** | 免费使用,通过宠物群、小红书、豆瓣小组引流 |
| **成长期** | 推出高级会员¥12/月 或 ¥98/年),核心功能免费,高级功能付费 |
| **变现期** | 宠物保险 CPS 分销(支付宝/众安宠物险)、宠物医院导流抽佣、宠物用品电商 |
---
## 十、风险与合规注意
1. **订阅消息限制**:微信小程序订阅消息需要用户每次授权,设计时要引导用户在关键节点(如设置提醒时)授权,且文案说明价值
2. **医疗免责声明**:所有健康建议需标注"仅供参考,具体请遵医嘱",避免医疗纠纷
3. **图片审核**用户上传的宠物照片、病历等需接入微信内容安全API
4. **数据隐私**:宠物档案属于个人数据,需在用户协议中明确数据使用范围
---
如果你确定要做这个方向,我可以继续帮你输出:
1. **详细的数据库 Schema 代码**uniCloud 的 DB Schema 格式)
2. **核心页面的前端组件结构**uni-app 页面规划)
3. **云函数代码框架**登录、CRUD、定时提醒
你想先从哪个部分深入?