Skip to main content
Glama
USER_MANAGEMENT_TESTING.md5.79 kB
# 用戶管理功能測試指南 本文檔說明如何測試新增的用戶帳號解鎖與狀態查詢功能。 ## Maximo 物件資訊 - **物件結構**: DMMAXUSER - **資料表**: MAXUSER - **API 端點**: `/oslc/os/dmmaxuser` ## 新增的 MCP Tools ### 1. get_user_status 查詢用戶帳號狀態和詳細資訊 **參數:** - `userid` (必填): 用戶 ID (登入帳號) **回傳資訊:** - `userid`: 用戶 ID - `personid`: 人員 ID - `displayname`: 顯示名稱 - `status`: 用戶狀態 (ACTIVE/INACTIVE) - `loginid`: 登入 ID - `lockedout`: 帳號鎖定狀態 (true/false) - `failedlogincount`: 登入失敗次數 - `emailaddress`: 電子郵件 - `primaryphone`: 主要電話 - `is_locked`: 是否被鎖定 (便於判讀) - `is_active`: 是否啟用 (便於判讀) - `failed_login_count`: 失敗登入次數 (便於判讀) --- ### 2. search_users 搜尋用戶 **參數:** - `query` (可選): 搜尋關鍵字 (搜尋 userid, displayname, personid) - `status` (可選): 用戶狀態篩選 (如 ACTIVE, INACTIVE) - `personid` (可選): 人員 ID 篩選 - `locked_only` (可選): 是否只顯示被鎖定的帳號 (預設: false) - `page_size` (可選): 最大回傳筆數 (預設: 100) **回傳:** - 符合條件的用戶列表 --- ### 3. unlock_user_account 解鎖用戶帳號 **參數:** - `userid` (必填): 要解鎖的用戶 ID - `memo` (可選): 解鎖操作備註 **功能說明:** 此工具會執行以下操作來解鎖帳號: 1. 設定 `status` 為 "ACTIVE" 2. 設定 `lockedout` 為 0 (false) 3. 重設 `failedlogincount` 為 0 **回傳:** - 更新後的用戶資訊 --- ## 測試方法 ### 方法 1: 透過 HTTP API 端點測試 啟動服務後,可使用以下 API 端點測試: #### 1. 測試查詢用戶狀態 ```bash curl -X POST http://localhost:8000/api/test-tool \ -H "Content-Type: application/json" \ -d '{ "tool": "get_user_status", "params": { "userid": "testuser" } }' ``` #### 2. 測試搜尋用戶 ```bash # 搜尋所有用戶 curl -X POST http://localhost:8000/api/test-tool \ -H "Content-Type: application/json" \ -d '{ "tool": "search_users", "params": { "query": "admin", "page_size": 10 } }' # 只搜尋被鎖定的帳號 curl -X POST http://localhost:8000/api/test-tool \ -H "Content-Type: application/json" \ -d '{ "tool": "search_users", "params": { "locked_only": true } }' ``` #### 3. 測試解鎖帳號 ```bash curl -X POST http://localhost:8000/api/test-tool \ -H "Content-Type: application/json" \ -d '{ "tool": "unlock_user_account", "params": { "userid": "testuser", "memo": "手動解鎖帳號" } }' ``` --- ### 方法 2: 透過 MCP Protocol (由 Dify 調用) 在 Dify Agent 中配置 MCP 連接後,可直接使用這些工具: #### 範例對話 1: 查詢用戶狀態 ``` 用戶: 請查詢 testuser 的帳號狀態 Agent: [調用 get_user_status 工具] ``` #### 範例對話 2: 搜尋被鎖定的帳號 ``` 用戶: 列出所有被鎖定的用戶帳號 Agent: [調用 search_users 工具,設定 locked_only=true] ``` #### 範例對話 3: 解鎖帳號 ``` 用戶: 請解鎖 testuser 的帳號 Agent: [調用 unlock_user_account 工具] ``` --- ### 方法 3: 透過互動式測試頁面 1. 啟動服務後,開啟瀏覽器訪問 `http://localhost:8000/test` 2. 在測試頁面中選擇相應的工具進行測試 3. 注意:需要更新 `static/test.html` 以包含新的用戶管理工具 --- ## 環境設定 確保 `.env` 檔案中已設定以下環境變數: ```env # Maximo API Configuration MAXIMO_API_URL=https://your-maximo-server.com MAXIMO_API_KEY=your-api-key MAXIMO_MAXAUTH=your-maxauth-token # Redis Configuration REDIS_URL=redis://localhost:6379/0 # Server Configuration PORT=8000 CORS_ENABLED=true ``` --- ## 啟動服務 ### 使用 Docker Compose (推薦) ```bash docker-compose up -d ``` ### 本地運行 ```bash # 安裝依賴 pip install -r requirements.txt # 啟動 Redis (需要另外安裝) redis-server # 啟動 MCP Server python -m src.main ``` --- ## 快取機制 用戶查詢結果會被快取,預設 TTL 為 600 秒 (10 分鐘)。 當執行解鎖操作時,相關的快取會自動失效。 --- ## 錯誤處理 所有工具都包含完整的錯誤處理: 1. **用戶不存在**: 回傳 404 錯誤 2. **認證失敗**: 回傳 401 錯誤 3. **網路錯誤**: 自動重試 (最多 3 次) 4. **超時**: 預設超時時間為 30 秒 --- ## 日誌記錄 所有操作都會記錄結構化日誌,包括: - 請求參數 - 執行時間 - 錯誤資訊 - 關鍵操作 (如解鎖帳號) 查看日誌: ```bash # 如果使用 Docker docker-compose logs -f mcp-server # 如果本地運行 # 日誌會輸出到標準輸出 ``` --- ## 安全注意事項 1. **權限控制**: 確保只有授權的用戶可以調用解鎖功能 2. **審計記錄**: 所有解鎖操作都會記錄在日誌中 3. **API Key 保護**: 不要將 API Key 提交到版本控制系統 4. **HTTPS**: 生產環境應使用 HTTPS 連接 Maximo --- ## 檔案變更清單 本次更新包含以下檔案變更: 1. **新增檔案**: - `src/tools/user_tools.py` - 用戶管理工具實作 2. **修改檔案**: - `src/main.py` - 註冊新的 MCP tools 和測試端點 3. **文檔**: - `USER_MANAGEMENT_TESTING.md` - 本測試指南 --- ## 後續改進建議 1. 更新 `static/test.html` 以包含用戶管理工具的測試介面 2. 添加更多用戶管理功能,如: - 批次解鎖多個帳號 - 設定用戶狀態 (啟用/停用) - 查看用戶登入歷史 - 重設密碼 3. 添加單元測試和整合測試 4. 實作更細緻的權限控制 --- ## 支援與反饋 如有問題或建議,請聯繫開發團隊。

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/nick0918964388/mcp-maximo-server'

If you have feedback or need assistance with the MCP directory API, please join our Discord server