---
# System prepended metadata

title: 任務控制管理平台規劃書
tags: [軟體開發]

---

## 任務控制管理平台規劃書

#### 產品名稱與描述

- **產品名稱**: TGIO任務控制管理平台
- **產品描述**: 本平台將單機管理的硬體控制程式與設定參數雲端化、平台化，以便能在一個統一平臺上控制不同場域的硬體設備，也便於未來業務人員在外展示。
- 控制平台具高度模組化及可擴充性，可因應客戶需求功能進行模組調整，並易於介接客製化UI介面；巡檢機器人所內建之感測器主要為可見光影像與熱影像感測，介面需提供即時影像(each/both)以便使用者進行遠端巡檢，並保留擴充不同感測器之可能性。
- 初步目標以TGIO控制平台為主，整合可見光影像與熱影像感測，須考量中控系統之可擴充性，提供後續整合TPW中控、行動攝影機VMS、AI辨識管理及工控感測器MESH相關介面，成為TIRC整合服務之任務管控平台。

#### 業務流程

- **權限流程描述**: 管理人員依據職權範圍新增或更改操作人員及一般人員，並通知相關人員。
- **任務流程描述**: 操作人員或管理人員建立新任務須設定場域、路徑、機器人、充電站和巡檢點，將多個巡檢點和影像串流依序加入任務並指定執行間隔，建立任務完成後控制開始和結束，並依據情況調整任務設定。
- **檢視流程描述**: 一般人員、操作人員和管理人員在儀表板中根據路徑及場域的需求查看3D地圖、影像畫面、機器人資訊、執行中的任務資訊和歷史任務資訊。

#### 產品架構

