Skip to content

[codex] Complete portal OpenAPI migration#5618

Open
nobodyiam wants to merge 22 commits into
apolloconfig:masterfrom
nobodyiam:codex/portal-openapi-final-migration
Open

[codex] Complete portal OpenAPI migration#5618
nobodyiam wants to merge 22 commits into
apolloconfig:masterfrom
nobodyiam:codex/portal-openapi-final-migration

Conversation

@nobodyiam
Copy link
Copy Markdown
Member

@nobodyiam nobodyiam commented May 25, 2026

What's the purpose of this PR

Complete the remaining Apollo Portal OpenAPI migration by moving the final Portal UI management surfaces to generated OpenAPI contracts and routes. This PR also updates apollo-portal to consume the released apollo-openapi v0.3.4 spec.

Which issue(s) this PR fixes:

N/A.

Brief changelog

  • Add Portal-session OpenAPI controllers for remaining Portal management APIs, including user/consumer lookup, audit, commit and release history, page settings, favorites, global search, server config, system info, config import/export, app search, and namespace item import/export.
  • Move the remaining frontend API URL inventory to /openapi/v1/..., keeping UI-local response adapters where current Portal screens require legacy shapes.
  • Update the migration tracking docs and pin apollo-portal to the released apollo-openapi v0.3.4 tag.

Follow this checklist to help us incorporate your contribution quickly and easily:

  • Read the Contributing Guide before making this pull request.
  • Write a pull request description that is detailed enough to understand what the pull request does, how, and why.
  • Write necessary unit tests to verify the code.
  • Run mvn clean test to make sure this pull request doesn't break anything.
  • Run mvn spotless:apply to format your code.
  • Update the CHANGES log.

