Initial Commit

This commit is contained in:
yuming
2025-10-26 19:29:30 +08:00
commit 6747ade9c4
33 changed files with 4387 additions and 0 deletions
+415
View File
@@ -0,0 +1,415 @@
# 生日提醒小程序产品需求文档 (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年