Files
2025-10-26 19:29:30 +08:00

416 lines
11 KiB
Markdown
Raw Permalink 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.
# 生日提醒小程序产品需求文档 (PRD)
## 1. 项目概述
### 1.1 项目名称
生日提醒小程序
### 1.2 项目背景
随着社交圈不断扩大,人们需要记住的生日和纪念日越来越多。人工记忆容易遗漏重要日期,需要一款智能提醒工具帮助用户管理所有重要的纪念日。
### 1.3 项目定位
一款轻量级、易用的个人纪念日管理小程序,帮助用户记录和提醒重要的生日、节日和纪念日。
### 1.4 核心价值
- **不遗漏任何重要日期**:智能提醒系统确保用户不会错过亲朋好友的生日
- **支持农历生日**:满足中国传统习惯
- **灵活定制**:支持多种纪念日类型,自定义提醒时间
- **简单高效**:极简界面,快速添加和查看
---
## 2. 用户画像
### 2.1 目标用户
- **年龄**: 20-45岁
- **特征**: 重视人际关系,有较多社交圈子
- **痛点**:
- 不记得朋友的生日日期
- 农历生日难以记忆和转换
- 错过重要的生日祝福
- 无法提前准备礼物
### 2.2 使用场景
1. 添加新朋友后,立即录入其生日信息
2. 提前收到生日提醒,有时间准备礼物或祝福
3. 查看近期即将到来的纪念日
4. 回顾和添加各种纪念日(结婚、恋爱、重要事件等)
---
## 3. 功能需求
### 3.1 核心功能(MVP
#### 3.1.1 人员信息管理
**功能描述**: 用户可以添加、编辑、删除人员信息
**详细信息**:
- **人员信息字段**:
- 姓名(必填)
- 昵称(可选)
- 备注(可选)
- 头像(可选,可使用默认头像)
- **操作功能**:
- 新增人员
- 编辑人员信息
- 删除人员(需二次确认)
- 搜索人员(按姓名搜索)
**页面设计**:
- 人员列表页:卡片式布局,显示头像、姓名、最新生日信息
- 人员详情页:显示完整信息及所有关联的纪念日
---
#### 3.1.2 纪念日管理
**功能描述**: 为人员添加生日或其他纪念日
**纪念日信息字段**:
- 纪念日类型(必填):
- 公历生日
- 农历生日
- 结婚纪念日
- 订婚纪念日
- 其他纪念日(自定义名称)
- 具体日期(必填)
- 公历:年-月-日
- 农历:年-月-日(自动转换为公历计算下次提醒日期)
- 重要程度(可选):
- 非常重要(红色标记)
- 重要(橙色标记)
- 一般(灰色标记)
- 是否提醒(必填):
- 开启提醒/关闭提醒
- 提前提醒天数(必填,需开启提醒时):
- 提前3天
- 提前7天
- 提前14天
- 提前30天
- 自定义天数(1-365天)
**操作功能**:
- 添加纪念日(关联到指定人员)
- 编辑纪念日信息
- 删除纪念日(需二次确认)
- 标记已完成(当天查看后自动标记)
---
#### 3.1.3 提醒功能
**功能描述**: 智能提醒系统主动通知即将到来的纪念日
**提醒机制**:
- **推送提醒**: 在纪念日到达设定提前天数时推送通知
- **每日提醒**: 每天早上8:00推送当天即将到来的纪念日
- **提醒内容**:
- 人员姓名和头像
- 纪念日类型
- 距离具体日期的天数
- 上次备注信息
**提醒设置**:
- 全局提醒开关
- 单个纪念日提醒开关
- 提醒时间设置(默认早上8:00
- 提醒频率设置(仅提前提醒/每日提醒)
---
#### 3.1.4 日历视图
**功能描述**: 以日历形式展示所有纪念日
**视图模式**:
- **月视图**: 显示当月所有纪念日,按日期排序
- **列表视图**: 按时间顺序显示即将到来的纪念日(最近1-3个月)
- **筛选功能**: 按纪念日类型、重要程度筛选
**交互功能**:
- 点击日期查看当天所有纪念日
- 左右滑动切换月份
- 回到今天按钮
---
### 3.2 高级功能(后续迭代)
#### 3.2.1 统计功能
- 年度统计:查看全年纪念日概览
- 人员维度:查看某人所有纪念日
- 类型统计:各类纪念日占比
#### 3.2.2 提醒历史
- 查看历史提醒记录
- 查看已完成的纪念日记录
- 祝福记录(记录了哪些祝福内容)
#### 3.2.3 导入导出
- 支持批量导入人员信息(Excel/CSV)
- 导出数据备份
- 导入数据恢复
#### 3.2.4 社交功能
- 生日祝福模板
- 礼物建议
- 分享功能(分享生日提醒给家人朋友)
---
## 4. 技术需求
### 4.1 平台选择
**建议**: 微信小程序(初始版本)
- **优势**:
- 用户基数大,无需下载App
- 开发成本低
- 支持推送通知
- 跨平台兼容
- **备选**: 也可以考虑开发移动AppReact Native/Flutter
### 4.2 技术架构
#### 4.2.1 前端技术栈
- **框架**: 微信小程序原生框架 / Taro / uni-app
- **UI组件**: ColorUI / Vant Weapp
- **状态管理**: MobX / Redux
#### 4.2.2 后端技术栈(如需服务端)
- **方案一**: 纯客户端存储(轻量级,无需后端)
- 使用微信小程序的本地存储(localStorage
- 最多存储10MB数据
- **方案二**: 云端存储(数据备份和同步)
- Node.js + Express
- 数据库: MySQL / MongoDB
- 云服务器: 腾讯云/阿里云
#### 4.2.3 农历计算
- **核心功能**: 农历转公历、公历转农历
- **技术方案**: 使用现成的农历计算库
- JavaScript: `lunar-javascript`
- Python: `lunarcalendar`
- 小程序: `@lunar-js/calendar`
---
### 4.3 数据模型设计
#### 4.3.1 人员表 (Person)
```javascript
{
id: String, // 唯一标识
name: String, // 姓名(必填)
nickname: String, // 昵称
avatar: String, // 头像URL
remark: String, // 备注
createTime: Date, // 创建时间
updateTime: Date // 更新时间
}
```
#### 4.3.2 纪念日表 (Anniversary)
```javascript
{
id: String, // 唯一标识
personId: String, // 关联人员ID
type: String, // 纪念日类型
customTypeName: String, // 自定义类型名称(当type为"其他"时)
// 日期信息
isLunar: Boolean, // 是否农历(true=农历,false=公历)
lunarYear: Number, // 农历年份
lunarMonth: Number, // 农历月份
lunarDay: Number, // 农历日期
solarYear: Number, // 公历年份
solarMonth: Number, // 公历月份
solarDay: Number, // 公历日期
// 提醒设置
remindEnabled: Boolean, // 是否开启提醒
remindDays: Number, // 提前提醒天数
lastRemindTime: Date, // 上次提醒时间
// 其他信息
importance: String, // 重要程度
remark: String, // 备注
createTime: Date, // 创建时间
updateTime: Date // 更新时间
}
```
#### 4.3.3 提醒记录表 (RemindHistory)
```javascript
{
id: String, // 唯一标识
anniversaryId: String, // 关联纪念日ID
remindDate: Date, // 提醒日期
remindType: String, // 提醒类型(提前提醒/当日提醒)
isRead: Boolean, // 是否已读
createTime: Date // 创建时间
}
```
---
## 5. 非功能需求
### 5.1 性能需求
- **加载速度**: 页面加载时间 < 1秒
- **操作响应**: 用户操作响应时间 < 300ms
- **数据存储**: 支持存储至少1000条纪念日数据
### 5.2 可用性需求
- **界面设计**: 简洁美观,符合主流UI设计规范
- **操作流程**: 核心功能不超过3步完成
- **错误提示**: 友好的错误提示和处理
### 5.3 可靠性需求
- **数据安全**: 本地数据加密存储
- **数据备份**: 支持导出备份,防止数据丢失
- **异常处理**: 完善的异常捕获和处理机制
### 5.4 兼容性需求
- **系统版本**: 支持微信小程序最低版本要求
- **机型适配**: 适配主流手机屏幕尺寸
---
## 6. 交互流程
### 6.1 核心流程图
#### 流程1: 添加新人员及纪念日
```
首页 → 点击"+"按钮 → 选择"添加人员" → 填写人员信息 → 保存 → 自动进入添加纪念日页面 → 选择纪念日类型 → 选择日期(公历/农历) → 设置提醒 → 保存 → 返回列表
```
#### 流程2: 查看即将到来的纪念日
```
首页 → 查看日历视图 / 列表视图 → 点击纪念日卡片 → 查看详情 → 可编辑/删除
```
#### 流程3: 接收提醒
```
系统定时检查 → 发现即将到来的纪念日 → 发送推送通知 → 用户点击通知 → 跳转到详情页 → 查看信息
```
---
### 6.2 页面结构
```
├── 首页(人员列表)
│ ├── 顶部搜索栏
│ ├── 筛选按钮(按类型/时间)
│ ├── 人员卡片列表
│ └── 底部"+"添加按钮
├── 人员详情页
│ ├── 人员基本信息
│ ├── 纪念日列表
│ └── 操作按钮(编辑/删除)
├── 添加/编辑人员页
│ ├── 姓名输入
│ ├── 昵称输入
│ ├── 头像选择
│ └── 备注输入
├── 添加/编辑纪念日页
│ ├── 关联人员选择
│ ├── 纪念日类型选择
│ ├── 日期选择器(公历/农历切换)
│ ├── 重要程度选择
│ ├── 提醒开关
│ └── 提前天数设置
├── 日历视图页
│ ├── 日历头部
│ ├── 日历网格
│ ├── 当日纪念日列表
│ └── 筛选选项
└── 设置页
├── 提醒设置
├── 数据备份
├── 关于
└── 使用帮助
```
---
## 7. 开发计划
### 7.1 第一阶段(MVP - 2周)
- [x] 项目初始化
- [ ] 基础UI搭建
- [ ] 人员信息管理(增删改查)
- [ ] 纪念日管理(增删改查)
- [ ] 农历日期计算
- [ ] 本地数据存储
- [ ] 基本的列表和详情展示
### 7.2 第二阶段(核心功能 - 2周)
- [ ] 日历视图实现
- [ ] 提醒功能实现
- [ ] 数据筛选和搜索
- [ ] 导入导出功能
### 7.3 第三阶段(优化迭代 - 1周)
- [ ] UI美化
- [ ] 性能优化
- [ ] 用户体验优化
- [ ] 测试和Bug修复
---
## 8. 风险评估
### 8.1 技术风险
- **农历计算准确性**: 使用成熟的农历计算库
- **数据存储限制**: 小程序本地存储10MB上限
- **提醒功能实现**: 小程序后台限制
### 8.2 解决方案
- 采用成熟的农历计算库
- 定期提示用户导出数据备份
- 使用云开发或后端服务支持提醒功能
---
## 9. 附录
### 9.1 参考资源
- 微信小程序官方文档: https://developers.weixin.qq.com/miniprogram/dev/framework/
- 农历计算库: https://github.com/lunar-js/lunar-calendar
### 9.2 成功指标
- **用户留存率**: 30日留存 > 40%
- **活跃度**: 每日打开率 > 50%
- **功能使用**: 80%用户成功添加至少5条纪念日
---
## 10. 总结
这是一款专注于用户核心需求、功能简洁实用的纪念日管理小程序。通过支持农历生日、灵活的提醒设置和简单的操作流程,为用户提供贴心的纪念日管理服务。
**核心亮点**:
✅ 支持农历生日(中国特色)
✅ 个性化提醒设置
✅ 多种纪念日类型
✅ 简洁美观的界面
✅ 无需服务器(轻量级)
---
**文档版本**: v1.0
**创建日期**: 2024年
**最后更新**: 2024年