Skip to content

Feat hzw 261106 - #4339

Open
lijiayang619 wants to merge 4 commits into
developfrom
feat_hzw_261106
Open

lijiayang619 wants to merge 4 commits into
developfrom
feat_hzw_261106

Conversation

@lijiayang619

Copy link
Copy Markdown
Contributor

No description provided.

hzw110204 and others added 4 commits November 10, 2026 10:23
Integrate develop through 652d1c1 while preserving unified resource repository workflows and independent skill creation dialogs.

Resolve relocated repository implementations, keep compatible route re-exports, and migrate remaining repository controls to native Ant Design after develop removed Standard wrappers. Honor role unions in review visibility and decisions, preserve explicit repository grants and same-status authorization, and retain legacy review status display.

Validation:
- Complete frontend TypeScript check passed in an isolated temporary environment.
- Resource repository/skill/multi-role component tests: 162 passed; skill helper tests: 5 passed.
- Targeted backend regressions: 638 passed across 19 isolated modules, including new multi-role review scope assertions.
- Additional artifact/preview regressions: 58 passed, 2 unchanged DOCX background tests failed on jsdom box-shadow CSS assertions.
- Selected-file lint retains 9 no-explicit-any errors also reproduced on the pre-merge agent-config-actions source; no new lint errors.
- Copyright check passed for all 1089 changed source files. Branch diff against develop passes whitespace checks; merged SQL migrations remain untouched.
- Formal D1-D5 asset validation could not run because local Python lacks openpyxl. No live end-to-end acceptance or deployment performed.
- Temporary frontend dependencies use available Next 16.0.10, Vitest 4.1.12 and jsdom 26; repository package manifests and lockfiles were not altered for testing.
)
results.append({**result, "success": True})

return JSONResponse(status_code=HTTPStatus.OK, content={"status": "success", "data": results})

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

🟡 Changes recommended

Unresolved defects break administrator review access, submission-status display, and legacy notification navigation, while outdated fixtures, uncollected tests, and invalid E2E metadata undermine verification.

7 open issues
What changed in this PR

This PR develops Nexent’s unified resource repository for Agents, MCP services, and Skills. It introduces independent review records and shared repository UI components while retaining compatibility exports for existing pages.

Changes:

  • Add review persistence, shared transactions, post-commit notifications, and installation-source tracking.
  • Connect frontend services, navigation, types, and presentation controls to unified repository workflows.
  • Extend backend and frontend regression coverage and add formal test definitions and scenario bindings.
