소스 검색

【feat】【v3】
1.完善技术文档:打卡规则、结算规则

ChenYL 11 달 전
부모
커밋
71bbd875db
1개의 변경된 파일155개의 추가작업 그리고 83개의 파일을 삭제
  1. 155 83
      doc/技术文档.md

+ 155 - 83
doc/技术文档.md

@@ -22,7 +22,11 @@ ui设计工具:即时设计
 
 
 
-#### 打卡
+#### 打卡规则
+
+
+
+##### 单任务
 
 * 打卡类型:计时、计数、单次打卡(计数的特例,只需计一次数)
 * 单位:次数、分钟
@@ -36,16 +40,13 @@ ui设计工具:即时设计
 
 
 
-#### 获取积分奖励的方式
-
-1. 单个任务**当天**完成打卡则给予奖励
-2. 单个任务**法定节假日(含周末)**双倍奖励
-3. 单个任务全勤双倍奖励,即在**一个周期内**打卡完成数在容错范围内则给予奖励
-4. 单个任务连续完成打卡则给予额外奖励,按照**连续打卡**完成天数**超过N天**k开始进行计算
-5. 多个任务完成打卡则给予额外奖励,按照**当天打卡**完成数**超过固定值**进行计算
-6. 多个任务连续完成打卡则给予奖励,按照**连续打卡**完成数**超过N天**开始进行计算
-
+##### 多任务
 
+* 打卡类型:任务完成数
+* 单位:任务数
+* 比较规则:大于等于
+* 比较的目标:用于判断是否完成打卡
+* 重复频率:每天
 
 
 
@@ -53,36 +54,47 @@ ui设计工具:即时设计
 
 
 
-注:在连续完成的时候,需要关注的是完成的天数,其它不用理会
+| 任务类型 | 时间范围 | 启用状态(启用/禁用/可选) | 计量单位         | 前置判断 | 基本奖励 | 额外奖励 | 全勤奖励 | 节假日奖励 |
+| -------- | -------- | -------------------------- | ---------------- | -------- | -------- | -------- | -------- | ---------- |
+| 单任务   | 当天     | 启用                       | 单次、计数、计时 | ✅        | ✅        | ✅        | ✅        | ✅          |
+| 单任务   | 连续     | 可选                       | 天数             | ✅        |          | ✅        |          |            |
+| 多任务   | 当天     | 可选                       | 任务数           | ✅        | ✅        | ✅        |          |            |
+| 多任务   | 连续     | 可选                       | 天数             | ✅        |          | ✅        |          |            |
 
 
 
-##### 积分计算公式
+##### 注意事项
 
-单个任务积分=基本积分+(可选)额外积分+(可选)连续完成额外积分+法定节假日(含周末)双倍奖励+全勤双倍奖励
+1. 在连续完成的时候,需要关注的是**连续完成的天数**,其它不用理会
+2. **多任务**的当天或连续的**启用状态是共用的**,即一个开启则整个开启
+3. 单任务(当天、连续)的**前置判断是共用**
+4. 多任务(当天、连续)的**前置判断是共用**
+5. 法定节假日包含周末
 
-多个任务积分=多任务额外积分+连续完成额外积分
 
-总积分=单个任务积分+(可选)多个任务积分
 
+##### 积分计算公式
 
+单个任务积分=基本积分+额外积分+法定节假日(含周末)双倍奖励+全勤双倍奖励+连续完成额外积分
 
-说明:
+多个任务积分=基本积分+额外积分+连续完成额外积分
 
-* 基本积分:满足打卡比较条件就能获得基本积分
+总积分=单个任务积分+多个任务积分
 
-* 额外积分:根据新的比较单位(X次,Y分钟,完成数、完成率)进行判断,完成一次就获得一次额外积分
-  * 固定积分:额外打一次卡就给一次固定积分,本质是动态积分的特例
 
-    例子:打卡10次,前5次是基本的,后5次是额外的,积分区间:基本积分5;x>5,奖励积分10;其中的x是打卡次数。共计积分:5+5x5=30积分
 
