문서 고도화 다음 단계를 반영해 XLSX·HTML·PPT 품질 게이트를 강화했습니다

핵심 수정사항:
- ExcelSkill summary_sheet에 trend_series를 추가해 Trend Dashboard 블록을 렌더링하고, workbook quality review가 dashboard형 summary 구성을 더 정확히 평가하도록 확장했습니다.
- HtmlSkill은 print=true인데 print_header/print_footer가 없는 경우 기본 print frame을 자동 생성하도록 보강했고, ArtifactQualityReviewService는 print-ready 문서의 frame/decision/evidence/cover 부족을 추가 경고로 반환합니다.
- DeckPlanningService는 comparison, roadmap, executive_summary, kpi_dashboard 슬라이드의 최소 구조를 자동 보정하고, DeckQualityReviewService는 slide-level quality gate를 추가해 긴 headline, 과밀 슬라이드, 옵션 부족, 표/차트 데이터 누락을 Slide N 경고로 요약합니다.
- DeckQualityReviewServiceTests, ExcelSkillDashboardSummaryTests, HtmlSkillPrintFrameTests를 확장해 회귀 검증을 강화했습니다.

검증 결과:
- dotnet build src/AxCopilot/AxCopilot.csproj -c Release -v minimal -p:OutputPath=bin\\verify_doc_next3\\ -p:IntermediateOutputPath=obj\\verify_doc_next3\\ : 경고 0 / 오류 0
- dotnet test src/AxCopilot.Tests/AxCopilot.Tests.csproj -c Release -v minimal --filter "DeckQualityReviewServiceTests|PptxSkillAutoRepairTests|PptxSkillConsultingDeckTests|ExcelSkillDashboardSummaryTests|ExcelSkillSummarySheetTests|HtmlSkillPrintFrameTests|HtmlSkillConsultingSectionsTests|ArtifactQualityReviewServiceTests" -p:OutputPath=bin\\verify_doc_next3_tests\\ -p:IntermediateOutputPath=obj\\verify_doc_next3_tests\\ : 통과 13
This commit is contained in:
2026-04-14 23:16:00 +09:00
parent 1edeffa206
commit 2e36f2fef1
10 changed files with 350 additions and 5 deletions

View File

@@ -54,4 +54,33 @@ public class DeckQualityReviewServiceTests
review.Strengths.Should().Contain(strength => strength.Contains("Executive Summary"));
review.Issues.Should().NotContain(issue => issue.Severity == DeckReviewSeverity.Critical);
}
[Fact]
public void ReviewDeck_ShouldSurfaceSlideLevelQualityAlerts()
{
using var slides = JsonDocument.Parse(
"""
[
{ "layout": "title", "title": "Growth Strategy" },
{
"layout": "executive_summary",
"title": "Executive Summary",
"headline": "This headline is intentionally very long so that it exceeds the preferred consulting slide headline length and triggers the slide quality gate.",
"summary_points": ["Only one point"]
},
{
"layout": "comparison",
"title": "Options",
"headline": "Compare options",
"options": [{ "name": "A", "pros": "Fast", "cons": "Shallow", "verdict": "Only option" }]
}
]
""");
var review = DeckQualityReviewService.ReviewDeck("Alert Deck", slides.RootElement, hasTemplate: false, autoRepairCount: 0);
review.Issues.Should().Contain(issue => issue.Message.Contains("Slide 2"));
review.Issues.Should().Contain(issue => issue.Message.Contains("headline is too long"));
review.Issues.Should().Contain(issue => issue.Message.Contains("comparison slide needs at least two options"));
}
}