---
# System prepended metadata

title: 健促指標總覽

---

# 健促指標總覽

---
API 清單

* [TOC]
---

## 健促指標分析

```url=
POST /health-promote/indicator-analyse
```


Request
  欄位 | 型態  | 必填 | 預設 | 說明  
---|---|---|---|---
 year | int | Y |  | 年度 

```javascript
{
    "year": 2021
}
```
Response
  欄位 | 型態   | 說明  
 -----| -----|-------- 
 abnormal | int | 檢驗異常總人數 
 total  | json | 員工總人數
  -male | int | 男性員工人數
  -female | int | 女性員工人數
 list | json array | 指標項目array
  -itemName | string | 項目名稱, BMI: BMI, BODY_WEIGHT: 體重, STEPS: 平均每日步行數 
  -gender | int | 性別, 1:男性, 2: 女性, 0: 全部
  -max | int | 最高
  -min | int | 最低
  -avg | int | 平均值
  -tooltip | string | 提示
  


```javascript
{
    "httpCode": 200,
    "result": {
        "data": {
            "abnormal": 5880,
            "total": {
                "male": 1000,
                "female": 2000
            },
            "list": [
                {
                    "id": "1552fc8b-055e-49d0-a7f8-8329389b8c84",
                    "itemName": "BMI",
                    "gender": 1,
                    "max": 30,
                    "min": 18,
                    "avg": 24,
                    "tooltip": "BMI\n30.1"
                }
            ]
        }
    }
}

```

## 健促指標趨勢

```url=
POST /health-promote/indicator-trend
```


Request
  欄位 | 型態  | 必填 | 預設 | 說明  
---|---|---|---|---
 year | int | Y |  | 年度 

```javascript
{
    "year": 2021
}
```
Response
  欄位 | 型態   | 說明  
 -----| -----|-------- 
 bodyWeight | json array | 體重月均值array
  -month | int | 月份, 1: 1月, etc. 
  -male | float | 男性月均值
  -female | float | 女性月均值
bmi | json array | BMI月均值array
  -month | int | 月份, 1: 1月, etc. 
  -male | float | 男性月均值
  -female | float | 女性月均值
  


```javascript
{
    "httpCode": 200,
    "result": {
        "data": {
            "bodyWeight": [
                {
                    "month": 1,
                    "male": 75,
                    "female": 60.5
                }, ...
            ], 
            "bmi": [
                {
                    "month": 1,
                    "male": 28.6,
                    "female": 28.4
                }, ...
            ]
        }
    }
}

```

## 體重變化分析

```url=
POST /health-promote/weight-analyse
```


Request
  欄位 | 型態  | 必填 | 預設 | 說明  
---|---|---|---|---
 startDate | timestamp | Y | | 開始日期
 endDate | timestamp | Y | | 結束日期
 topNum | int | Y | 5 | top數目

```javascript
{
    "startDate": 1614528000000,
    "endDate": 1614528000000,
    "topNum" : 5
}
```
Response
  欄位 | 型態   | 說明  
 -----| -----|-------- 
 summary | json | 體重變化
  -male | float | 男性體重變化值
  -female | float | 女性體重變化值
list | json array | 體重變化 array
  -no | int | top number 
  -name | string | 姓名
  -gender | int | 1: 男性, 2: 女性
  -avg | float | 平均體重
  -delta | float | 體重變化
  


```javascript
{
    "httpCode": 200,
    "result": {
        "data": {
            "summary": {
                "male": -1.5,
                "female": 0.8
            }, 
            "list": [
                {
                    "no": 1,
                    "name": "林大明",
                    "gender": 1,
                    "avg": 95.5,
                    "delta": -2.4
                }, ...
            ]
        }
    }
}

```

## 步行數分析

```url=
POST /health-promote/step-analyse
```


Request
  欄位 | 型態  | 必填 | 預設 | 說明  
---|---|---|---|---
 startDate | timestamp | Y | | 開始日期
 endDate | timestamp | Y | | 結束日期
 topNum | int | Y | 5 | top數目

```javascript
{
    "startDate": 1614528000000,
    "endDate": 1614528000000,
    "topNum" : 5
}
```
Response
  欄位 | 型態   | 說明  
 -----| -----|-------- 
 summary | json | 平圴每日步行數
  -avg | int | 平圴每日步行數
