# PunchHelper
**Repository Path**: pineapplecat/punch-helper
## Basic Information
- **Project Name**: PunchHelper
- **Description**: 打卡小助手APP
- **Primary Language**: Unknown
- **License**: Not specified
- **Default Branch**: master
- **Homepage**: None
- **GVP Project**: No
## Statistics
- **Stars**: 3
- **Forks**: 0
- **Created**: 2025-04-07
- **Last Updated**: 2025-04-24
## Categories & Tags
**Categories**: Uncategorized
**Tags**: None
## README
# **打卡小助手 Android-v2.0 Release Candidate**
基于 HMS Core 推送服务和华为云数据库服务,实现向用户推送消息通知并在客户端一键设置系统闹钟,提醒用户打卡
---
## 功能性需求(Functional Requirements)
### FR-1 客户端基础能力
| ID | 需求描述 | 验收标准 |
| ------ | ------------------------------------------------------------ | -------------------------------------------------------- |
| FR-1.1 | 系统在设备熄屏/亮屏等状态变化时,【华为设备】通过HMS Core推送服务触发打卡通知,【非华为设备】通过华为云数据库变更触发本地通知 | 【分设备类型测试各10次状态切换,对应推送触发成功率≥99%】 |
| FR-1.2 | 应用基础属性需满足:
• 应用图标为自定义Logo
• 显示名称为"打卡助手"
• 包名固定为`com.zjhw.punchhelper` | 通过APK反编译验证属性一致性 |
| FR-1.3 | 在网络可用时,提供"获取Token"按钮:
• 【华为设备】通过HMS Core获取推送Token
• 【非华为设备】生成设备唯一标识并注册到华为云数据库 | 按钮点击后3秒内显示请求状态(成功/失败) |
| FR-1.4 | 在网络可用时,提供"测试Push"按钮:
• 【华为设备】使用Push Kit发送测试通知
• 【非华为设备】触发本地数据库变更事件 | 测试通知需在5秒内到达且内容符合预设模板 |
| FR-1.5 | 在应用界面中明文展示当前设备的【华为推送Token或设备唯一标识】 | 标识显示区域需支持横向滚动查看完整内容 |
| FR-1.6 | 提供"复制标识"按钮,点击后将【Token/设备ID】写入系统剪贴板 | 剪贴板内容需与界面显示标识完全一致 |
### FR-2 服务管理能力
| ID | 需求描述 | 验收标准 |
| ------ | ------------------------------------------------------------ | ----------------------------------- |
| FR-2.1 | 支持解析管理员上传的Excel文件,提取字段:
• 时间周期(开始日期、结束日期)
• 人员身份(讲师/班主任等)
• 【设备类型(华为/非华为)】 | 解析含100条记录的Excel文件耗时≤10秒 |
| FR-2.2 | 根据人员身份自动映射对应的【华为设备Token或非华为设备数据库ID】 | 身份-设备映射准确率100% |
| FR-2.3 | 通过【双通道推送机制】:
• 华为设备使用Push Kit API批量推送
• 非华为设备触发云数据库定时任务 | 每1000条记录的推送完成时间≤45秒 |
| FR-2.4 | 支持基于时间周期创建循环打卡任务(如每周一8:00推送),【华为设备采用系统级推送,非华为设备采用应用内本地通知】 | 任务调度误差不超过±1分钟 |
---
## 非功能性需求(Non-Functional Requirements)
| 类型 | 需求描述 | 测试方法 |
| ------ | ------------------------------------------------------------ | -------------------------------- |
| 性能 | Excel解析时间≤10秒(1000行数据以内) | 使用性能分析工具监控解析耗时 |
| 可靠性 | 【双通道推送】整体到达率≥98%(网络正常时) | 分设备类型统计1000次推送到达情况 |
| 安全性 | 【华为通道】采用HTTPS加密,【数据库通道】采用Token签名验证 | 通过安全审计工具验证双通道机制 |
| 兼容性 | 支持:
• HMS Core 5.0+
• 华为云数据库最新API
• 【Android 8.0+系统】 | 使用不同品牌设备进行交叉验证 |
---
## 新增系统架构说明
### 设备识别逻辑
```mermaid
graph TD
A[设备启动] --> B{华为设备?}
B -->|是| C[集成HMS Core SDK]
B -->|否| D[生成设备唯一ID]
C --> E[获取Push Token]
D --> F[注册到云数据库]
E & F --> G[服务端设备信息同步]
```
### 双通道推送流程
```mermaid
sequenceDiagram
管理员->>服务端: 上传排班表
服务端->>服务端: 解析设备类型
alt 华为设备
服务端->>HMS服务器: 批量推送请求
HMS服务器->>设备: 系统级推送
else 其他设备
服务端->>华为云数据库: 写入触发记录
华为云数据库->>设备: 数据变更通知
设备->>设备: 触发本地通知
end
```
---
## 历史版本
- v1.0-Release:完成系统主界面,实现获取、显示、复制HMS token的基础功能,有些手机可能无法正常收到推送
- v1.1-Beta:更换HMS Core为友盟推送API,优化了主页UI显示效果,增加手动添加闹钟页面,后续在此基础上进行开发
- v1.2-Alpha:添加统一设置闹钟功能,客户端可以自行向用户推送通知
- v1.3-Alpha:完善闹钟功能,可以调用系统闹钟进行统一添加
- v1.4-Beta:基本功能完成,实现通过JSON数据统一设置闹钟卡片功能,推送到主分支,后续在此基础上进行开发
- v1.5-Alpha:1、调整项目结构,采用MVP架构,将功能和界面从原MyActivity.kt文件中解耦;2、将加载JSON数据、本地保存时间、设置系统闹钟的函数使用coroutineScope协程处理;3、设置统一颜色风格,美化UI界面;4、对所有分支进行合并,客户端获取HMS token,服务端使用云数据库对客户端发送JSON数据,客户端解析后实现一键设置闹钟
- v2.0-Release:优化设置闹钟冲突的bug
- v2.1-Alpha:修改闹钟逻辑为每天都响
- v2.2-Alpha:优化了添加闹钟的逻辑
- v2.3-Beta:进行公测,修改了一些文本