tju-yxq opened a new pull request, #5481:
URL: https://github.com/apache/rocketmq-dashboard/pull/5481

   ### Which Issue(s) This PR Fixes
   
   - Fixes #3557
   - Fixes #3558
   - Fixes #3559
   - Fixes #3561
   - Fixes #3565
   - Fixes #5200
   
   ### Brief Description
   
   Consolidates six previously separate one-export-per-page PRs into one 
cohesive change, following the grouping guideline in #2107 ("one PR per page 
for the same feature" is exactly the fragmentation it asks contributors to 
avoid). Every inventory an operator is asked to hand over — instances, ACL 
users, K8s certificates, maintenance windows, notification deliveries, message 
traces — can now be exported from the page it lives on:
   
   1. **Instance inventory** (#3557): server-side CSV export of the filtered 
list — bounded at 10,000 rows, honoring the active vendor/type/search filters, 
secrets (endpoints with credentials) masked.
   2. **ACL users** (#3558): masked CSV of the ACL user inventory (no access 
keys or secrets), bounded at 10,000 rows.
   3. **K8s certificates** (#3559): CSV of the certificate inventory with 
validity windows, days remaining and status.
   4. **Notification deliveries** (#3561): CSV of the paged delivery feed 
honoring the active channel/status filters, bounded at 10,000 rows.
   5. **Maintenance windows** (#3565): CSV of the configured 
silence/maintenance windows.
   6. **Message trace** (#5200): JSON export of the loaded trace (context, 
nodes, per-group consumer status) from the message detail's trace tab — the 
format audit tooling can diff.
   
   All exports use the shared `CsvUtil` (quoted cells, formula-prefix escaping) 
or a typed JSON payload, respect the filters the user sees, and are bounded so 
an export can never turn into an unbounded table scan.
   
   ### How Did You Test This Change?
   
   All affected suites together on the consolidated branch (the member PRs each 
passed their own suites; this verifies the combination):
   
   ```
   cd server && mvn 
'-Dtest=NotificationOutboxServiceTest,SystemAlertControllerTest,AlertSilenceControllerTest,AlertSilenceServiceTest,AclControllerTest,AclServiceTest,InstanceServiceTest,InstanceControllerTest'
 test
   [INFO] Tests run: 283, Failures: 0, Errors: 0, Skipped: 0
   [INFO] BUILD SUCCESS
   ```
   
   ```
   cd web && npm test -- K8sCertsPage.test.tsx 
NotificationDeliveriesPage.test.tsx SystemAlertsPage.test.tsx AclPage.test.tsx 
InstancePage.test.tsx MessagePage.test.tsx --run
    Test Files  6 passed (6)
         Tests  119 passed (119)
   ```
   
   Each export has its regression test: bounded row caps, filter round-trips, 
secret masking, and the exported payload shape.
   
   ```
   cd web && npm run lint
   ✖ 10 problems (0 errors, 10 warnings)   # the trunk baseline
   ```
   
   ```
   cd web && npx tsc -b --force
   (no output — exit 0)
   ```
   
   ### Checklist
   
   - [x] One coherent change; unrelated modifications are not bundled in (one 
purpose — operational exports — across the six inventories, per the grouping 
guideline #2107)
   - [x] Commit subject follows Conventional Commits
   - [x] Tests added or updated for non-trivial changes, test methods named 
`...Test`
   - [x] New UI text has both Chinese and English entries under `web/src/i18n/`
   - [x] Architecture constraints stay green (`mvn test` runs the ArchUnit 
checks)
   - [x] New source files carry the ASF license header
   - [ ] Documentation touched where behaviour changed (README / `docs/` / 
in-app help)
   


-- 
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