-  * 动态积分:根据不同的区间,给对应的积分
+##### 获取积分奖励的方式
 
-    例子:打卡10次,前5次是基本的,后5次是额外的,积分区间:基本积分5;6≤x≤8,奖励积分10;9≤x≤10,奖励积分15;其中的x是打卡次数。共计积分:5+10x3+15x2=65积分
+1. 单个任务**当天**完成打卡则给予奖励
+2. 单个任务**法定节假日(含周末)**双倍奖励
+3. 单个任务全勤双倍奖励,即在**一个周期内**打卡完成数在容错范围内则给予奖励
+4. 单个任务连续完成打卡则给予额外奖励,按照**区间规则**进行计算
+5. 多个任务完成打卡则给予奖励
+6. 多个任务连续完成打卡则给予奖励,按照**区间规则**进行计算
 
 
 
-##### (可选)前置判断:
+##### 前置判断
 
 1. 开始前有连续N天,不结算积分,不计算连续打卡天数
 
@@ -96,6 +108,36 @@ ui设计工具:即时设计
 
 
 
+##### 额外奖励计算
+
+* 计算方式:固定、区间
+
+* 计算前提:要把其它计量单位按规则转换为**具体数值**才能进行计算
+
+  * 计量单位:分钟,设15分钟为基本数值,额外时长60分钟,规则:额外时长➗基本数值=具体数值,即具体数值为4
+
+* 计算规则(假设已有具体数值)
+
+  * 固定计算:具体数值✖️固定奖励=额外积分
+
+    例如:3✖️4=12
+
+    具体数值:3,固定奖励:4,最后得出额外积分:12
+
+  * 区间计算:按照区间范围,**大于等于**区间起始值,则有区间内次数✖️区间奖励=区间总奖励,最后把区间总奖励汇总即可获得总奖励数
+
+    例如:具体数值:12,根据区间规则计算得最后总奖励数:50。
+
+    | 区间起始值 | 区间奖励 | 是否满足区间条件<br />(需大于等于区间起始值) | 区间内次数 | 区间总奖励   |
+    | ---------- | -------- | ---------------------------------------------- | ---------- | ------------ |
+    | 1          | 1        | 是                                             | 5          | 1✖️5=5        |
+    | 6          | 5        | 是                                             | 5          | 5✖️5=25       |
+    | 11         | 10       | 是                                             | 2          | 2✖️10=20      |
+    | 15         | 15       | 否                                             |            |              |
+    |            |          |                                                |            | **合计:50** |
+
+
+
 #### 积分账户
 
 * 基本户:用于结算积分转入,或者兑换奖励
@@ -510,6 +552,7 @@ ui设计工具:即时设计
 | interrupted_day                     | int          | 打卡中断天数(单位:天)                                     |          |
 | penalty_day                         | int          | 惩罚天数(单位:天)                                         |          |
 | auto_status                         | varchar(10)  | 是否启用自动打卡(ENABLED-启用,DISABLED-关闭)                |          |
+| task_points_status                  | varchar(10)  | 是否启用任务积分计算(ENABLED-启用,DISABLED-关闭)            |          |
 | created_by                          | bigint       | 创建人                                                       | 普通索引 |
 | creation_time                       | timestamp    | 创建时间                                                     |          |
 | last_updated_by                     | bigint       | 最后更新人                                                   |          |
@@ -546,29 +589,30 @@ ui设计工具:即时设计
 
 表名:punch_in_multi_task
 
