# 健促指標總覽 --- 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 ```