# 生日提醒小程序产品需求文档 (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 - 开发成本低 - 支持推送通知 - 跨平台兼容 - **备选**: 也可以考虑开发移动App(React 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年