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]