You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@rocketmq.apache.org by "zhaohai666 (via GitHub)" <gi...@apache.org> on 2026/07/20 09:16:49 UTC

[PR] [Studio] feat: add Proxy management page [rocketmq-dashboard]

zhaohai666 opened a new pull request, #482:
URL: https://github.com/apache/rocketmq-dashboard/pull/482

   # PR Title
   `[studio] feat: add Proxy management page`
   
   ## PR Description
   ```markdown
   ## Branch Info
   - Branch: feature/studio-proxy-page (target repo: rocketmq-studio)
   - Total changed files: 5, +568 lines
   - Total commits: 3
   
   ## Changed Files List
   | File | Line Changes | Description |
   |------|--------------|-------------|
   | proxy.ts | +53 | Proxy API layer including 2 interfaces and 2 request functions |
   | proxy.test.ts | +76 | Proxy API unit tests with 4 test cases |
   | Proxy.tsx | +431 | Full Proxy management page component |
   | translations.ts | +6 | Add 6 new i18n translation keys for proxy module |
   | App.tsx | +2 | Register new proxy page route |
   
   ## API Layer (proxy.ts)
   ### Type Interfaces
   1. ProxyHomePageData
   ```typescript
   { proxyAddrList: string[], currentProxyAddr: string }
   ```
   2. ProxyNode
   ```typescript
   { address, status, version, connections, tps, memory, cpu, uptime, isSelected }
   ```
   
   ### API Functions
   1. `queryProxyHomePage()`
      - Method: GET
      - Endpoint: `/proxy/homePage.query`
      - Return: ProxyHomePageData
   2. `addProxyAddr(address)`
      - Method: POST
      - Endpoint: `/proxy/addProxyAddr.do`
      - Request Body: form-urlencoded with `newProxyAddr` parameter
   
   ## API Test Coverage (proxy.test.ts, 4 cases total)
   1. queries proxy home page data
      Verify GET response returns valid `proxyAddrList` and `currentProxyAddr`
   2. handles empty proxy address list
      Test empty address list and blank current proxy address response
   3. adds a proxy address with form-urlencoded content type
      Validate request header `Content-Type: application/x-www-form-urlencoded`
   4. adds a proxy address with localhost
      Confirm colon `:` in localhost address is URL encoded to `%3A`
   
   ## Page Component Features (Proxy.tsx)
   ### 1. Cluster Statistics Cards
   Four statistic panels: Total nodes, Healthy nodes / All nodes, Total connections, Total TPS
   
   ### 2. Proxy Node Table
   Table columns:
   Address (highlighted & tagged for current selected node), status colored tag, version, sortable connections, sortable TPS, memory progress bar (red highlight when >80%), CPU progress bar (red highlight when >80%), uptime, operation buttons
   
   ### 3. View Node Config
   Pop up Modal with Descriptions component to display all node configuration items
   
   ### 4. Add New Proxy Node
   Modal form with address input; regex validation enforces `host:port` format
   
   ### 5. Remove Proxy Node
   Popconfirm secondary confirmation before deletion; the currently selected node cannot be removed
   
   ### 6. Manual Refresh Button
   Trigger re-fetch of full proxy node list
   
   ### Status Render Logic
   The `renderStatus()` function returns colored tags based on node status value:
   - Healthy: Green CheckCircle
   - Unhealthy: Red XCircle
   - Warning: Yellow Warning icon
   
   ## New I18n Keys (6 total)
   | Key | English Text |
   |-----|--------------|
   | proxy.version | Version |
   | proxy.status | Status |
   | proxy.healthy | Healthy |
   | proxy.unhealthy | Unhealthy |
   | proxy.warning | Warning |
   | proxy.confirmRemove | Are you sure to remove this node? |
   
   ## Routing Setup
   Add route entry in App.tsx:
   `<Route path="studio/proxy" element={<ProxyPage />} />`
   
   ## Build Fixes
   1. Missing Dashboard icon from `@phosphor-icons/react`: replaced with Gauge icon
   2. Remove unsupported `icon={Gauge}` prop from PageHeader component to resolve type error
   3. Add optional chaining `config.headers?.` to avoid undefined access error in proxy.test.ts
   
   ## Validation Results
   ✅ `npm run build` completes successfully
   ✅ All 32 test cases across 6 test files pass (including 4 Proxy API tests)
   ```


-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: commits-unsubscribe@rocketmq.apache.org

For queries about this service, please contact Infrastructure at:
users@infra.apache.org


Re: [PR] [Studio] feat: add Proxy management page [rocketmq-dashboard]

Posted by "lizhimins (via GitHub)" <gi...@apache.org>.
lizhimins merged PR #482:
URL: https://github.com/apache/rocketmq-dashboard/pull/482


-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: commits-unsubscribe@rocketmq.apache.org

For queries about this service, please contact Infrastructure at:
users@infra.apache.org