문서 고도화 다음 단계를 반영해 엑셀 summary와 DOCX 조립 품질을 끌어올렸습니다

핵심 수정사항:
- ExcelSkill summary_sheet에 decision_summary, scorecards, sheet_summaries를 추가해 dashboard형 summary 시트를 생성하도록 확장했습니다.
- ArtifactQualityReviewService의 workbook 리뷰 입력을 확장해 KPI/decision/detail summary 존재 여부를 품질 점수와 보완 포인트에 반영했습니다.
- DocumentAssemblerTool에 style_map 파라미터를 추가해 template 기반 DOCX 조립에서 title/heading/body 문단 스타일을 실제 Word 스타일로 매핑하도록 개선했습니다.
- DocumentAssemblerStyleMapTests, ExcelSkillDashboardSummaryTests를 추가하고 기존 ArtifactQualityReviewServiceTests를 갱신했습니다.

검증 결과:
- dotnet build src/AxCopilot/AxCopilot.csproj -c Release -v minimal -p:OutputPath=bin\\verify_doc_next2\\ -p:IntermediateOutputPath=obj\\verify_doc_next2\\ : 경고 0 / 오류 0
- dotnet test src/AxCopilot.Tests/AxCopilot.Tests.csproj -c Release -v minimal --filter "ArtifactQualityReviewServiceTests|DocumentAssemblerStyleMapTests|DocumentAssemblerDocxFeaturesTests|DocumentAssemblerSemanticTests|ExcelSkillDashboardSummaryTests|ExcelSkillSummarySheetTests|ExcelSkillExecutiveSummaryLinkTests|ExcelSkillDataValidationTests|ExcelSkillConditionalFormattingTests" -p:OutputPath=bin\\verify_doc_next2_tests\\ -p:IntermediateOutputPath=obj\\verify_doc_next2_tests\\ : 통과 11
This commit is contained in:
2026-04-14 23:06:53 +09:00
parent 3232db1b12
commit 1edeffa206
8 changed files with 471 additions and 56 deletions

View File

@@ -66,7 +66,10 @@ public sealed record WorkbookReviewInput(
int ConditionalFormattingCount,
bool HasSummarySheet,
bool HasHighlightSection,
bool HasActionSection);
bool HasActionSection,
bool HasScorecardSection,
bool HasDecisionSection,
bool HasSheetSummarySection);
public static class ArtifactQualityReviewService
{
@@ -192,6 +195,9 @@ public static class ArtifactQualityReviewService
if (input.ConditionalFormattingCount > 0) strengths.Add("Includes conditional formatting");
if (input.HasHighlightSection) strengths.Add("Includes highlight section");
if (input.HasActionSection) strengths.Add("Includes action section");
if (input.HasScorecardSection) strengths.Add("Includes KPI or scorecard section");
if (input.HasDecisionSection) strengths.Add("Includes decision summary");
if (input.HasSheetSummarySection) strengths.Add("Includes detail sheet summaries");
if (input.SheetCount > 1 && !input.HasSummarySheet)
issues.Add(new("Workbook has multiple sheets but no summary sheet.", ArtifactReviewSeverity.Warning));
@@ -203,6 +209,8 @@ public static class ArtifactQualityReviewService
issues.Add(new("Input controls are limited for a workbook with editable data.", ArtifactReviewSeverity.Info));
if (input.ConditionalFormattingCount == 0 && input.DataRowCount >= 8)
issues.Add(new("Conditional formatting is limited for a workbook with enough data to prioritize or flag.", ArtifactReviewSeverity.Info));
if (input.HasSummarySheet && !input.HasScorecardSection && !input.HasDecisionSection && !input.HasHighlightSection)
issues.Add(new("Summary sheet could better surface KPIs, decisions, or highlights.", ArtifactReviewSeverity.Info));
return BuildReport("xlsx", strengths, issues);
}