File Description
test/​backend/​services/​test_repository_skill_upload_cleanup.py Tests cleanup after failed Skill preparation.
test/​backend/​services/​test_repository_same_status_authorization.py Tests authorization for unchanged statuses.
test/​backend/​services/​test_repository_mcp_pending_notifications.py Tests submission delegation and notification recipients.
test/​backend/​services/​test_mcp_record_edit_permission.py Tests MCP edit-permission rules.
test/​backend/​services/​test_mcp_publication_state.py Tests publication state and author visibility.
test/​backend/​management/​test_repository_transactions.py Tests transaction ownership and notification ordering.
test/​backend/​management/​test_repository_review_contracts.py Tests review validation and pagination contracts.
test/​backend/​database/​test_skill_repository_db.py Extends mocked review metadata.
test/​backend/​database/​test_notification_db.py Tests review and repository notification IDs.
test/​backend/​database/​test_market_mcp_db.py Adds SQL expressions for review-field mocks.
test/​backend/​database/​test_agent_repository_db.py Updates review metadata and summary expectations.
test/​backend/​app/​test_skill_repository_app.py Isolates latest-review projection queries.
test/​backend/​app/​test_remote_mcp_app.py Isolates latest-review projection queries.
test/​backend/​app/​test_agent_repository_app.py Tests identity forwarding and sorting selectors.
test/​backend/​app/​test_agent_app.py Isolates paged Agent review projections.
test-e2e/​infra/​config/​resource-center.schema.json Defines scenario environment configuration.
test-e2e/​infra/​config/​resource-center.example.json Provides example scenario configuration.
test-e2e/​infra/​automation/​shared/​resource_center.py Launches backend scenarios inside configured containers.
test-e2e/​features/​RESOURCE-CENTER-REVIEW/​feature.yaml Defines unified review acceptance rules.
test-e2e/​features/​RESOURCE-CENTER-REVIEW/​cases.md Lists review cases and statuses.
test-e2e/​features/​RESOURCE-CENTER-MANAGE/​feature.yaml Defines repository management acceptance rules.
test-e2e/​features/​RESOURCE-CENTER-MANAGE/​cases.md Lists management cases and statuses.
test-e2e/​features/​RESOURCE-CENTER-LIFECYCLE/​feature.yaml Defines submission lifecycle and migration rules.
test-e2e/​features/​RESOURCE-CENTER-LIFECYCLE/​cases.md Lists lifecycle cases and statuses.
test-e2e/​features/​RESOURCE-CENTER-ACCESS/​feature.yaml Defines navigation and access rules.
test-e2e/​features/​RESOURCE-CENTER-ACCESS/​cases.md Lists access cases and statuses.
test-e2e/​changes/​requirements/​SKILL-CHAT-CREATE-MODAL-20261112.md Records dialog scope and verification limitations.
test-e2e/​cases/​RESOURCE-CENTER-REVIEW-D2-002/​test.py Invokes review-detail scenarios.
test-e2e/​cases/​RESOURCE-CENTER-REVIEW-D2-002/​execution.yaml Binds review-detail acceptance checks.
test-e2e/​cases/​RESOURCE-CENTER-REVIEW-D2-001/​test.py Invokes authorized review-list scenarios.
test-e2e/​cases/​RESOURCE-CENTER-REVIEW-D2-001/​execution.yaml Binds review-list acceptance checks.
test-e2e/​cases/​RESOURCE-CENTER-LIFECYCLE-D5-002/​test.py Invokes upgrade and migration scenarios.
test-e2e/​cases/​RESOURCE-CENTER-LIFECYCLE-D5-002/​execution.yaml Binds migration acceptance checks.
test-e2e/​cases/​RESOURCE-CENTER-LIFECYCLE-D5-001/​test.py Invokes reliability scenarios.
test-e2e/​cases/​RESOURCE-CENTER-LIFECYCLE-D5-001/​execution.yaml Binds reliability acceptance checks.
test-e2e/​cases/​RESOURCE-CENTER-ACCESS-D5-001/​test.py Invokes access and lifecycle scenarios.
test-e2e/​cases/​RESOURCE-CENTER-ACCESS-D5-001/​execution.yaml Binds access acceptance checks.
frontend/​types/​skillRepository.ts Adds installation, publication, and review metadata.
frontend/​types/​resourceReview.ts Defines unified review API types.
frontend/​types/​resourceRepository.ts Defines repository navigation targets.
frontend/​types/​notification.ts Adds review notifications and string IDs.
frontend/​types/​mcpTools.ts Adds MCP review, author, and wire-response types.
frontend/​types/​agentRepository.ts Adds publication sorting and review metadata.
frontend/​types/​agentConfig.ts Adds latest-review metadata to Agents.
frontend/​tests/​component/​skillRepositoryIcon.test.mjs Tests Skill icon classification.
frontend/​tests/​component/​skillGroupSelection.test.tsx Tests group selection and loading states.
frontend/​tests/​component/​skillDetailFiles.test.mjs Tests nested file-tree filtering.
frontend/​tests/​component/​skillCreationFiles.test.tsx Tests draft editing and path validation.
frontend/​tests/​component/​resourceRepositoryCard.test.tsx Tests repository card action placement.
frontend/​tests/​component/​repositorySkillDetailFiles.test.tsx Tests frozen archive display and errors.
frontend/​tests/​component/​repositoryPagination.test.tsx Updates pagination interaction expectations.
frontend/​tests/​component/​myAgentOwnershipRemoval.test.tsx Updates Agent fixtures and shared-component mocks.
frontend/​tests/​component/​myAgentMainBadge.test.tsx Updates navigation and icon mocks.
frontend/​tests/​component/​mcpUnpublishProtocol.test.tsx Tests non-destructive MCP unpublishing.
frontend/​tests/​component/​mcpCommunityRecovery.test.tsx Updates shared MCP component mocks.
frontend/​tests/​component/​casRepositoryIdentity.test.tsx Tests distinct creation and publication timestamps.
frontend/​tests/​component/​agentUsageGuide.test.tsx Updates navigation and settings mocks.
frontend/​services/​skillRepositoryService.ts Uses review submissions and adds deletion APIs.
frontend/​services/​resourceReviewService.ts Implements unified review requests.
frontend/​services/​mcpService.ts Forwards MCP author display names.
frontend/​services/​agentVersionService.ts Extends version metadata types.
frontend/​services/​agentRepositoryService.ts Routes Agent applications through review submissions.
frontend/​services/​agentConfigService.ts Preserves latest-review metadata in Agent mapping.
frontend/​lib/​skillRepositoryIcon.ts Classifies Skill icons from metadata.
frontend/​lib/​skillDetailFiles.ts Builds searchable nested file trees.
frontend/​lib/​notificationNavigation.ts Adds unified review navigation.
frontend/​lib/​notificationMessage.ts Formats notifications by reviewed resource type.
frontend/​hooks/​useRepositoryTagPredicates.ts Restores validated tag filters from query state.
frontend/​hooks/​useRepositoryQueryState.ts Shares URL-backed filters and page sizing.
frontend/​hooks/​useRepositoryPresentation.ts Defines shared repository presentation context.
frontend/​hooks/​resourceReview/​useResourceReviews.ts Adds review queries, decisions, and cache invalidation.
frontend/​hooks/​agentRepository/​useAgentRepositoryListings.ts Retains compatible data during page changes.
frontend/​hooks/​agent/​useAgentVersionDetail.ts Makes version-detail caching configurable.
frontend/​const/​resourceRepository.ts Defines repository route and tab constants.
frontend/​const/​mcpTools.ts Adds MCP edit-drawer sizing.
frontend/​components/​tag/​RepositoryTagFilter.tsx Adds unified repository tag selection.
frontend/​components/​resource/​ResourceDetail.tsx Adds Agent and MCP detail drawers.
frontend/​components/​resource/​CreateResourceCard.tsx Supports compact list-layout creation buttons.
frontend/​components/​repository/​skill/​components/​SkillTypeIcon.tsx Renders metadata-based Skill icons.
frontend/​components/​repository/​skill/​components/​skillRepositoryShared.ts Centralizes Skill repository helpers.
frontend/​components/​repository/​skill/​components/​SkillRepositoryReviewConfirmModal.tsx Relocates Skill review confirmation UI.
frontend/​components/​repository/​skill/​components/​CreateNewSkillCard.tsx Relocates the Skill creation control.
frontend/​components/​repository/​ResourceReviewLink.tsx Links review status to unified review details.
frontend/​components/​repository/​ResourcePublishedAt.tsx Displays publication time or unknown status.
frontend/​components/​repository/​mcp/​components/​shared/​StatusBadge.tsx Relocates shared MCP status badges.
frontend/​components/​repository/​mcp/​components/​shared/​McpGroupSelectionTable.tsx Adds paginated MCP group selection.
frontend/​components/​repository/​mcp/​components/​shared/​JsonPreviewModal.tsx Relocates JSON preview UI.
frontend/​components/​repository/​mcp/​components/​shared/​ContainerPortField.tsx Relocates container-port controls.
frontend/​components/​repository/​mcp/​components/​PublishedServiceCard.tsx Relocates published MCP cards.
frontend/​components/​repository/​mcp/​components/​McpServicesFilterBar.tsx Relocates MCP service filters.
frontend/​components/​repository/​mcp/​components/​McpServiceCard.tsx Relocates local MCP cards.
frontend/​components/​repository/​mcp/​components/​AddMcpServiceCard.tsx Relocates the MCP creation control.
frontend/​components/​repository/​mcp/​components/​add/​community/​McpCommunityToolbar.tsx Relocates community search and filters.
frontend/​components/​repository/​mcp/​components/​add/​community/​McpCommunityRequestError.tsx Relocates community retry UI.
frontend/​components/​repository/​mcp/​components/​add/​community/​McpCommunityCardList.tsx Relocates community listing and pagination.
frontend/​components/​repository/​mcp/​components/​add/​community/​McpCommunityCard.tsx Relocates community cards and quick-add actions.
frontend/​components/​repository/​mcp/​components/​add/​community/​AddMcpServiceCommunitySection.tsx Relocates community browsing coordination.
frontend/​components/​repository/​mcp/​components/​add/​AddMcpServiceModal.tsx Presents MCP creation in a guarded drawer.
frontend/​components/​repository/​agent/​components/​RepositoryAgentIcon.tsx Relocates repository icons with class customization.
frontend/​components/​repository/​agent/​components/​MyAgentIcon.tsx Relocates uploaded Agent icon rendering.
frontend/​components/​repository/​agent/​components/​CreateNewAgentCard.tsx Relocates the Agent creation control.
frontend/​components/​navigation/​SideNavigation.tsx Makes resource space a navigation destination.
frontend/​app/​[locale]/​skill-space/​components/​skillRepositoryShared.ts Re-exports shared Skill helpers.
frontend/​app/​[locale]/​skill-space/​components/​SkillRepositoryReviewConfirmModal.tsx Preserves the legacy confirmation import.
frontend/​app/​[locale]/​skill-space/​components/​MineApplyListingModal.tsx Preserves the legacy application-modal import.
frontend/​app/​[locale]/​skill-space/​components/​CreateNewSkillCard.tsx Preserves the legacy creation-card import.
frontend/​app/​[locale]/​resource-space/​page.tsx Adds the unified repository route.
frontend/​app/​[locale]/​mcp-space/​components/​shared/​StatusBadge.tsx Re-exports shared status badges.
frontend/​app/​[locale]/​mcp-space/​components/​shared/​JsonPreviewModal.tsx Re-exports shared JSON previews.
frontend/​app/​[locale]/​mcp-space/​components/​shared/​ContainerPortField.tsx Re-exports shared port controls.
frontend/​app/​[locale]/​mcp-space/​components/​PublishedServiceCard.tsx Re-exports shared published cards.
frontend/​app/​[locale]/​mcp-space/​components/​McpServicesFilterBar.tsx Re-exports shared service filters.
frontend/​app/​[locale]/​mcp-space/​components/​McpServiceCard.tsx Re-exports shared service cards.
frontend/​app/​[locale]/​mcp-space/​components/​McpRepositoryReviewConfirmModal.tsx Preserves the legacy review-modal import.
frontend/​app/​[locale]/​mcp-space/​components/​AddMcpServiceCard.tsx Re-exports the shared creation control.
frontend/​app/​[locale]/​mcp-space/​components/​add/​community/​McpCommunityToolbar.tsx Re-exports the community toolbar.
frontend/​app/​[locale]/​mcp-space/​components/​add/​community/​McpCommunityRequestError.tsx Re-exports community retry UI.
frontend/​app/​[locale]/​mcp-space/​components/​add/​community/​McpCommunityCardList.tsx Re-exports community listing UI.
frontend/​app/​[locale]/​mcp-space/​components/​add/​community/​McpCommunityCard.tsx Re-exports community cards.
frontend/​app/​[locale]/​mcp-space/​components/​add/​community/​AddMcpServiceCommunitySection.tsx Re-exports community browsing coordination.
frontend/​app/​[locale]/​mcp-space/​components/​add/​AddMcpServiceModal.tsx Re-exports the shared creation drawer.
frontend/​app/​[locale]/​agent-space/​components/​RepositoryAgentIcon.tsx Re-exports repository Agent icons.
frontend/​app/​[locale]/​agent-space/​components/​MyAgentIcon.tsx Re-exports local Agent icons.
frontend/​app/​[locale]/​agent-space/​components/​MineApplyListingModal.tsx Exposes the shared application modal.
frontend/​app/​[locale]/​agent-space/​components/​CreateNewAgentCard.tsx Re-exports the Agent creation control.
frontend/​app/​[locale]/​agent-space/​components/​AgentRepositoryReviewConfirmModal.tsx Preserves the legacy review-modal import.
deploy/​sql/​migrations/​v2.8.0_003_repository_review_indexes.sql Indexes active Skill installation sources.
deploy/​sql/​migrations/​v2.8.0_002_repository_review_metadata.sql Adds the Skill installation-source column.
backend/​management/​services/​repository/​review_notifications.py Defers review notifications until commit.
backend/​management/​services/​repository/​agent/​listing.py Adds visibility filtering and publication/download sorting.
backend/​management/​services/​repository/​agent/​common.py Includes publication time in summaries.
backend/​management/​services/​mcp/​service.py Checks deletion permissions and resolves publication/authors.
backend/​management/​services/​mcp/​permission.py Centralizes MCP edit-permission checks.
backend/​management/​db/​skill/​repository.py Persists installation sources and shares commit ownership.
backend/​management/​db/​skill/​models.py Adds source links and review projections.
backend/​management/​db/​resource_review_model.py Defines independent review persistence.
backend/​management/​db/​repository_transactions.py Adds shared transactions, callbacks, and source locks.
backend/​management/​db/​repository_reviews.py Implements authorized review queries.
backend/​management/​db/​repository_review_fields.py Projects review metadata onto repository models.
backend/​management/​db/​notification/​repository.py Defers deactivation and exposes typed notification IDs.
backend/​management/​db/​models/​__init__.py Exports the review model.
backend/​management/​db/​mcp/​models.py Adds MCP review projections.
backend/​management/​db/​client.py Reuses repository-owned database sessions.
backend/​management/​db/​agent/​models.py Adds Agent review projections.
backend/​management/​db/​agent/​catalog.py Adds source locking and review-aware summaries.
backend/​management/​api/​skill/​skill_repository.py Adds installation options, review summaries, and deletion routes.
backend/​management/​api/​mcp/​remote_mcp.py Returns authors/reviews and maps deletion denials.
backend/​management/​api/​application.py Registers unified review routes.
backend/​management/​api/​agent/​agent.py Attaches reviews to paged Agent responses.
backend/​management/​api/​agent/​agent_repository.py Forwards identity/sorting and attaches review summaries.
backend/​contracts/​tool.py Defines batch deletion and publication sorting inputs.
backend/​contracts/​errors/​exceptions.py Adds a review-conflict exception.
backend/​contracts/​constants/​constants.py Registers the review notification resource type.