-| 字段                 | 类型         | 描述                                               | 索引     |
-| -------------------- | ------------ | -------------------------------------------------- | -------- |
-| id                   | bigint       | 主键                                               | 主键索引 |
-| user_id              | bigint       | 用户ID                                             | 普通索引 |
-| multi_task_unique_id | bigint       | 打卡多任务唯一ID                                   | 普通索引 |
-| multi_task_status    | varchar(10)  | 任务状态(活跃-ACTIVE,归档-ARCHIVE)                |          |
-| multi_task_version   | int          | 任务修改版本                                       |          |
-| punch_in_method      | varchar(10)  | 打卡方式(次数-COUNT,比率-RATE)                  |          |
-| punch_in_done_count  | int          | 打卡完成次数                                       |          |
-| punch_in_done_rate   | decimal(5,2) | 打卡完成率                                         |          |
-| points               | int          | 奖励的积分(基本)                                   |          |
-| grace_status         | varchar(10)  | 是否启用宽限期(ENABLED-启用,DISABLED-关闭)        |          |
-| grace_day            | int          | 宽限期(单位:天)                                 |          |
-| interrupted_day      | int          | 打卡中断天数(单位:天)                           |          |
-| penalty_day          | int          | 惩罚天数(单位:天)                               |          |
-| extra_method         | varchar(10)  | 额外奖励方式(无-NONE,固定-FIXED,区间-INTERVAL) |          |
-| extra_points         | int          | 奖励的积分(额外)                                 |          |
-| created_by           | bigint       | 创建人                                             |          |
-| creation_time        | timestamp    | 创建时间                                           |          |
-| last_updated_by      | bigint       | 最后更新人                                         |          |
-| last_update_time     | timestamp    | 最后更新时间                                       |          |
-| version              | bigint       | 版本号                                             |          |
-| delete_flag          | tinyint      | 逻辑删除标志(0-未删除,1-已删除)                 |          |
+| 字段                 | 类型         | 描述                                                | 索引     |
+| -------------------- | ------------ | --------------------------------------------------- | -------- |
+| id                   | bigint       | 主键                                                | 主键索引 |
+| user_id              | bigint       | 用户ID                                              | 普通索引 |
+| multi_task_unique_id | bigint       | 打卡多任务唯一ID                                    | 普通索引 |
+| multi_task_status    | varchar(10)  | 任务状态(活跃-ACTIVE,归档-ARCHIVE)                 |          |
+| multi_task_version   | int          | 任务修改版本                                        |          |
+| task_points_status   | varchar(10)  | 是否启用多任务积分计算(ENABLED-启用,DISABLED-关闭) |          |
+| punch_in_method      | varchar(10)  | 打卡方式(次数-COUNT,比率-RATE)                   |          |
+| punch_in_done_count  | int          | 打卡完成次数                                        |          |
+| punch_in_done_rate   | decimal(5,2) | 打卡完成率                                          |          |
+| points               | int          | 奖励的积分(基本)                                    |          |
+| grace_status         | varchar(10)  | 是否启用宽限期(ENABLED-启用,DISABLED-关闭)         |          |
+| grace_day            | int          | 宽限期(单位:天)                                  |          |
+| interrupted_day      | int          | 打卡中断天数(单位:天)                            |          |
+| penalty_day          | int          | 惩罚天数(单位:天)                                |          |
+| extra_method         | varchar(10)  | 额外奖励方式(无-NONE,固定-FIXED,区间-INTERVAL)  |          |
+| extra_points         | int          | 奖励的积分(额外)                                  |          |
+| created_by           | bigint       | 创建人                                              |          |
+| creation_time        | timestamp    | 创建时间                                            |          |
+| last_updated_by      | bigint       | 最后更新人                                          |          |
+| last_update_time     | timestamp    | 最后更新时间                                        |          |
+| version              | bigint       | 版本号                                              |          |
+| delete_flag          | tinyint      | 逻辑删除标志(0-未删除,1-已删除)                  |          |
 
 
 
@@ -618,27 +662,32 @@ ui设计工具:即时设计
 
 表名:punch_in_task_history
 