Tests

  • ./mvnw clean test (BUILD SUCCESS, 02:50)
  • ./mvnw -B -pl apollo-assembly -am -DskipTests package (BUILD SUCCESS, 36.004 s)
  • PORTAL_USERNAME=apollo PORTAL_PASSWORD=admin ./e2e/portal-e2e/scripts/wait-for-ready.sh
  • (cd e2e/portal-e2e && npm ci && npx playwright install chromium && BASE_URL=http://127.0.0.1:8070 PLAYWRIGHT_WORKERS=2 npm run test:e2e:ci) (19 passed, 1.3m)
  • ./mvnw spotless:apply
  • git diff --check

OpenAPI contract

Summary by CodeRabbit

  • New Features

    • Added OpenAPI v1 portal management and user APIs (audit, commits, export/import, consumer/token, favorites, global search, system info, and user CRUD).
  • Improvements

    • App listings now include enriched owner display names.
    • create-app now records audit entries; app deletion requires super-admin.
  • Refactor

    • Frontend routes and services migrated to standardized /openapi/v1 endpoints.
  • Tests

    • Added/expanded tests for management/user APIs, permissions, export/import, and audit flows.
  • Chores

    • OpenAPI baseline bumped to v0.3.4; docs and inventory updated.

Review Change Stack

Copilot AI review requested due to automatic review settings May 25, 2026 01:50
@dosubot dosubot Bot added the size:XXL This PR changes 1000+ lines, ignoring generated files. label May 25, 2026
@coderabbitai
Copy link
Copy Markdown
Contributor

coderabbitai Bot commented May 25, 2026

Note

Reviews paused

It looks like this branch is under active development. To avoid overwhelming you with review comments due to an influx of new commits, CodeRabbit has automatically paused this review. You can configure this behavior by changing the reviews.auto_review.auto_pause_after_reviewed_commits setting.

Use the following commands to manage reviews:

  • @coderabbitai resume to resume automatic reviews.
  • @coderabbitai review to trigger a single review.

Use the checkboxes below for quick actions:

  • ▶️ Resume reviews
  • 🔍 Trigger review
📝 Walkthrough

Walkthrough

Completes Portal UI management OpenAPI migration: bump OpenAPI spec to v0.3.4, add PortalManagementController and PortalUserController, enrich OpenAppDTOs with owner display names, migrate frontend calls to /openapi/v1, enhance URL-collection tooling, and update tests/docs.

Changes

Portal OpenAPI v1 Migration

Layer / File(s) Summary
OpenAPI Spec Version Baseline and Release Notes
CHANGES.md, apollo-portal/pom.xml
OpenAPI spec URL bumped to v0.3.4 and CHANGES release note updated.
App DTO User Info Enrichment
apollo-portal/src/main/java/com/ctrip/framework/apollo/openapi/server/service/ServerAppOpenApiService.java, apollo-portal/src/main/java/com/ctrip/framework/apollo/openapi/util/OpenApiModelConverters.java, apollo-portal/src/main/java/com/ctrip/framework/apollo/portal/enricher/adapter/OpenAppDtoUserInfoEnrichedAdapter.java, apollo-portal/src/test/java/com/ctrip/framework/apollo/openapi/server/service/ServerAppOpenApiServiceTest.java
ServerAppOpenApiService now injects AdditionalUserInfoEnrichService and enriches OpenAppDTO lists; converters add user-list and OpenUserDTO→UserPO helpers; adapter and tests added.
Portal User Management Endpoints
apollo-portal/src/main/java/com/ctrip/framework/apollo/openapi/v1/controller/PortalUserController.java, apollo-portal/src/test/java/com/ctrip/framework/apollo/openapi/v1/controller/PortalUserControllerTest.java
New PortalUserController implements PortalUserManagementApi with session-enforced user endpoints (get current user, search, create/update, change enabled) and unit tests for auth and mapping.
Portal Admin/Management Endpoints
apollo-portal/src/main/java/com/ctrip/framework/apollo/openapi/v1/controller/PortalManagementController.java, apollo-portal/src/test/java/com/ctrip/framework/apollo/openapi/v1/controller/PortalManagementControllerTest.java
Adds PortalManagementController implementing PortalManagementApi: audit logs, permission-aware commits, consumer/token/role management, favorites, server/config DB ops, system info/health, app/namespace export-import (ZIP and file attachments), search, and release-history endpoints with unit tests validating permission/visibility rules.
Frontend Angular Services OpenAPI v1 Integration
apollo-portal/src/main/resources/static/scripts/services/...
All Angular $resource URLs updated to /openapi/v1/...; AppService.create() payload handling and response resolution adjusted.
Frontend Direct API Call Updates
apollo-portal/src/main/resources/static/scripts/controller/ConfigExportController.js, apollo-portal/src/main/resources/static/scripts/directive/*
Controllers and directives updated to call OpenAPI v1 endpoints for export/import, app search, and user selectors.
Frontend URL Collection Script Enhancement
scripts/openapi/collect_portal_frontend_urls.py, scripts/openapi/collect_portal_frontend_urls_test.py
Script extended to extract/concatenate fragment literals, resolve variable-based URL expressions, infer HTTP methods, add collect_file_urls() and --scripts-dir option; tests added for resource-base and direct-script scans.
AppController auth/audit & tests
apollo-portal/src/main/java/.../AppController.java, .../AppControllerParamBindLowLevelTest.java, .../AppControllerTest.java
Add @ApolloAuditLog to createApp, broaden createAppInEnv authorization rule, tighten deleteApp to super-admin; tests added/updated to assert annotations and authorize behavior.
Migration Tracking and Documentation Updates
docs/en/..., docs/zh/...
Docs regenerated to reflect OpenAPI v0.3.4 baseline and completed frontend migration inventory (131/131), with updated migration matrix and inventories.

Estimated code review effort

🎯 4 (Complex) | ⏱️ ~60 minutes

Possibly related PRs

Suggested labels

lgtm

Suggested reviewers

  • arrow1991
  • hezhangjian

Poem

🐰 OpenAPI hops, the Portal gleams anew,
DTOs wear names and frontend paths cut through.
Controllers guard and exports zip with care,
Scripts gather URLs from here and there.
A rabbit cheers — migration done, hooray!

🚥 Pre-merge checks | ✅ 4 | ❌ 1

❌ Failed checks (1 warning)

Check name Status Explanation Resolution
Docstring Coverage ⚠️ Warning Docstring coverage is 3.47% which is insufficient. The required threshold is 80.00%. Write docstrings for the functions missing them to satisfy the coverage threshold.
✅ Passed checks (4 passed)
Check name Status Explanation
Description Check ✅ Passed Check skipped - CodeRabbit’s high-level summary is enabled.
Title check ✅ Passed The title '[codex] Complete portal OpenAPI migration' directly summarizes the main objective of the PR, which is to complete the Apollo Portal OpenAPI migration by adding remaining controllers and updating frontend endpoints.
Linked Issues check ✅ Passed Check skipped because no linked issues were found for this pull request.
Out of Scope Changes check ✅ Passed Check skipped because no linked issues were found for this pull request.

✏️ Tip: You can configure your own custom pre-merge checks in the settings.

✨ Finishing Touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands and usage tips.

Copy link
Copy Markdown
Contributor

Copilot AI left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

Completes the Apollo Portal OpenAPI migration by moving the remaining Portal UI management endpoints and frontend call sites to /openapi/v1/..., updating the portal to consume the released apollo-openapi spec v0.3.4, and enhancing tooling/docs to track the migration status.

Changes:

  • Adds Portal-session-only OpenAPI v1 controllers for remaining Portal management surfaces (users/consumers/audit/favorites/search/system/server-config/import/export, etc.).
  • Migrates remaining frontend JS services/controllers/directives to /openapi/v1/... routes and updates the generated URL inventory to include direct $http/download/select2 calls outside static/scripts/services.
  • Updates OpenAPI enrichment for App owner display name and bumps apollo-portal OpenAPI spec URL to v0.3.4, along with refreshed migration tracking docs.

Reviewed changes

Copilot reviewed 32 out of 32 changed files in this pull request and generated 2 comments.

Show a summary per file
File Description
scripts/openapi/collect_portal_frontend_urls.py Extends URL inventory extraction to cover direct API calls and variable-based URL expressions; updates summary labeling to “Source”.
scripts/openapi/collect_portal_frontend_urls_test.py Adds test coverage for scanning non-service JS files (controllers/directives) and direct download/select2 calls.
docs/zh/contribution/apollo-portal-openapi-migration-tracking.md Updates migration status and contract target to v0.3.4 and reflects full frontend OpenAPI coverage.
docs/zh/contribution/apollo-portal-openapi-frontend-url-inventory.md Refreshes generated URL inventory (now “Source”), reflecting 131/131 OpenAPI entries and additional scanned files.
docs/en/contribution/apollo-portal-openapi-migration-tracking.md English migration tracking update to v0.3.4 and full frontend OpenAPI adoption.
docs/en/contribution/apollo-portal-openapi-frontend-url-inventory.md English URL inventory refresh and inclusion of additional sources outside service files.
apollo-portal/src/test/java/com/ctrip/framework/apollo/openapi/v1/controller/PortalUserControllerTest.java Adds unit tests for new Portal user management OpenAPI controller behavior and auth-type gating.
apollo-portal/src/test/java/com/ctrip/framework/apollo/openapi/v1/controller/PortalManagementControllerTest.java Adds unit tests for selected Portal management OpenAPI endpoints (page settings, commit visibility, export).
apollo-portal/src/test/java/com/ctrip/framework/apollo/openapi/server/service/ServerAppOpenApiServiceTest.java Updates service test to cover/enforce owner display name enrichment via AdditionalUserInfoEnrichService.
apollo-portal/src/main/resources/static/scripts/services/UserService.js Migrates user APIs to /openapi/v1/user and /openapi/v1/users....
apollo-portal/src/main/resources/static/scripts/services/SystemInfoService.js Migrates system info/health calls to /openapi/v1/system-info....
apollo-portal/src/main/resources/static/scripts/services/ServerConfigService.js Migrates server config endpoints to /openapi/v1/server/....
apollo-portal/src/main/resources/static/scripts/services/ReleaseHistoryService.js Migrates release history endpoint to /openapi/v1/.../releases/histories.
apollo-portal/src/main/resources/static/scripts/services/GlobalSearchValueService.js Migrates global search item-info endpoint to /openapi/v1/global-search/....
apollo-portal/src/main/resources/static/scripts/services/FavoriteService.js Migrates favorites CRUD/reorder endpoints to /openapi/v1/favorites....
apollo-portal/src/main/resources/static/scripts/services/ExportService.js Migrates config import endpoint to /openapi/v1/import.
apollo-portal/src/main/resources/static/scripts/services/ConsumerService.js Migrates consumer/token/role APIs to /openapi/v1/....
apollo-portal/src/main/resources/static/scripts/services/CommonService.js Migrates page-settings endpoint to /openapi/v1/page-settings.
apollo-portal/src/main/resources/static/scripts/services/CommitService.js Migrates commit history endpoint to /openapi/v1/.../commits.
apollo-portal/src/main/resources/static/scripts/services/AuditLogService.js Migrates audit log endpoints to /openapi/v1/apollo/audit/....
apollo-portal/src/main/resources/static/scripts/services/AppService.js Migrates app CRUD/roles/system-role checks to OpenAPI routes and adapts create payload shape to OpenAPI contract.
apollo-portal/src/main/resources/static/scripts/directive/namespace-panel-directive.js Migrates namespace item export download URL to /openapi/v1/.../items/export.
apollo-portal/src/main/resources/static/scripts/directive/import-namespace-modal-directive.js Migrates namespace item import upload URL to /openapi/v1/.../items/import.
apollo-portal/src/main/resources/static/scripts/directive/directive.js Migrates app search and user selector select2 AJAX URLs to /openapi/v1/....
apollo-portal/src/main/resources/static/scripts/controller/ConfigExportController.js Migrates config export/import and app export/import URLs to /openapi/v1/....
apollo-portal/src/main/java/com/ctrip/framework/apollo/portal/enricher/adapter/OpenAppDtoUserInfoEnrichedAdapter.java Adds adapter to enrich OpenAppDTO owner display names via shared enrichment pipeline.
apollo-portal/src/main/java/com/ctrip/framework/apollo/openapi/v1/controller/PortalUserController.java Introduces Portal-session-only OpenAPI controller for current user, search, create/update, enable/disable.
apollo-portal/src/main/java/com/ctrip/framework/apollo/openapi/v1/controller/PortalManagementController.java Adds Portal-session-only OpenAPI controller for remaining UI management surfaces (audit, favorites, server config, import/export, app search, etc.).
apollo-portal/src/main/java/com/ctrip/framework/apollo/openapi/util/OpenApiModelConverters.java Adds converters for OpenUserDTOUserPO and list-based UserInfoOpenUserInfoDTO.
apollo-portal/src/main/java/com/ctrip/framework/apollo/openapi/server/service/ServerAppOpenApiService.java Enriches returned OpenAPI app DTOs with owner display names for Portal UI compatibility.
apollo-portal/pom.xml Pins apollo.openapi.spec.url to released apollo-openapi v0.3.4.

💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.

Copy link
Copy Markdown
Contributor

@coderabbitai coderabbitai Bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 7

🧹 Nitpick comments (1)
apollo-portal/src/main/resources/static/scripts/services/AppService.js (1)

162-169: ⚡ Quick win

Preserve backend create response when available.

Line 169 always resolves the original app, which drops any server-normalized/generated fields returned by create_app. Prefer returning result with a fallback.

Proposed fix
-            }, function () {
-                d.resolve(app);
+            }, function (result) {
+                d.resolve(result || app);
             }, function (result) {
🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@apollo-portal/src/main/resources/static/scripts/services/AppService.js`
around lines 162 - 169, The code currently always resolves the original app
object (d.resolve(app)) inside the success callback of app_resource.create_app,
discarding any server-normalized/generated fields; update the success callback
for app_resource.create_app to accept the server response (e.g., result) and
resolve with the server result if present, falling back to the original app
(e.g., d.resolve(result || app)); locate the callback passed to
app_resource.create_app in the block using appPayload and admins and replace the
fixed d.resolve(app) with a resolution that prefers the server response.
🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

Inline comments:
In
`@apollo-portal/src/main/java/com/ctrip/framework/apollo/openapi/v1/controller/PortalManagementController.java`:
- Around line 228-230: In PortalManagementController, validate the incoming env
string before calling Env.valueOf(...) or Env.transformEnv(...) (e.g., in calls
around commitService.find and commitService.findByKey) by using the same helper
used elsewhere to convert and reject unknown environments; if the conversion
yields Env.UNKNOWN or is invalid, return a 400 Bad Request instead of proceeding
(do this for all listed call sites including the ones around commitService.find,
findByKey and other handlers referenced in this file). Ensure each method checks
the validated Env result and only passes a valid Env into commitService.find,
commitService.findByKey, or any other service call, mirroring the existing
helper usage and error response pattern in this class.
- Around line 362-369: The method searchItemInfoByKeyOrValue currently calls
key.isEmpty() and value.isEmpty() which throws NPE if either query param is
missing; change the guard to treat null or empty the same (e.g., use
Objects.isNull(key) || key.isEmpty(), Strings.isNullOrEmpty(key) or
org.apache.commons.lang3.StringUtils.isEmpty(key)) and do the same for value,
then throw the existing BadRequestException when both are null/empty; leave the
call to globalSearchService.getAllEnvItemInfoBySearch(key, value, 0,
portalConfig.getPerEnvSearchMaxResults()) unchanged.

In
`@apollo-portal/src/main/java/com/ctrip/framework/apollo/openapi/v1/controller/PortalUserController.java`:
- Around line 85-89: Replace the inappropriate UnsupportedOperationException
with an access-control exception when permission is denied: in the conditional
that uses unifiedPermissionValidator.isSuperAdmin(), user.getUsername(),
userInfoHolder.getUser().getUserId(), user.getEnabled() and USER_ENABLED, throw
a proper access-denied exception (e.g.
org.springframework.security.access.AccessDeniedException) with a clear message
instead of UnsupportedOperationException so the framework returns an
authorization failure response.

In
`@apollo-portal/src/test/java/com/ctrip/framework/apollo/openapi/v1/controller/PortalManagementControllerTest.java`:
- Around line 19-24: The test class PortalManagementControllerTest still uses
JUnit 4 APIs and lacks class Javadoc; update it to JUnit 5 by replacing
org.junit.Assert static imports with org.junit.jupiter.api.Assertions (e.g.,
assertEquals, assertNotNull, assertTrue) and replace
`@RunWith`(MockitoJUnitRunner.class) with `@ExtendWith`(MockitoExtension.class),
convert any `@Test`(expected=...) usages to assertThrows in test methods, adjust
imports for org.junit.jupiter.api.Test, and ensure Mockito static imports (when,
verify, verifyNoInteractions) remain; finally add a short class-level Javadoc
describing the test purpose above the PortalManagementControllerTest class
declaration.

In
`@apollo-portal/src/test/java/com/ctrip/framework/apollo/openapi/v1/controller/PortalUserControllerTest.java`:
- Around line 19-20: The test class PortalUserControllerTest uses JUnit4;
migrate it to JUnit5 by replacing org.junit.Before and org.junit.After with
org.junit.jupiter.api.BeforeEach and AfterEach on the corresponding
setup/teardown methods, replace org.junit.Test imports with
org.junit.jupiter.api.Test, remove `@RunWith`(MockitoJUnitRunner.class) and
annotate the class with
`@ExtendWith`(org.mockito.junit.jupiter.MockitoExtension.class), update static
assert imports to org.junit.jupiter.api.Assertions (use
assertEquals/assertNotNull from JUnit Jupiter), and convert any
`@Test`(expected=...) usages to assertThrows(...) calls (wrap the code that should
throw inside a lambda and assert the thrown exception type) while keeping
existing Mockito mocks and method names intact (e.g., retain
PortalUserControllerTest class name and its setup/teardown method names).

In `@scripts/openapi/collect_portal_frontend_urls.py`:
- Line 323: Replace the fullwidth colon in the f-string "-
前端文件数:{service_count}" with a standard ASCII colon to resolve Ruff RUF001;
locate the f-string containing the symbol sequence "- 前端文件数:{service_count}" and
change the punctuation to "- 前端文件数: {service_count}" (keeping the same
interpolation of service_count) so the string no longer contains the ambiguous
Unicode colon.
- Around line 211-214: The branch handling collect_resource_base that calls
collect_resource_expression and sets method = "RESOURCE_BASE" must also resolve
variable references inside the extracted $resource(...) expression before
extracting paths; update the logic in that branch to detect when the expression
contains a variable name (e.g., `$resource(baseUrl, ...)`), look up and
substitute the variable from the existing variables/context map used elsewhere
in this script (same place where other variable resolution happens), then run
the path extraction on the resolved string and proceed with method
"RESOURCE_BASE". Ensure you use the same helper/resolution mechanism used by
other parts of the file so variable lookups are consistent with functions like
collect_resource_expression.

---

Nitpick comments:
In `@apollo-portal/src/main/resources/static/scripts/services/AppService.js`:
- Around line 162-169: The code currently always resolves the original app
object (d.resolve(app)) inside the success callback of app_resource.create_app,
discarding any server-normalized/generated fields; update the success callback
for app_resource.create_app to accept the server response (e.g., result) and
resolve with the server result if present, falling back to the original app
(e.g., d.resolve(result || app)); locate the callback passed to
app_resource.create_app in the block using appPayload and admins and replace the
fixed d.resolve(app) with a resolution that prefers the server response.
🪄 Autofix (Beta)

Fix all unresolved CodeRabbit comments on this PR:

  • Push a commit to this branch (recommended)
  • Create a new PR with the fixes

ℹ️ Review info
⚙️ Run configuration

Configuration used: defaults

Review profile: CHILL

Plan: Pro

Run ID: b8273947-ab75-47dd-bda6-51cbcf147f35

📥 Commits

Reviewing files that changed from the base of the PR and between 658e1a9 and 28bffa0.

📒 Files selected for processing (32)
  • CHANGES.md
  • apollo-portal/pom.xml
  • apollo-portal/src/main/java/com/ctrip/framework/apollo/openapi/server/service/ServerAppOpenApiService.java
  • apollo-portal/src/main/java/com/ctrip/framework/apollo/openapi/util/OpenApiModelConverters.java
  • apollo-portal/src/main/java/com/ctrip/framework/apollo/openapi/v1/controller/PortalManagementController.java
  • apollo-portal/src/main/java/com/ctrip/framework/apollo/openapi/v1/controller/PortalUserController.java
  • apollo-portal/src/main/java/com/ctrip/framework/apollo/portal/enricher/adapter/OpenAppDtoUserInfoEnrichedAdapter.java
  • apollo-portal/src/main/resources/static/scripts/controller/ConfigExportController.js
  • apollo-portal/src/main/resources/static/scripts/directive/directive.js
  • apollo-portal/src/main/resources/static/scripts/directive/import-namespace-modal-directive.js
  • apollo-portal/src/main/resources/static/scripts/directive/namespace-panel-directive.js
  • apollo-portal/src/main/resources/static/scripts/services/AppService.js
  • apollo-portal/src/main/resources/static/scripts/services/AuditLogService.js
  • apollo-portal/src/main/resources/static/scripts/services/CommitService.js
  • apollo-portal/src/main/resources/static/scripts/services/CommonService.js
  • apollo-portal/src/main/resources/static/scripts/services/ConsumerService.js
  • apollo-portal/src/main/resources/static/scripts/services/ExportService.js
  • apollo-portal/src/main/resources/static/scripts/services/FavoriteService.js
  • apollo-portal/src/main/resources/static/scripts/services/GlobalSearchValueService.js
  • apollo-portal/src/main/resources/static/scripts/services/ReleaseHistoryService.js
  • apollo-portal/src/main/resources/static/scripts/services/ServerConfigService.js
  • apollo-portal/src/main/resources/static/scripts/services/SystemInfoService.js
  • apollo-portal/src/main/resources/static/scripts/services/UserService.js
  • apollo-portal/src/test/java/com/ctrip/framework/apollo/openapi/server/service/ServerAppOpenApiServiceTest.java
  • apollo-portal/src/test/java/com/ctrip/framework/apollo/openapi/v1/controller/PortalManagementControllerTest.java
  • apollo-portal/src/test/java/com/ctrip/framework/apollo/openapi/v1/controller/PortalUserControllerTest.java
  • docs/en/contribution/apollo-portal-openapi-frontend-url-inventory.md
  • docs/en/contribution/apollo-portal-openapi-migration-tracking.md
  • docs/zh/contribution/apollo-portal-openapi-frontend-url-inventory.md
  • docs/zh/contribution/apollo-portal-openapi-migration-tracking.md
  • scripts/openapi/collect_portal_frontend_urls.py
  • scripts/openapi/collect_portal_frontend_urls_test.py

Comment thread scripts/openapi/collect_portal_frontend_urls.py Outdated
Comment thread scripts/openapi/collect_portal_frontend_urls.py Outdated
@nobodyiam
Copy link
Copy Markdown
Member Author

@codex review

Copy link
Copy Markdown

@chatgpt-codex-connector chatgpt-codex-connector Bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

💡 Codex Review

Here are some automated review suggestions for this pull request.

Reviewed commit: e61a83b9ad

ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".

Copy link
Copy Markdown

@chatgpt-codex-connector chatgpt-codex-connector Bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

💡 Codex Review

Here are some automated review suggestions for this pull request.

Reviewed commit: 84cc767ad5

ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".

@nobodyiam
Copy link
Copy Markdown
Member Author

@codex review

Copy link
Copy Markdown
Contributor

Copilot AI left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

Copilot reviewed 44 out of 44 changed files in this pull request and generated 6 comments.

@chatgpt-codex-connector
Copy link
Copy Markdown

Codex Review: Didn't find any major issues. Hooray!

ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".

@nobodyiam nobodyiam force-pushed the codex/portal-openapi-final-migration branch from f3ecda8 to 7852220 Compare May 30, 2026 09:28
Copy link
Copy Markdown

@chatgpt-codex-connector chatgpt-codex-connector Bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

💡 Codex Review

Here are some automated review suggestions for this pull request.

Reviewed commit: 7852220096

ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".

Copy link
Copy Markdown

@chatgpt-codex-connector chatgpt-codex-connector Bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

💡 Codex Review

Here are some automated review suggestions for this pull request.

Reviewed commit: 8f7a871f47

ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".

Copy link
Copy Markdown

@chatgpt-codex-connector chatgpt-codex-connector Bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

💡 Codex Review

Here are some automated review suggestions for this pull request.

Reviewed commit: ef0c5a6edf

ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".

Copy link
Copy Markdown

@chatgpt-codex-connector chatgpt-codex-connector Bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

💡 Codex Review

Here are some automated review suggestions for this pull request.

Reviewed commit: 804bc06968

ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".

@nobodyiam nobodyiam requested a review from Copilot May 31, 2026 09:38
@nobodyiam
Copy link
Copy Markdown
Member Author

@codex review

@chatgpt-codex-connector
Copy link
Copy Markdown

Codex Review: Didn't find any major issues. More of your lovely PRs please.

ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".

Copy link
Copy Markdown
Contributor

Copilot AI left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Copilot encountered an error and was unable to review this pull request. You can try again by re-requesting a review.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

size:XXL This PR changes 1000+ lines, ignoring generated files.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants