feat: paginate Studio user management - #2541
Conversation
RockteMQ-AI
left a comment
There was a problem hiding this comment.
Summary
This PR modifies 8 file(s) with +532 -19 lines. Found 1 critical issue(s) that should be addressed before merging.
Findings
- [CRITICAL]
diff:1— Potential hardcoded credentials detected. Ensure secrets are not committed and use environment variables or secret management.
Automated review by github-manager-bot
Additional notes (not anchored to a changed line)
- [CRITICAL]
diff:1— Potential hardcoded credentials detected. Ensure secrets are not committed and use environment variables or secret management. (line outside diff)
RockteMQ-AI
left a comment
There was a problem hiding this comment.
Summary
This PR adds server-side pagination for Studio user management with search, role filter, and status filter. Clean implementation — proper database-level pagination via MyBatis-Plus Page, thorough input validation (page/pageSize/search length bounds), and excellent test coverage across both backend and frontend.
The frontend race-condition handling with requestSeqRef and the edge-case recovery (empty page beyond last page → auto-correct) are well done.
LGTM — no blocking issues.
Automated review by github-manager-bot
Summary
GET /api/studio-userswith defaultpage=1,pageSize=20, and a 100-row maximumusername ASC, id ASCordering and perform filtering/pagination in MyBatis-PlusWhy
The page previously loaded every Studio account in one request and had no way to narrow a growing inventory. This also made it inconsistent with the cloud credential and data source management pages, which are server-paginated.
Tests
AuthServiceDatabaseTest,StudioUserControllerTest— 13 tests passedClusterPagetest initially timed out under full-suite load, then its file passed in isolation with 15/15 testsnpm run lint -- --quiet: 0 errors (3 pre-existing warnings)npm run build: passedgit diff --check: passedProduction changes: 198 additions / 19 deletions across backend and frontend, naturally exceeding 100 production lines without test padding.
Closes #2540