Review effort: Balanced

# Order the merged tenant+official set as one list; ordering only in
# SQL would interleave the two query blocks incorrectly.
records = _order_listings_by_publish_time(records)
if user_id is not None and _get_user_role(user_id) != "ADMIN":
Comment on lines +293 to +296
return buildResourceRepositoryHref(locale, {
tab: "review",
resourceType: type,
});
@@ -49,6 +49,7 @@ export const getMcpServerList = async (tenantId?: string | null) => {
const formattedData = (data.remote_mcp_server_list || []).map((server: any) => {
return {
service_name: server.remote_mcp_server_name,
author_display_name: server.author_display_name,
// Copyright (c) 2025-2026 Huawei Technologies Co., Ltd. All rights reserved.

import assert from "node:assert/strict";
import { test } from "node:test";
Comment on lines +3 to +6
implementations:
- framework: pytest
file: test.py
selector: test_per_type_scopes_and_direct_decision_authorization
id: RESOURCE-CENTER
name: 资源仓库与统一审核
feature:
feature_id: RESOURCE-CENTER-REVIEW
try:
result = subprocess.run([
"docker", "exec", "-e", f"PYTHONPATH={configuration['backend_directory']}", "-w", configuration["backend_directory"],
container, configuration["python"], remote + "/backend_scenarios.py", scenario,

This branch has not been deployed

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

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

4 participants