-| 字段                    | 类型        | 描述                                                         | 索引     |
-| ----------------------- | ----------- | ------------------------------------------------------------ | -------- |
-| id                      | bigint      | 主键                                                         | 主键索引 |
-| user_id                 | bigint      | 用户ID                                                       | 普通索引 |
-| punch_in_task_unique_id | bigint      | 打卡任务唯一ID                                               | 普通索引 |
-| punch_in_date           | varchar(10) | 打卡日期                                                     | 普通索引 |
-| punch_in_status         | varchar(10) | 打卡状态(DONE-完成,UNDONE-未完成)                           |          |
-| count_track             | int         | 次数记录                                                     |          |
-| time_track              | time        | 时间记录                                                     |          |
-| consecutive_status      | varchar(20) | 连续打卡状态(正常打卡-NORMAL、中断--INTERRUPTED)             |          |
-| consecutive_day         | int         | 连续天数,第一天开始就等于1                                  |          |
-| settle_task_history_id  | bigint      | 结算任务执行记录ID                                           | 普通索引 |
-| settle_status           | varchar(20) | 结算状态(未结算-UNSETTLED,宽限期跳过J-GRACE_SKIP,惩罚跳过-PENALTY_SKIP,已结算-SETTLED) |          |
-| settle_punch_in_task_id | bigint      | 结算时的打卡任务ID                                           |          |
-| settle_points           | int         | 结算奖励积分                                                 |          |
-| created_by              | bigint      | 创建人                                                       |          |
-| creation_time           | timestamp   | 创建时间                                                     | 普通索引 |
-| last_updated_by         | bigint      | 最后更新人                                                   |          |
-| last_update_time        | timestamp   | 最后更新时间                                                 |          |
-| version                 | bigint      | 版本号                                                       |          |
-| delete_flag             | tinyint     | 逻辑删除标志(0-未删除,1-已删除)                           |          |
+| 字段                          | 类型        | 描述                                                         | 索引     |
+| ----------------------------- | ----------- | ------------------------------------------------------------ | -------- |
+| id                            | bigint      | 主键                                                         | 主键索引 |
+| user_id                       | bigint      | 用户ID                                                       | 普通索引 |
+| punch_in_task_unique_id       | bigint      | 打卡任务唯一ID                                               | 普通索引 |
+| punch_in_date                 | varchar(10) | 打卡日期                                                     | 普通索引 |
+| punch_in_status               | varchar(10) | 打卡状态(DONE-完成,UNDONE-未完成)                           |          |
+| count_track                   | int         | 次数记录                                                     |          |
+| time_track                    | time        | 时间记录                                                     |          |
+| consecutive_status            | varchar(20) | 连续打卡状态(正常打卡-NORMAL、中断--INTERRUPTED)             |          |
+| consecutive_day               | int         | 连续天数,第一天开始就等于1                                  |          |
+| settle_task_history_id        | bigint      | 结算任务执行记录ID                                           | 普通索引 |
+| settle_status                 | varchar(20) | 结算状态(未结算-UNSETTLED,宽限期跳过J-GRACE_SKIP,惩罚跳过-PENALTY_SKIP,已结算-SETTLED) |          |
+| settle_punch_in_task_id       | bigint      | 结算时的打卡任务ID                                           |          |
+| settle_points                 | int         | 结算奖励积分                                                 |          |
+| settle_basic_points           | int         |                                                              |          |
+| settle_extra_points           |             |                                                              |          |
+| settle_full_attendance_points |             |                                                              |          |
+| settle_holiday_points         |             |                                                              |          |
+| settle_task_points            |             |                                                              |          |
+| created_by                    | bigint      | 创建人                                                       |          |
+| creation_time                 | timestamp   | 创建时间                                                     | 普通索引 |
+| last_updated_by               | bigint      | 最后更新人                                                   |          |
+| last_update_time              | timestamp   | 最后更新时间                                                 |          |
+| version                       | bigint      | 版本号                                                       |          |
+| delete_flag                   | tinyint     | 逻辑删除标志(0-未删除,1-已删除)                           |          |
 
 
 
@@ -677,22 +726,22 @@ ui设计工具:即时设计
 
 作用:punch_in_multi_task_unique_id和punch_in_task_unique_id字段不能同时出现,是一张公用表,punch_in_multi_task_unique_id出现时是多任务的打卡状态,punch_in_task_unique_id出现时是单任务的打卡状态
 