list | json array | 平圴每日步行數 array
  -no | int | top number 
  -name | string | 姓名
  -gender | int | 1: 男性, 2: 女性
  -avg | int | 平圴每日步行數
  


```javascript
{
    "httpCode": 200,
    "result": {
        "data": {
            "summary": {
                 "avg": 5500
            }, 
            "list": [
                {
                    "no": 1,
                    "name": "林大明",
                    "gender": 1,
                    "avg": 6500
                }, ...
            ]
        }
    }
}

```


## 匯出健促指標資料

```url=
POST /health-promote/indicator-export
```


Request
  欄位 | 型態  | 必填 | 預設 | 說明  
---|---|---|---|---
 year | int | Y |  | 年度, 只查詢指定年度, startDate, endDate欄位不填
 startDate | timestamp | Y | | 開始日期, 只查詢期間, year欄位不填
 endDate | timestamp | Y | | 結束日期, 只查詢期間, year欄位不填

```javascript
{
    "year": 2021
}
或是
{
    "startDate": 1614528000000,
    "endDate": 1614528000000
}
```
Response
  * httpCode 400 - [errorMsg](https://gitlab.devpack.cc/Wei_Chang/wicc-kmuh/wikis/Type-Definition#service_error) 
  
  | errorMsg |   desc   |
  | --------- |-------- |
  |NOT_EXIST|  資料檔不存在 |
  
  
  * httpCode 200 -Download file
  
  ```
  File name: 健促指標統計.xlsx
  ```
  
## 匯出健促指標資料-體重/體脂/肌肉量變化

```url=
POST /health-promote/body-hw-export
```


**Request**

|欄位|型態|必填|預設|說明|
|---|---|---|---|---|
|startDate | timestamp | Y | | 開始日期|
|endDate | timestamp | Y | | 結束日期|
|resource | string | N | | 量測來源。<br>*可帶:**MANUAL**(手動輸入),<br>**DEVICE**(配對裝置&AIO).<br>*不帶值:查所有來源。|

```javascript
{
    "startDate": 1622476800000,
    "endDate": 1623340799000,
    "resource":"DEVICE"
}
```
**Response**
  * httpCode 400 - [errorMsg](https://gitlab.devpack.cc/Wei_Chang/wicc-kmuh/wikis/Type-Definition#service_error) 
  
  | errorMsg |   desc   |
  | --------- |-------- |
  |NOT_EXIST|  資料檔不存在 |
  
  * httpCode 200 -Download file
  * [Excel spec.](https://wistron-my.sharepoint.com/:x:/r/personal/annie_ih_wang_wistron_com1/Documents/Microsoft%20Teams%20%E8%81%8A%E5%A4%A9%E6%AA%94%E6%A1%88/H365_v2_%E5%8C%AF%E5%87%BA_%E4%BC%81%E6%A5%AD%E7%AE%A1%E7%90%86%E5%93%A1_%E5%81%A5%E4%BF%83%E9%AB%94%E9%87%8D%E7%B5%B1%E8%A8%88_v2.xlsx?d=w2e267c9e2c054afba584c2b70d05c61c&csf=1&web=1&e=K36JDu)

  
  ```
  File name: 體重體脂肌肉量統計.xlsx
  ```



## 匯出平均步行數資料

```url=
POST /health-promote/step-export
```


Request
  欄位 | 型態  | 必填 | 預設 | 說明  
---|---|---|---|---
 startDate | timestamp | Y | | 開始日期
 endDate   | timestamp | Y | | 結束日期

```javascript
{
    "startDate": 1614528000000,
    "endDate": 1614528000000
}
```
Response
  * httpCode 400 - [errorMsg](https://gitlab.devpack.cc/Wei_Chang/wicc-kmuh/wikis/Type-Definition#service_error) 
  
  | errorMsg |   desc   |
  | --------- |-------- |
  |NOT_EXIST|  資料檔不存在 |
  
  
  * httpCode 200 -Download file
  
  ```
  File name: 平均每日步行數統計.xlsx
  ```
  
  ## 匯出平均&每日步行數資料

```url=
POST /health-promote/step-daily-export
```


Request
  欄位 | 型態  | 必填 | 預設 | 說明  
---|---|---|---|---
 startDate | timestamp | Y | | 開始日期
 endDate   | timestamp | Y | | 結束日期

```javascript
{
    "startDate": 1640966400000,
    "endDate": 1641830399000
}
```
Response
  * httpCode 400 - [errorMsg](https://gitlab.devpack.cc/Wei_Chang/wicc-kmuh/wikis/Type-Definition#service_error) 
  * 查詢日期超過60天 (查詢日期範圍限60天內)
  
  | errorMsg |   desc   |
  | --------- |-------- |
  |ARGUMENT_ERROR | 參數錯誤 |
  
  
  * httpCode 200 -Download file
  
  ```
  File name: 每日步行數統計.xlsx
  ```

## 步行活動排行榜
- 不作token驗證
```url=
POST /health-promote/step-rank
```

***Request Body***
| 欄位 | 型態 | 必填 | 預設 | 說明 |
|---|---|---|---|---|
| areaCode | string | Y | | 租戶id |
| householdMemberId | string | N | | householdMemberId |
| startDate | string | Y | | 起始日期 |
| endDate | string | Y | | 結束日期 |
| departmentRankingType | string | y | 10 | 組別活動排名類型. <BR>TOTAL: 總步數<BR>AVERAGE: 人均步數<BR>DISTANCE: 累積距離 |
| rank | int | YN | | 個人排名 |
| departmentRank | int | N | | 部門排名 |
| departmentName | string | N | | 部門名稱, 會影響個人排行.<BR>有值: 會列出該部門內人員排名<BR>無值: 會列出全租戶的人員排名 |

```javascript
{
    "areaCode": "5efcfd67-334e-45b3-bf49-7e52f5172891",
    "startDate": "2023-07-01",
    "endDate": "2023-07-31",
    "rank": 23,
    "departmentRank": 10,
    "departmentRankingType": "DISTANCE",
    "departmentName": "工業製造部"
}
```

***Response***
| 欄位 | 型態   | 說明 
| -----| -----|-------- 
| tenantId | string | 租戶id |
| tenantName | string | 租戶名稱 |
| startDate | timestamp | 開始日期 |
| endDate | timestamp | 結束日期 |
| rank | int | 個人排行榜統計名次 |
| departmentRank | int | 組別排行榜統計名次 |
| myRank | object | 該user的步行數資料 |
| list | array | 個人排行明細 |
| departmentList | array | 組別排行明細 |


***myRank***
| 欄位 | 型態   | 說明 
| -----| -----|-------- 
| rank | int | 排名 |
| name | string | 姓名 |
| employeeNo | string | 員工編號 |
| totalSteps | int | 累計步數 |
| totalDays | int | 累計天數 |
| rankLog | object | 排名歷史, 如果沒有歷史排名則本欄不存在 |

***rankLog***
| 欄位 | 型態   | 說明 
| -----| -----|-------- 
| rank | int | 歷史排名 |
| updateTime | timestamp | 排名更新時間 |

***list***
| 欄位 | 型態   | 說明 
| -----| -----|-------- 
| rank | int | 排名 |
| householdMemberId | string | 用戶ID |
| name | string | 用戶姓名 |
| employeeNo | string | 員工編號 |
| patDepartment | string | 組別名稱 |
| totalSteps | int | 總步數 |
| totalDistance | float | 總距離(KM)|
| totalDays | int | 運動天數 |
| carbonReduction | float | 減碳量 |
| caloriesBurned | float | 消耗卡路里(千卡) |

***departmentList***
| 欄位 | 型態   | 說明 
| -----| -----|-------- 
| rank | int | 排名 |
| patDepartment | string | 組別名稱 |
| totalSteps | int | 總步數 |
| totalDistance | float | 總距離(KM)|
| totalDays | int | 運動天數 |totalMembers
| totalMembers | int | 運動人數 |
| carbonReduction | float | 減碳量 |
| caloriesBurned | float | 消耗卡路里(千卡) |

- httpCode 200 - OK
    - 有查詢結果
```javascript=
// 有帶householdMemberId，"myRank"會有該hm的詳細資訊
{
    "httpCode": 200,
    "result": {
        "data": {
            "tenantId": "5efcfd67-334e-45b3-bf49-7e52f5172891",
            "tenantName": "企客第一家",
            "startDate": 1654012800000,
            "endDate": 1655740799000,
            "numOfRank": 50,
            "myRank": {
                "rank": 2,
                "householdMemberId": "64c2fe5c-9a4b-462f-9c9b-674130bddb11",
                "name": "王小明",
                "employeeNo": "B1031",
                "totalSteps": 560,
                "totalDays": 1,
                "rankLog": {
                    "rank": 1,
                    "updateTime": 1655740799870     
                }    
            },
            "list": [
                {
                    "rank": 1,
                    "householdMemberId": "de02dd6b-182d-45ff-926f-672f391834e3",
                    "name": "陳小小",
                    "employeeNo": "B9457",
                    "totalSteps": 700,
                    "totalDays": 1
                },
                ...
            ]
        }
    }
}

// 沒帶householdMemberId
{
    "httpCode": 200,
    "result": {
        "data": {
            "tenantId": "5efcfd67-334e-45b3-bf49-7e52f5172891",
            "tenantName": "企客第一家",
            "startDate": 1688140800000,
            "endDate": 1690819199999,
            "rank": 23,
            "departmentRank": 10,
            "departmentRankingType": "DISTANCE",
            "list": [
                {
                    "rank": 1,
                    "householdMemberId": "150b53f5-7126-4900-9fb0-87a08b45e06b",
                    "name": "AJ",
                    "employeeNo": "12345sjjsjsjsjdj",
                    "patDepartment": "YUU",
                    "totalSteps": 31889,
                    "totalDistance": 25.01213715,
                    "totalDays": 13,
                    "carbonReduction": 4.273126,
                    "caloriesBurned": 0.95667
                },
                {
                    "rank": 2,
                    "householdMemberId": "8a9e980a-c612-4f87-af07-a97a5f0fbed5",
                    "name": "BIO",
                    "employeeNo": "test123",
                    "patDepartment": "YUU",
                    "totalSteps": 13198,
                    "totalDistance": 9.4755041,
                    "totalDays": 6,
                    "carbonReduction": 1.768532,
                    "caloriesBurned": 0.39594
                },...
            ],
            "departmentList": [
                {
                    "rank": 1,
                    "patDepartment": "YUU",
                    "totalSteps": 45087,
                    "totalDistance": 34.48764125,
                    "totalDays": 13,
                    "totalMembers": 2,
                    "carbonReduction": 6.041658,
                    "caloriesBurned": 1.35261
                },
                {
                    "rank": 2,
                    "patDepartment": "Environment水環事業部",
                    "totalSteps": 0,
                    "totalDistance": 0,
                    "totalDays": 0,
                    "totalMembers": 0,
                    "carbonReduction": 0,
                    "caloriesBurned": 0
                },...
            ]
        }
    }
}
```
-
    - 無查詢結果
    
```javascript=
{
    "httpCode": 200,
    "result": {
        "data": {
            "tenantId": "WMT",
            "tenantName": "緯創醫學",
            "startDate": 1646064000000,
            "endDate": 1648655999000,
            "numOfRank": 5,
            "list": []
        }
    }
}
```

## 企業步行活動排行榜
- 不作token驗證
```url=
POST /health-promote/tenant/step-rank
```

***Request Body***
| 欄位 | 型態 | 必填 | 預設 | 說明 |
|---|---|---|---|---|
| id | string | Y | | 企業排名設定ID |
| householdMemberId | string | N | | householdMemberId, 有用戶ID會顯示該用戶屬於哪個企業 |
| startDate | string | Y | | 起始日期 |
| endDate | string | Y | | 結束日期 |

```javascript
{
    "id": "775c4825-6c13-40dd-8885-06f29c246c88",
    "startDate": "2023-03-01",
    "endDate": "2023-04-30"
}
```

***Response***
| 欄位 | 型態   | 說明 
| -----| -----|-------- 
| tenantStepRankId | string | 企業排名設定ID |
| title | string | 企業排名設定名稱 |
| startDate | timestamp | 開始日期 |
| endDate | timestamp | 結束日期 |


***list***
| 欄位 | 型態   | 說明 
| -----| -----|-------- 
| rank | int | 排名 |
| tenantName | string | 租戶名稱 |
| totalMembers | int | 有步數的會員數 |
| totalSteps | int | 累計步數 |
| totalDays | int | 累計天數 |
| carbonReduction | float | 減碳量 |
| caloriesBurned | float | 卡路里消耗量 |
| isMember | boolean | 查詢有用戶ID時該欄位代表是否為該租戶會員 |



- httpCode 200 - OK
    - 有查詢結果
```javascript=
// 有帶householdMemberId，"isMember"會顯示用戶是否屬於該租戶
{
    "httpCode": 200,
    "result": {
        "data": {
            "tenantStepRankId": "775c4825-6c13-40dd-8885-06f29c246c88",
            "title": "test12",
            "startDate": 1677600000000,
            "endDate": 1682870399999,
            "list": [
                {
                    "rank": 1,
                    "tenantName": "緯緯醫學",
                    "totalSteps": 680205,
                    "totalDays": 61,
                    "totalMembers": 3,
                    "carbonReduction": 91.14747,
                    "caloriesBurned": 20.40615,
                    "isMember": false
                },
                {
                    "rank": 2,
                    "tenantName": "創創醫學",
                    "totalSteps": 409862,
                    "totalDays": 61,
                    "totalMembers": 1,
                    "carbonReduction": 54.921508,
                    "caloriesBurned": 12.29586,
                    "isMember": false
                }
            ]
        }
    }
}

```

## 取得企業步行活動排行榜設定
- 不作token驗證
```url=
POST /health-promote/tenant/step-rank-setting/get
```

***Request Body***
| 欄位 | 型態 | 必填 | 預設 | 說明 |
|---|---|---|---|---|
| id | string | Y | | 企業排名設定ID |

```javascript
{
    "id": "775c4825-6c13-40dd-8885-06f29c246c88"
}
```

***Response***
| 欄位 | 型態   | 說明 
| -----| -----|-------- 
| tenantStepRankId | string | 企業排名設定ID |
| title | string | 企業排名設定名稱 |
| startDate | timestamp | 開始日期 |
| endDate | timestamp | 結束日期 |


***list***
| 欄位 | 型態   | 說明 
| -----| -----|-------- 
| id | string | 企業排名設定ID |
| title | string | 企業排名設定名稱 |
| rank | int | 排名 |
| startDate | long | 設定開始日期, rankingPeriodType: MONTH時不須設定開始日期 |
| endDate | long | 設定結束日期, 如果沒有設定則表示持續到當下日期 |
| rankingType | string | 排行類型. TOTAL: 總步數排行, AVERAGE: 人均步數排行  |
| rankingPeriodType | string | 排行區間類型.PERIOD: 期間 MONTH: 月份 |
| isEnable | boolean | 是否啟用 |
| tenantIds | string[] | 租戶ID清單 |



```javascript=
{
    "httpCode": 200,
    "result": {
        "data": {
            "id": "f4e01278-9908-4a22-84e3-f040912b56bc",
            "title": "test12",
            "startDate": 1680278400000,
            "createTime": 1688452677619,
            "updateTime": 1688452717052,
            "rank": 2,
            "rankingType": "TOTAL",
            "rankingPeriodType": "MONTH",
            "isEnable": true,
            "tenantIds": [
                "858b7fbb-3ba0-4d49-9882-c893a1ef07dc",
                "bf47bd9c-4364-4086-946d-9fd191d93dda"
            ]
        }
    }
}

```

## 查詢企業步行活動排行榜設定
- 平台管理員權限
```url=
POST /health-promote/tenant/step-rank-setting/list
```

***Request Body***
| 欄位 | 型態 | 必填 | 預設 | 說明 |
|---|---|---|---|---|
| keyword | string | N | | 活動title或是租戶名稱. 模糊查詢 |
| startDate | string | N | | 開始日期查詢 |
| endDate | string | N | | 結束日期查詢 |
| status | string | N | | 活動狀態查詢. ON: 啟用 OFF: 停用 |

```javascript
{
    "query": {
        "keyword": "排行",
        "startDate": "2023-03-22",
        "endDate": "2023-04-02",
        "status": "OFF"
    }
}
```

***Response***
| 欄位 | 型態   | 說明 
| -----| -----|-------- 
| id | string | 企業排名設定ID |
| title | string | 企業排名設定名稱 |
| url | string | 排名縮圖 |
| startDate | long | 設定開始日期, rankingPeriodType: MONTH時不須設定開始日期 |
| endDate | long | 設定結束日期, 如果沒有設定則表示持續到當下日期 |
| isEnable | boolean | 是否啟用 |
| tenantCount | integer | 參與租戶數量 |
| updateTime | timestamp | 最後更新時間 |



```javascript=
{
    "httpCode": 200,
    "result": {
        "data": [
            {
                "url": "http://10.31.104.23/swift/v1/AUTH_test/kmuh/tenant_health_promote/1a34713a-b31e-482e-85f8-bfdaca7b8a3e.png?temp_url_sig=f83979ddb4a2c3ae607ad4e0db3d92c37460eec9&temp_url_expires=1691998145",
                "total": 1,
                "id": "829669fd-1ad4-47da-a27a-44fdc7f071b8",
                "title": "test12",
                "startDate": 1677600000000,
                "createTime": 1689053991293,
                "updateTime": 1689054066562,
                "tenantCount": 1,
                "isEnable": false
            }
        ],
        "total": 1
    }
}

```

## 新增企業步行活動排行榜設定
- 平台管理員權限
```url=
POST /health-promote/tenant/step-rank-setting/add
```

***Request Body***
| 欄位 | 型態 | 必填 | 預設 | 說明 |
|---|---|---|---|---|
| title | string | Y | | 企業排名設定名稱 |
| startDate | string | Y/N | | 起始日期, rankingPeriodType: MONTH時不須設定開始日期|
| endDate | string | Y/N | | 結束日期, 留空表示統計到當前日期 |
| rankingType | string | y | 10 | 活動排名類型. <BR>TOTAL: 總步數<BR>AVERAGE: 人均步數 |
| rankingPeriodType | string | y | 10 | 排行區間類型.PERIOD: 期間 MONTH: 月份 |
| rank | int | Y | | 排行榜統計名次 |
| tenantIds | string[] | Y | | 參與排行的租戶id陣列 |
| objectKey | string | N | | 企業排名設定縮圖 |


```javascript
{
    "title": "企業排行",
    "rank": 5,
    "rankingType": "TOTAL",
    "rankingPeriodType": "PERIOD",
    "startDate": "2023-03-01",
    "endDate": "2023-07-30",
    "isEnable": true,
    "tenantIds": [
        "ebf71049-a3ad-4b16-8343-dc6856138cb6",
        "40f7baa7-1deb-4267-b2fc-e047cb4c566a",
        "89b0db04-ae19-442a-8533-1386f9e6544d"
    ],
    "objectKey": "tenant_health_promote/1a34713a-b31e-482e-85f8-bfdaca7b8a3e.png"
}
```

***Response***
| 欄位 | 型態   | 說明 
| -----| -----|-------- 
| id | string | 企業排名設定ID |
| title | string | 企業排名設定名稱 |
| url | string | 排名縮圖 |
| startDate | long | 設定開始日期, rankingPeriodType: MONTH時不須設定開始日期 |
| endDate | long | 設定結束日期, 如果沒有設定則表示持續到當下日期 |
| isEnable | boolean | 是否啟用 |
| tenantCount | integer | 參與租戶數量 |
| updateTime | timestamp | 最後更新時間 |



```javascript=
{
    "httpCode": 200,
    "result": {
        "data": {
            "id": "20ea920e-9235-4c74-8145-8e2c7f5e968b",
            "title": "企業排行",
            "startDate": 1677600000000,
            "createTime": 1692002727493,
            "updateTime": 1692002727493,
            "isEnable": true,
            "rank": 5,
            "rankingPeriodType": "PERIOD",
            "rankingType": "TOTAL"
        }
    }
}

```

## 編輯企業步行活動排行榜設定
- 平台管理員權限
```url=
POST /health-promote/tenant/step-rank-setting/update
```

***Request Body***
| 欄位 | 型態 | 必填 | 預設 | 說明 |
|---|---|---|---|---|
| id | string | Y | | 企業排名設定ID |
| title | string | Y | | 企業排名設定名稱 |
| startDate | string | Y/N | | 起始日期, rankingPeriodType: MONTH時不須設定開始日期|
| endDate | string | Y/N | | 結束日期, 留空表示統計到當前日期 |
| rankingType | string | y | 10 | 活動排名類型. <BR>TOTAL: 總步數<BR>AVERAGE: 人均步數 |
| rankingPeriodType | string | y | 10 | 排行區間類型.PERIOD: 期間 MONTH: 月份 |
| rank | int | Y | | 排行榜統計名次 |
| tenantIds | string[] | Y | | 參與排行的租戶id陣列 |
| objectKey | string | N | | 企業排名設定縮圖 |


```javascript
{
    "id": "ebf71049-a3ad-4b16-8343-dc6856138db6",
    "title": "企業排行",
    "rank": 5,
    "rankingType": "TOTAL",
    "rankingPeriodType": "PERIOD",
    "startDate": "2023-03-01",
    "endDate": "2023-07-30",
    "isEnable": true,
    "tenantIds": [
        "ebf71049-a3ad-4b16-8343-dc6856138cb6",
        "40f7baa7-1deb-4267-b2fc-e047cb4c566a",
        "89b0db04-ae19-442a-8533-1386f9e6544d"
    ],
    "objectKey": "tenant_health_promote/1a34713a-b31e-482e-85f8-bfdaca7b8a3e.png"
}
```

***Response***
| 欄位 | 型態   | 說明 
| -----| -----|-------- 
| id | string | 企業排名設定ID |
| title | string | 企業排名設定名稱 |
| url | string | 排名縮圖 |
| startDate | long | 設定開始日期, rankingPeriodType: MONTH時不須設定開始日期 |
| endDate | long | 設定結束日期, 如果沒有設定則表示持續到當下日期 |
| isEnable | boolean | 是否啟用 |
| tenantCount | integer | 參與租戶數量 |
| updateTime | timestamp | 最後更新時間 |



```javascript=
{
    "httpCode": 200,
    "result": {
        "data": {
            "id": "20ea920e-9235-4c74-8145-8e2c7f5e968b",
            "title": "企業排行",
            "startDate": 1677600000000,
            "createTime": 1692002727493,
            "updateTime": 1692002727493,
            "isEnable": true,
            "rank": 5,
            "rankingPeriodType": "PERIOD",
            "rankingType": "TOTAL"
        }
    }
}

```

## 刪除企業步行活動排行榜設定
- 平台管理員權限
```url=
POST /health-promote/tenant/step-rank-setting/delete
```

***Request Body***
| 欄位 | 型態 | 必填 | 預設 | 說明 |
|---|---|---|---|---|
| id | string | Y | | 企業排名設定ID |



```javascript
{
    "id": "20ea920e-9235-4c74-8145-8e2c7f5e968b"
}
```

***Response***
| 欄位 | 型態   | 說明 
| -----| -----|-------- 
| data | int | 刪除設定數量 |




```javascript=
{
    "httpCode": 200,
    "result": {
        "data": 1
    }
}

```

## 取得企業步行活動排行榜上傳URL
- 平台管理員權限
```url=
POST /health-promote/tenant/step-rank-setting/get-upload-url
```

***Request Body***
| 欄位 | 型態 | 必填 | 預設 | 說明 |
|---|---|---|---|---|
 isMultipart | boolean | Y | false | 是否使用分段上傳
 isThumbnail | boolean | Y | false | 上傳的是否為縮圖
 fileName    | String | Y | | 檔名，不包含副檔名，限制最多50字
 fileType    | String | Y | | 副檔名, 限制最多10字
 totalPart   | int    | **N** (isMultipart=false)<br>**Y** (isMultipart=true) | | 總分塊數量，不可小於2
 parts       | Array [...part] | **N** (isMultipart=false)<br>**Y** (isMultipart=true) | | part 資訊 
 
 ***Request-取得上傳網址-part(Object)***
 欄位 | 型態  | 必填 | 預設 | 說明 
 ---|---|---|---|---
 chunkSize | int | Y | | 該 chunk 的大小, bytes
 md5 | string | Y | | 該 part 的 md5
 part | int | Y | | part number, 第幾塊 chunk


```javascript
// 單檔
{
    "isMultipart": false,
    "fileName": "loyalty_card_test-2",
    "fileType": "png",
    "totalPart": null,
    "parts": [
    ],
    "isThumbnail": true
}

// 分塊上傳
{
    "isMultipart": true,
    "isThumbnail": false,
    "fileName": "giphy (7)",
    "fileType": "mp4",
    "totalPart": 2,
    "parts": [
    	{
    		"chunkSize": 5242880,
    		"md5": "5AACA89868CD486D81192221CF9F9415",
    		"part": 1
    	},
    	{
    		"chunkSize": 3145728,
    		"md5": "5AACA89868CD486D81192221CF9F9415",
    		"part": 2
    	}
    ]
}
```

***Response-取得上傳網址-data***
 欄位 | 型態 | 說明 
 ---  | --- | ---
 objectKey | string | storage 中的 objectKey, **unique** 
 uploadId | string | 識別該次上傳的 uploadId 
 fileName | string | 名稱 
 fileType | string | 副檔名 
 url | string | 單檔上傳的時候，才會回傳該 url, 時效 3600 秒
 parts | [...part] | multipart上傳各part的url

***Response-取得上傳網址-part***
 欄位 | 型態 | 說明 
 ---  | --- | ---
 chunkSize | int | 該 chunk 的大小, bytes
 md5 | string | 該 part 的 md5
 part | int | part number, 第幾塊 chunk
 url | string | 可上傳的 url, 時效 3600 秒




```javascript=
// HttpStatus:422, 上傳的檔案類型不允許
{
    "errorMsg": "SERVICE_ERROR.UPLOAD_FILE_TYPE_NOT_ALLOWED",
    "httpCode": 422
}

// HttpStatus: 200
// 單檔
{
    "httpCode": 200,
    "result": {
        "data": {
            "objectKey": "loyalty_card/thumbnail/56ca1cfc-4bcb-4a0a-b079-fd08a0e75a37.png",
            "uploadId": "fb483648-25d0-4137-bb49-85c17842a95b",
            "fileName": "loyalty_card_test-2",
            "fileType": "png",
            "url": "http://swift-storage/loyalty_card/thumbnail/56ca1cfc-4bcb-4a0a-b079-fd08a0e75a37.png"
        }
    }
}
// 分塊上傳
{
    "httpCode": 200,
    "result": {
        "data": {
            "objectKey": "event/f76adf26-1e22-4b18-980d-b9a68efc5171.mp4",
            "uploadId": "53fde368-43d9-455f-a610-62091fc30be6",
            "fileName": "giphy (7)",
            "fileType": "mp4",
            "parts": [
                {
                    "chunkSize": 5242880,
                    "md5": "5AACA89868CD486D81192221CF9F9415",
                    "part": 1,
                    "url": "http://192.168.100.239:12345/v1/AUTH_test/kmuh_segments/event%2Ff76adf26-1e22-4b18-980d-b9a68efc5171.mp4%2F1?temp_url_sig=796c52b00f75b62be658533b2fadbc7f14381e36&temp_url_expires=1554263771"
                },
                {
                    "chunkSize": 3145728,
                    "md5": "5AACA89868CD486D81192221CF9F9415",
                    "part": 2,
                    "url": "http://192.168.100.239:12345/v1/AUTH_test/kmuh_segments/event%2Ff76adf26-1e22-4b18-980d-b9a68efc5171.mp4%2F2?temp_url_sig=ad71de81dfbcd94bce4a091f2630c6f1373ff3cd&temp_url_expires=1554263771"
                }
            ]
        }
    }
}

```

## 健康點數統計

```url=
POST /health-promote/reward-point-analyse
```


Request
  欄位 | 型態  | 必填 | 預設 | 說明  
---|---|---|---|---
 startDate | timestamp | Y | | 開始日期
 endDate | timestamp | Y | | 結束日期
 topNum | int | Y | 5 | top數目

```javascript
{
    "startDate": 1630454400000,
    "endDate": 1632960000000,
    "topNum" : 5
}
```
Response
  欄位 | 型態   | 說明  
 -----| -----|-------- 
 periodTotalPoints | int | 期間累積健康點數
 totalPoints | int | 總累積健康點數
 list | json array | 期間累積健康點數 array
  -no | int | top number 
  -name | string | 姓名
  -gender | int | 1: 男性, 2: 女性
  -periodPoints | int | 期間累積健康點數
  


```javascript
{
    "httpCode": 200,
    "result": {
        "data": {
            "periodTotalPoints": 147,
            "totalPoints": 312,
            "list": [
                {
                    "no": 1,
                    "householdMemberId": "fdba6e30-ffda-47e4-b378-be7f9de7ba15",
                    "name": "啊啊啊",
                    "gender": 1,
                    "periodPoints": 147
                }
            ]
        }
    }
}
```

## 匯出健康點數統計資料

```url=
POST /health-promote/reward-point-export
```


Request
  欄位 | 型態  | 必填 | 預設 | 說明  
---|---|---|---|---
 startDate | timestamp | Y | | 開始日期
 endDate   | timestamp | Y | | 結束日期

```javascript
{
    "startDate": 1630454400000,
    "endDate": 1632960000000
}
```
Response
  * httpCode 400 - [errorMsg](https://gitlab.devpack.cc/Wei_Chang/wicc-kmuh/wikis/Type-Definition#service_error) 
  
  | errorMsg |   desc   |
  | --------- |-------- |
  |NOT_EXIST|  資料檔不存在 |
  
  
  * httpCode 200 -Download file
  
  ```
  File name: 健康點數統計.xlsx
  ```
