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

   ## Basic Info
   Branch: feature/studio-namespace-page (target repo: rocketmq-studio)
   Total commits: 2
   1. 9d7ca83 [studio] feat: add Namespace page
   2. 28e69b5 [studio] test: add Namespace API unit tests
   
   ## Changed Files
   Total 4 files modified, +711 lines of code
   | File | Line Changes | Description |
   |------|--------------|-------------|
   | web/src/App.tsx | +2 | Register route `/studio/namespace` mapped to 
NamespacePage |
   | web/src/api/namespace.ts | +68 | Namespace API layer with complete 
TypeScript type definitions |
   | web/src/api/namespace.test.ts | +116 | 7 unit test cases for Namespace 
APIs |
   | web/src/pages/studio/Namespace.tsx | +525 | Namespace management page 
component |
   
   ## API Layer (namespace.ts)
   | Function | HTTP Method | Endpoint | Return Type |
   |----------|-------------|----------|-------------|
   | queryNamespaceList() | GET | /namespace/list | NamespaceItem[] |
   | queryNamespaceDetail(name) | GET | /namespace/{name} | NamespaceItem |
   | createNamespace(payload) | POST | /namespace/create | void |
   | updateNamespace(payload) | PUT | /namespace/update | void |
   | deleteNamespace(name) | DELETE | /namespace/{name} | void |
   | queryNamespaceCapability() | GET | /namespace/capability | 
NamespaceCapability |
   
   ### TypeScript Interfaces
   1. `QuotaConfig`
   Contains: maxTopicCount, maxConsumerGroupCount, storageQuotaGB, qpsLimit, 
connectionLimit
   2. `NamespaceItem`
   Contains: namespaceName, displayName, description, clusterName, status, 
defaultNamespace, createTime, quotaConfig
   3. `NamespaceCapability`
   Contains: namespaceSupported
   
   ## Page Functionalities
   1. Capability Check
   Call `queryNamespaceCapability()` on page mount; show Alert warning if 
namespace feature is unsupported.
   
   2. Statistics Cards
   Display total namespaces count / enabled namespaces / total topic quota / 
total consumer group quota.
   
   3. Namespace Data Table
   Columns: namespace name, display name, cluster, status, topic quota limit, 
group quota limit, storage quota, action buttons.
   
   4. Create & Edit Modal
   Form fields:
   - namespaceName (disabled in edit mode)
   - displayName
   - clusterName
   - description
   - 5 quota configuration items
   
   5. Detail Drawer/Modal
   Use Descriptions component to render full namespace info including quota 
configuration panel.
   
   6. Default Namespace Protection
   Hide edit and delete buttons for default namespace to prevent modification 
or removal.
   
   7. Delete Confirmation
   Popconfirm secondary confirmation popup before executing deletion request.
   
   ## Test Coverage (7 test cases)
   1. queries namespace list
   Verify the API returns namespace list and validates `namespaceName` field
   2. queries namespace detail by name
   Fetch single namespace detail and validate `quotaConfig.maxTopicCount`
   3. creates a namespace
   Send POST /namespace/create and verify request body carries namespaceName & 
displayName
   4. updates a namespace
   Send PUT /namespace/update and validate namespaceName & description in 
payload
   5. deletes a namespace by name
   Call DELETE /namespace/{name} successfully
   6. queries namespace capability as supported
   Assert `namespaceSupported: true` from capability API response
   7. queries namespace capability as unsupported
   Assert `namespaceSupported: false` from capability API response
   
   ## Build & Test Validation
   ✅ Pass `npm run build` compilation without errors
   ✅ All 35 test cases across 6 test files pass


-- 
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: [email protected]

For queries about this service, please contact Infrastructure at:
[email protected]

Reply via email to