-| 字段                          | 类型        | 描述                                             | 索引     |
-| ----------------------------- | ----------- | ------------------------------------------------ | -------- |
-| id                            | bigint      | 主键                                             | 主键索引 |
-| user_id                       | bigint      | 用户ID                                           | 普通索引 |
-| punch_in_multi_task_unique_id | bigint      | 打卡多任务唯一ID                                 | 普通索引 |
-| punch_in_task_unique_id       | bigint      | 打卡任务唯一ID                                   | 普通索引 |
-| consecutive_status            | varchar(20) | 连续打卡状态(正常打卡-NORMAL、中断--INTERRUPTED) |          |
-| consecutive_day               | int         | 连续天数,第一天开始就等于1                      |          |
-| start_date                    | date        | 开始日期                                         |          |
-| end_date                      | date        | 结束日期                                         |          |
-| created_by                    | bigint      | 创建人                                           |          |
-| creation_time                 | timestamp   | 创建时间                                         |          |
-| last_updated_by               | bigint      | 最后更新人                                       |          |
-| last_update_time              | timestamp   | 最后更新时间                                     |          |
-| version                       | bigint      | 版本号                                           |          |
-| delete_flag                   | tinyint     | 逻辑删除标志(0-未删除,1-已删除)               |          |
+| 字段                          | 类型        | 描述                                                  | 索引     |
+| ----------------------------- | ----------- | ----------------------------------------------------- | -------- |
+| id                            | bigint      | 主键                                                  | 主键索引 |
+| user_id                       | bigint      | 用户ID                                                | 普通索引 |
+| punch_in_multi_task_unique_id | bigint      | 打卡多任务唯一ID                                      | 普通索引 |
+| punch_in_task_unique_id       | bigint      | 打卡任务唯一ID                                        | 普通索引 |
+| consecutive_status            | varchar(20) | 连续打卡状态(连续打卡-CONSECUTIVE、中断--INTERRUPTED) |          |
+| consecutive_day               | int         | 连续天数,第一天开始就等于1                           |          |
+| start_date                    | date        | 开始日期                                              |          |
+| end_date                      | date        | 结束日期                                              |          |
+| created_by                    | bigint      | 创建人                                                |          |
+| creation_time                 | timestamp   | 创建时间                                              |          |
+| last_updated_by               | bigint      | 最后更新人                                            |          |
+| last_update_time              | timestamp   | 最后更新时间                                          |          |
+| version                       | bigint      | 版本号                                                |          |
+| delete_flag                   | tinyint     | 逻辑删除标志(0-未删除,1-已删除)                    |          |
 
 
 
@@ -937,6 +986,29 @@ ui设计工具:即时设计
 
 
 
+### 打卡任务周数据统计
+
+表名:punch_in_stats_week
+
+| 字段                 | 类型         | 描述                               | 索引     |
+| -------------------- | ------------ | ---------------------------------- | -------- |
+| id                   | bigint       | 主键                               | 主键索引 |
+| user_id              | bigint       | 用户id                             | 普通索引 |
+| task_unique_id       | bigint       | 任务唯一ID                         | 普通索引 |
+| stats_time           | char(7)      | 统计时间(格式:yyyy-周数)        | 普通索引 |
+| punch_in_total_count | int          | 本周需打卡数                       |          |
+| punch_in_count       | int          | 本周已打卡数                       |          |
+| punch_in_done_count  | int          | 本周完成打卡数                     |          |
+| punch_in_rate        | decimal(5,2) | 本周打卡率                         |          |
+| punch_in_done_rate   | decimal(5,2) | 本周打卡完成率                     |          |
+| points               | int          | 本周获取积分数                     |          |
+| created_by           | bigint       | 创建人                             |          |
+| creation_time        | timestamp    | 创建时间                           |          |
+| last_updated_by      | bigint       | 最后更新人                         |          |
+| last_update_time     | timestamp    | 最后更新时间                       |          |
+| version              | bigint       | 版本号                             |          |
+| delete_flag          | tinyint      | 逻辑删除标志(0-未删除,1-已删除) |          |
+
 
 
 ### 打卡任务月数据统计