![任務控制管理平台架構圖](https://hackmd.io/_uploads/BkSBteuma.png)


![資料庫ERD](https://hackmd.io/_uploads/rkCVJeOX6.svg)

TODO：技術說明

#### 開發時程

- 2024 Q1底完成TGIO中控平台
- 2024 Q2完成TPW中控、VMS、AI、工控相關整合

#### 需求分類

- **功能需求**
  - 場域管理
  - 路徑管理
  - 巡檢點管理（包含充電站的特殊類型）
  - 機器人管理
  - 資訊面板管理
  - 任務管理
  - 影像管理
  - 串流影像
  - 影像辨識（未來需求）
  - 辨識模型管理（未來需求）
  - 串流影像辨識（未來需求）
- **非功能需求**
  - 使用者管理
  - 權限管理（包含一般人員、操作人員、管理人員）
  - K8S架構
- **介面需求**
  - 資訊面板介面
  - 功能性操作介面
  - 影像顯示介面（串流＋歷史）
  - 3D地圖顯示介面

#### 用例

- **主要用例**
	- **場域管理**
		- 管理人員可以新增、編輯或刪除場域 {TGIO、TPW} 
		- 觀看或調整特定場域的路徑和機器人分配 {TGIO、TPW} 
		- 指定場域的操作人員 {TGIO、TPW} 

	- **路徑管理**
		- 操作人員或管理人員新增或刪除路徑 {TGIO}
		- 設定路徑名稱 {TGIO}
		- 分配路徑至指定場域 {TGIO}
		- 指定路徑上的機器人 {TGIO}
		- 輸入或編輯路徑描述 {TGIO}

	- **巡檢點與充電站管理**
		- 在特定路徑上，操作人員或管理人員新增、編輯或刪除巡檢點或充電站 {TGIO、TPW}
		- 為巡檢點或充電站分配特定機器人動作 {TGIO、TPW}
		- 設定巡檢點的順序或特定要求 {TGIO、TPW}

	- **任務管理**
		- 操作人員或管理人員創建新任務 {TGIO、TPW、AI}
		- 設定任務名稱、影像網址、開始及結束時間 {TGIO}
		- 設定任務名稱、開始及結束時間 {TPW}
		- 設定任務名稱、場域、影像網址 {AI}
		- 分配任務給特定機器人 {TGIO、TPW}
		- 分配巡檢點到特定任務，並設定順序 {TGIO、TPW}
		- 啟動或中止任務 {TGIO、TPW、AI}
		- 調整任務設定或任務參數（例如：機器人行走速度或巡檢間隔）{TGIO、TPW}
		- 調整任務設定或任務參數（例如：辨識區域或是辨識項目更新）{AI}

	- **資訊檢視**
		- 所有使用者可在儀表板上查看即時資訊 {TGIO、TPW}
		- 查看特定場域地圖或影像畫面 {TGIO}
		- 查看特定場域地圖或機器人影像畫面 {TPW}
		- 查看當前機器人狀態或位置 {TGIO、TPW}
		- 查看執行中的任務狀態或歷史任務紀錄 {TGIO、TPW}
		- 所有使用者可在儀表板上查看歷史資訊 {AI}
		-	查看辨識區域或辨識項目 {AI}

	- **機器人管理**
		- 管理人員或操作人員可以新增、編輯或刪除機器人設定 {TGIO、TPW}
		- 分配機器人到特定路徑和場域 {TPW}
		- 分配機器人到特定場域 {TGIO}
		- 查看機器人的即時狀態或歷史數據 {TGIO、TPW}
		- 查看即時影像或歷史影像紀錄 {TPW}

	- **影像管理**
		- 管理人員或操作人員可以新增、編輯或刪除影像資料來源 {TPW}
		- 觀看或調整影像資料來源的機器人分配 {TPW}
		- 查看即時影像或歷史影像紀錄 {TPW}

	- **辨識模型管理**
		- 管理人員或操作人員可以新增、編輯或刪除辨識模型 {TGIO、TPW}
		- 觀看或調整辨識模型的機器人分配 {TGIO、TPW}
		- 查看辨識結果或歷史紀錄 {TGIO、TPW}

	- **影像辨識**
		- 透過機器人取得影像並傳送至平台 {TGIO、TPW}
		- 取得影像並傳送至平台{AI}
		- 使用準備好的辨識模型進行影像分析 {TGIO、TPW、AI}
		- 將辨識結果提供給使用者查看 {TGIO、TPW、AI}

	- **串流影像辨識**
		- 收取機器人發送的即時串流影像 {TGIO、TPW}
		- 進行即時影像分析和處理 {TGIO、TPW}
		- 提供即時串流影像辨識結果給使用者查看 {TGIO、TPW}

- **次要用例**
	- **用戶管理**
		- 管理人員創建新用戶帳戶或刪除現有用戶帳戶
		- 管理人員編輯用戶帳戶設定（例如：姓名、電子信箱或聯絡方式）
		- 管理人員審核新用戶註冊申請

	- **權限管理**
		- 管理人員設定或修改用戶的角色（例如：一般使用者、操作人員和管理人員）
		- 管理人員分配或調整用戶的權限設定
		- 管理人員設定或調整功能或資料的權限設定

	- **個人設定**
		- 所有用戶可修改個人資訊（例如：姓名、電子信箱或聯絡方式）
		- 所有用戶可修改密碼

	- **資料管理**
		- 系統自動進行定期資料備份
		- 管理人員可手動進行資料備份或恢復資料
		- 管理人員可查看資料備份的活動日誌或報告

	- **使用者管理**
		- 管理人員可以新增、編輯或刪除使用者
		- 根據使用者的角色分配對應權限

	- **權限管理**
		- 管理人員可以設定各角色的各項權限
		- 各使用者根據所具有的權限進行操作

	- **資料安全性**
		- 系統需保護影像和任務數據，保密性及完整性要求高
		- 系統需對權限管理有嚴格的控管，防止非授權的存取或操作

	- **系統穩定性**
		- 系統需具備相應容錯能力，以確保在各種情況下能正常運作
		- 系統需能承受大量的同時連線或請求，確保在高負載時能正常運作

- **介面需求**
	- **功能性操作介面**
		- 提供易操作及直觀的圖形化介面，例如：路徑設定、場域設定、任務建立等 {TGIO}
		- 提供易操作及直觀的圖形化介面，例如：場域設定、任務建立等 {TPW、AI}

	- **影像顯示介面**
		- 顯示即時影像或歷史影像，並能指示出影像辨識的結果 {TGIO、AI}

	- **地圖顯示介面**
		- 顯示場域內的地圖，並能即時顯示機器人的位置及路徑 {TGIO}
		- 顯示場域內的地圖，並能即時顯示機器人的位置及軌跡 {TPW}

#### 資料模型
- **實體**
  - 用戶(User)：UUID(PK)，姓名(VARCHAR(255))，帳號(VARCHAR(255))，密碼(VARCHAR(255))，Email(VARCHAR(255))
  - 角色(Role)：UUID(PK)，角色名稱(VARCHAR(255))
  - 權限(Policy)：UUID(PK)，對象數據表名(VARCHAR(255))，對象操作(VARCHAR(255))
  - 場域(Field)：UUID(PK)，名稱(VARCHAR(255))，地點(VARCHAR(255))，長(INTEGER)，寬(INTEGER)
  - 場域用戶(Field User)：UUID(PK)，場域ID(UUID - Field)，用戶ID(UUID - User)
  - 機器人(Robot)：UUID(PK)，型號(VARCHAR(255))，狀態(INTEGER)，場域ID(UUID - Field)
  - 路徑(Path)：UUID(PK)，名稱(VARCHAR(255))，起點(UUID - Coordinate)，終點(UUID - Coordinate)，場域ID(UUID - Field)
  - 座標點(Coordinate)：UUID(PK)，位置X(NUMERIC)，位置Y(NUMERIC)，位置Z(NUMERIC)，場域ID(UUID - Field)
  - 巡檢點(Inspection Point)：UUID(PK)，名稱(VARCHAR(255))，座標點ID(UUID - Coordinate)，類型(VARCHAR(255))，路徑ID(UUID - Path)
  - 任務(Task)：UUID(PK)，名稱(VARCHAR(255))，執行日期與時間(TIMESTAMPTZ)，機器人ID(UUID - Robot)
  - 巡檢任務(Inspection Task)：UUID(PK)，巡檢點ID(UUID - Inspection Point)，任務ID(UUID - Task)，執行順序(INTEGER)
  - 動作指令(Action)：UUID(PK)，動作名稱(VARCHAR(255))，代碼(VARCHAR(255))，參數(JSONB)，辨識模型ID(UUID - Recognition Model)
  - 巡檢動作(Inspection Action)：UUID(PK)，動作指令ID(UUID - Action)，巡檢點ID(UUID - Inspection Point)，執行順序(INTEGER)
  - 資源(Resource)：UUID(PK)，名稱(VARCHAR(255))，儲存路徑(VARCHAR(255))，拍攝時間(TIMESTAMPTZ)，類型(VARCHAR(255))，巡檢點ID(UUID - Inspection Point)
  - 辨識模型(Recognition Model)：UUID(PK)，模型名稱(VARCHAR(255))，訓練日期(DATE)，參數(JSONB)
  - 辨識結果(Recognition Result)：UUID(PK)，辨識模型ID(UUID - Recognition Model)，資源ID(UUID - Resource)，結果描述(TEXT)，時間戳(TIMESTAMPTZ)
  - 圖資(Map Data)：UUID(PK)，類型(VARCHAR(255))，檔案路徑(VARCHAR(255))，版本(VARCHAR(255))，建立時間(TIMESTAMPTZ)，場域ID(UUID - Field)
  - 用戶角色(UserRole)：UUID(PK)，用戶ID(UUID - User), 角色ID(UUID - Role)
  - 角色權限(RolePolicy): UUID(PK)，角色ID(UUID - Role), 權限ID(UUID - Policy)

- **關係**
  - 用戶(User) 與 角色(Role)：多對多
  - 場域(Field) 與 用戶(User)：多對多
  - 場域(Field) 與 機器人(Robot)：一對多。一個場域可以有多個機器人
  - 場域(Field) 與 路徑(Path)：一對多。一個場域可以有多條路徑
  - 場域(Field) 與 座標點(Coordinate)：一對多。一個場域有多個座標點
  - 場域(Field) 與 圖資(Map Data)：一對多。一個場域可以有多種圖資
  - 機器人(Robot) 與 任務(Task)：一對多。一台機器人可以有多個任務
  - 路徑(Path) 與 巡檢點(Inspection Point)：一對多。一條路徑包含多個巡檢點
  - 巡檢點(Inspection Point) 與 任務(Task) 透過 巡檢任務(Inspection Task)：多對多。一個任務可以有多個巡檢點；一個巡檢點可以被多個任務使用
  - 巡檢點(Inspection Point) 與 動作指令(Action) 透過 巡檢動作(Inspection Action)：多對多。一個巡檢點可以有多個動作指令；一個動作指令可以被多個巡檢點使用
  - 巡檢點(Inspection Point) 與 資源(Resource)：一對多。一個巡檢點可以有多個資源
  - 資源(Resource) 與 辨識結果(Recognition Result)：一對多。一個資源可以產生多個辨識結果
  - 辨識模型(Recognition Model) 與 辨識結果(Recognition Result)：一對多。一個辨識模型可以產生多個辨識結果
  - 辨識模型(Recognition Model) 與 動作指令(Action)：一對多。一個辨識模型可以被多個動作指令使用。
