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 认证

负载问题:在后期自习室用户数量增加时,可以通过服务器扩展和数据库优化应对高并发访问。

用户隐私保护:严格遵守微信小程序的数据隐私规范,确保用户数据安全。