From a34ad49771ea1235dfcc55da2e36ec54eefedbb1 Mon Sep 17 00:00:00 2001 From: xiose Date: Thu, 30 Apr 2026 10:18:58 +0800 Subject: [PATCH] feat(publish): pass extraction warnings through confirm flow When files are ignored during SKILL.md subdirectory promotion, warnings are surfaced to the user via the existing precheck confirm dialog. --- .../controller/portal/SkillPublishController.java | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-) diff --git a/server/skillhub-app/src/main/java/com/iflytek/skillhub/controller/portal/SkillPublishController.java b/server/skillhub-app/src/main/java/com/iflytek/skillhub/controller/portal/SkillPublishController.java index 3abdf5e8..a061afc1 100644 --- a/server/skillhub-app/src/main/java/com/iflytek/skillhub/controller/portal/SkillPublishController.java +++ b/server/skillhub-app/src/main/java/com/iflytek/skillhub/controller/portal/SkillPublishController.java @@ -59,12 +59,22 @@ public class SkillPublishController extends BaseApiController { SkillVisibility skillVisibility = SkillVisibility.valueOf(visibility.toUpperCase()); List entries; + List extractionWarnings; try { - entries = skillPackageArchiveExtractor.extract(file); + SkillPackageArchiveExtractor.ExtractionResult extractionResult = + skillPackageArchiveExtractor.extractWithWarnings(file); + entries = extractionResult.entries(); + extractionWarnings = extractionResult.warnings(); } catch (IllegalArgumentException e) { throw new DomainBadRequestException("error.skill.publish.package.invalid", e.getMessage()); } + if (!confirmWarnings && !extractionWarnings.isEmpty()) { + throw new DomainBadRequestException( + "error.skill.publish.precheck.confirmRequired", + String.join("\n", extractionWarnings)); + } + SkillPublishService.PublishResult publishResult = skillPublishService.publishFromEntries( namespace, entries,