My WeChat Mini Program Journey – Part 1: PRD for StudHubPro
一、项目背景
StudHubPro 是一款为学生自习室提供管理支持的小程序。该项目旨在为自习室运营方和学生提供便捷的签到、出勤记录等功能。通过小程序,学生可以快速打卡签到,查看自己的学习进度,而管理者则可以跟踪学生的出勤情况,提高自习室的运营效率。
二、目标用户
1. 学生/自习者:在自习室学习的学生群体,希望通过打卡记录学习时间,提高自律性。
2. 自习室管理者:自习室的运营人员,通过该小程序跟踪管理学生的出勤信息,优化运营。
三、核心功能
1. 用户注册与登录
• 需求描述:学生可以通过微信授权进行快速注册和登录,绑定个人信息。
• 功能要求:
• 微信授权登录,获取用户基本信息。
• 用户首次登录需填写个人信息(姓名、联系方式等)。
2. 学生签到功能
• 需求描述:学生进入自习室后,可以通过小程序完成签到,记录每日到场时间和学习时长。
• 功能要求:
• 签到页面显示当前时间和签到按钮。
• 点击签到后,记录签到时间并上传至服务器。
• 签到成功后,显示提示信息。
• 可设置每日签到提醒,确保学生不遗漏签到。
3. 学生出勤记录与分析
• 需求描述:学生可以在小程序中查看个人的签到历史和学习时长,管理自己的学习进度。
• 功能要求:
• 显示学生的签到历史记录(日期、签到时间、学习时长等)。
• 生成出勤率和学习时长的统计分析图表。
• 可选择日期范围,查看指定时间段的出勤记录。
4. 自习室管理功能
• 需求描述:自习室的管理者可以通过后台查看学生的签到记录,了解出勤情况并进行管理。
• 功能要求:
• 管理者可以查看所有学生的签到记录。
• 按日期或学生姓名筛选签到数据。
• 支持导出数据以便进行进一步分析。
5. 通知与提醒功能 (第二期)
• 需求描述:提供签到提醒和管理通知功能,确保学生不会错过签到,自习室运营方也能及时通知变动。
• 功能要求:
• 学生每日签到提醒通知。
• 管理者可以发送通知(如自习室变动或活动通知)给所有学生。
四、技术需求
1. 前端技术栈
JS-Skyline:微信小程序的开发模板,使用 JS-Skyline 快速搭建小程序前端。
WXML / WXSS:使用微信小程序的标准技术栈构建页面结构和样式。
微信小程序 API:使用微信提供的 API 处理用户登录、数据交互、通知等功能。
2. 后端技术栈
Flask:使用 Flask 作为后端框架,提供 RESTful API 供前端调用。
MySQL:使用 MySQL 数据库存储学生信息、签到记录和统计数据。
Nginx + Gunicorn:使用 Nginx 和 Gunicorn 部署后端服务,保证稳定的 API 服务。
SSL 证书:确保小程序使用 HTTPS 安全通信。
五、数据设计
1. 数据表
学生信息表(students):
- student_id:学生 ID (使用UUID形式,注册后自动生成)
- name:学生姓名
- phone_number:学生联系方式
- signup_date:注册日期
签到记录表(attendance_records):
- record_id:签到记录 ID
- student_id:学生 ID
- signin_time:签到时间
- signout_time:签退时间(可选)
- duration:学习时长
2. 数据接口
HTTP Method /Path | 描述 |
---|---|
POST /register | 注册学生信息。 |
POST /signin | 记录学生签到时间。 |
GET /attendance_records | 获取学生的签到历史记录。 |
GET /statistics | 获取学生的出勤率和学习时长统计数据。 |
POST /notify | 管理者发送通知。(二期) |
六、用户界面设计
1. 签到页面
功能:学生进入自习室后,点击签到按钮进行打卡。
界面布局:显示当前时间、签到按钮、签到成功后的提示信息。
2. 出勤记录页面
功能:显示学生的签到历史和学习时长,图表化显示出勤情况。
界面布局:列出每日签到记录,并提供数据分析图表(柱状图或折线图)。
3. 管理后台(可选、二期)
功能:管理者可以通过后台查看所有学生的签到记录,并发送通知。
界面布局:筛选条件、签到记录列表、导出数据按钮。
七、风险与解决方案
数据安全:确保 HTTPS 加密传输,使用强密码保护数据库访问。
接口安全:加入签名验证或 Token 认证
负载问题:在后期自习室用户数量增加时,可以通过服务器扩展和数据库优化应对高并发访问。
用户隐私保护:严格遵守微信小程序的数据隐私规范,确保用户数据安全。