---
# System prepended metadata

title: 前後端交互流程圖

---


前後端交互流程圖
===

前後端交互，有三個服務
1. 賠率調整、賽事狀態調整(Config調整）的服務，走gRPC
2. 抓取資料的WebSocket, Input為畫面上方有的filter, Output為所有畫面需要顯示的資料
後端推送的內容更新，請參照下方"內容更新的情境"
3. 抓取資料的服務，走gRPC，Input/Output與WS的版本相同

避免request時間差問題，發起更改config的請求時，需加上時間戳

資料訂閱
---
```sequence
User->FrontEnd: 打開操盤畫面
FrontEnd->User: 顯示讀取中
FrontEnd->Backend: 建立WebSocket連線，option為default值
Backend->FrontEnd: 
FrontEnd->User: 顯示資料
FrontEnd->FrontEnd: 建立WebSocket連線 - 失敗 retry
FrontEnd->FrontEnd: 建立WebSocket連線 - 失敗 retry
FrontEnd->User: 顯示錯誤訊息
Backend->FrontEnd: inplay賽事資料更新，主動推送給前端
FrontEnd->User: 顯示最新資料
User->FrontEnd: 點擊早盤按鈕
FrontEnd->User: 顯示讀取中
FrontEnd->Backend: 更新WebSocket中option為早盤賽事
Backend->FrontEnd: 
FrontEnd->User: 顯示資料
Backend->FrontEnd: 早盤賽事資料更新，主動推送給前端
FrontEnd->User: 顯示最新資料
User->FrontEnd: 選擇聯賽，點擊Confirm按鈕
FrontEnd->Backend: 更新WebSocket中option
Backend->FrontEnd: 
FrontEnd->User: 顯示資料
Backend->FrontEnd: 資料更新，主動推送給前端
FrontEnd->User: 顯示最新資料
```

### 資料更新的情境(主動推送給前端)
- 賽事列表更新，包括增加、刪除賽事
- 賽事資料更新，包括進球數、紅牌、上半場完賽、下半場開始、全場結束
- 玩法狀態更新，包括賠率、暫停、關盤、調控數字、主副盤口
- 賽事的狀態更新，包括全部暫停、跟隨市場、全部關閉
- 賽事事件更新，依據賽事的事件發生，系統會自動相對應的動作
  EX: 場上進球時，系統會自動進入“全部暫停”的狀態
  ＊賽事的事件清單，RTI之後會提供，相應的動作會再確認後提供

調整賠率
---
```sequence
User->FrontEnd: 點擊某個賠率更動後，按勾勾送出
FrontEnd->User: 顯示賠率更改中
FrontEnd->Backend: 發起gRPC request，送出調賠請求
Backend->Backend: 調賠規則校驗(成功)
Backend->Backend: 更新Config到DB(成功)
Backend->Backend: 與RTI對接(成功)
Backend->FrontEnd: 返回結果（成功）
FrontEnd->User: 提示賠率更改成功
Backend->FrontEnd: 資料更新，主動推送給前端
FrontEnd->User: 顯示最新資料
User->FrontEnd: 點擊某個賠率更動後，按勾勾送出
FrontEnd->User: 顯示賠率更改中
FrontEnd->Backend: 發起gRPC request，送出調賠請求
Backend->Backend: 調賠規則校驗(成功)
Backend->Backend: 更新Config到DB(失敗)
Backend->FrontEnd: 返回結果（失敗）
FrontEnd->User: 提示賠率更改失敗的原因
FrontEnd->Backend: 發起gRPC request，送出調賠請求
Backend->Backend: 調賠規則校驗(失敗)
Backend->FrontEnd: 返回結果（失敗）
FrontEnd->User: 提示賠率更改失敗的原因
```

### 調賠規則
#### AH、OU
調整不可超過 -0.09~0.09 此區間，上下盤連動規則請參考[這裡](https://cloudlytics-data.atlassian.net/wiki/spaces/CLOUDLYTIC/pages/2040037413)
#### 1X2 
只能調整其中一個盤的數字，其他兩個盤的數字需連動，[規則在此](https://cloudlytics-data.atlassian.net/wiki/spaces/CLOUDLYTIC/pages/2040037413)
因賠率有可能較大，因此有調賠的級距表
| 賠率 | 單次調整 | 調整範圍 |
| --- | --- | --- |
| 0 - 10 | 0.01 | -0.09 ~ 0.09 |
| 10 - 50 | 0.1 | -0.9 ~ 0.9 |
| 50 - 100 | 0.5 | -4.5 ~ 4.5 |
| 100 - | 1 | -9 ~ 9 |

