문서 대시보드·DOCX 스타일맵·PPT 골든 회귀를 고도화하고 검증 추가
- ExcelSkill에 summary_sheet 기반 Dashboard 시트 생성을 추가해 Summary -> Dashboard -> Detail 시트 흐름을 지원 - ArtifactQualityReviewService workbook 리뷰에 dashboard 존재 여부를 반영하고 multi-sheet workbook 보완 포인트를 강화 - DocumentAssemblerTool style_map 범위를 cover_subtitle/callout/table_header까지 확장해 템플릿 기반 DOCX 조립 품질을 개선 - Excel/DOCX/PPT 회귀 테스트를 확장하고 PptxSkillGoldenDeckTests를 추가해 strong deck 품질 기준을 고정 - README.md와 docs/DEVELOPMENT.md에 2026-04-14 23:25 (KST) 기준 작업 이력과 검증 명령을 반영 검증 결과 - dotnet build src/AxCopilot/AxCopilot.csproj -c Release -v minimal -p:OutputPath=bin\\verify_doc_next4\\ -p:IntermediateOutputPath=obj\\verify_doc_next4\\ : 경고 0 / 오류 0 - dotnet test src/AxCopilot.Tests/AxCopilot.Tests.csproj -c Release -v minimal --filter ArtifactQualityReviewServiceTests|DocumentAssemblerStyleMapTests|DocumentAssemblerDocxFeaturesTests|DocumentAssemblerSemanticTests|ExcelSkillDashboardSummaryTests|ExcelSkillSummarySheetTests|ExcelSkillExecutiveSummaryLinkTests|ExcelSkillDataValidationTests|ExcelSkillConditionalFormattingTests|HtmlSkillPrintFrameTests|HtmlSkillConsultingSectionsTests|DeckQualityReviewServiceTests|PptxSkillAutoRepairTests|PptxSkillConsultingDeckTests|PptxSkillGoldenDeckTests -p:OutputPath=bin\\verify_doc_next4_tests\\ -p:IntermediateOutputPath=obj\\verify_doc_next4_tests\\ : 통과 20
This commit is contained in:
124
src/AxCopilot.Tests/Services/PptxSkillGoldenDeckTests.cs
Normal file
124
src/AxCopilot.Tests/Services/PptxSkillGoldenDeckTests.cs
Normal file
@@ -0,0 +1,124 @@
|
||||
using System.IO;
|
||||
using System.Text.Json;
|
||||
using AxCopilot.Services.Agent;
|
||||
using FluentAssertions;
|
||||
using Xunit;
|
||||
|
||||
namespace AxCopilot.Tests.Services;
|
||||
|
||||
public class PptxSkillGoldenDeckTests
|
||||
{
|
||||
[Fact]
|
||||
public async Task ExecuteAsync_WithStrongBoardDeck_ShouldReturnStableQualitySummary()
|
||||
{
|
||||
var workDir = Path.Combine(Path.GetTempPath(), "ax-pptx-golden-" + Guid.NewGuid().ToString("N"));
|
||||
Directory.CreateDirectory(workDir);
|
||||
|
||||
try
|
||||
{
|
||||
var tool = new PptxSkill();
|
||||
var context = new AgentContext
|
||||
{
|
||||
WorkFolder = workDir,
|
||||
Permission = "Auto",
|
||||
OperationMode = "external",
|
||||
};
|
||||
|
||||
var args = JsonDocument.Parse(
|
||||
"""
|
||||
{
|
||||
"path": "board-golden.pptx",
|
||||
"theme": "professional",
|
||||
"audience": "Executive committee",
|
||||
"objective": "Approve the phase-1 operating model rollout",
|
||||
"decision_ask": "Approve the phase-1 rollout and funding release",
|
||||
"slides": [
|
||||
{
|
||||
"layout": "title",
|
||||
"title": "Operating Model Refresh"
|
||||
},
|
||||
{
|
||||
"layout": "executive_summary",
|
||||
"title": "Executive Summary",
|
||||
"headline": "Phase-1 rollout can improve service consistency while protecting margin.",
|
||||
"summary_points": [
|
||||
"Three pilot functions account for most process variation and rework.",
|
||||
"Phase-1 can be delivered without slowing current-quarter commitments.",
|
||||
"The operating model change is expected to reduce handoff delay by 18%."
|
||||
],
|
||||
"recommendation": "Approve the phase-1 rollout and lock the pilot governance model.",
|
||||
"kpis": [
|
||||
{ "label": "Cycle Time", "value": "-18%", "trend": "target", "note": "handoff simplification" },
|
||||
{ "label": "Margin", "value": "+2.4pt", "trend": "run-rate", "note": "mix and rework" },
|
||||
{ "label": "On-time Delivery", "value": "96%", "trend": "pilot", "note": "stable" }
|
||||
]
|
||||
},
|
||||
{
|
||||
"layout": "comparison",
|
||||
"title": "Options",
|
||||
"headline": "A phased rollout balances speed, control, and adoption risk.",
|
||||
"options": [
|
||||
{ "name": "Pilot only", "pros": "Lowest delivery risk", "cons": "Value capture is delayed", "verdict": "Too cautious" },
|
||||
{ "name": "Phased rollout", "pros": "Balanced speed and control", "cons": "Requires PMO discipline", "verdict": "Recommended" },
|
||||
{ "name": "Full rollout", "pros": "Fastest value capture", "cons": "High adoption risk", "verdict": "Too disruptive" }
|
||||
]
|
||||
},
|
||||
{
|
||||
"layout": "roadmap",
|
||||
"title": "Roadmap",
|
||||
"headline": "Roll out in three waves with explicit governance checkpoints.",
|
||||
"phases": [
|
||||
{ "title": "Design", "detail": "Finalize scope, KPIs, and governance", "timeline": "Weeks 1-3", "owner": "PMO" },
|
||||
{ "title": "Pilot", "detail": "Launch pilot functions and refine playbooks", "timeline": "Weeks 4-8", "owner": "Operations" },
|
||||
{ "title": "Scale", "detail": "Expand to the remaining regions", "timeline": "Weeks 9-14", "owner": "Business" }
|
||||
]
|
||||
},
|
||||
{
|
||||
"layout": "recommendation",
|
||||
"title": "Recommendation",
|
||||
"recommendation": "Approve phase-1 rollout, assign PMO governance, and release pilot funding.",
|
||||
"summary_points": [
|
||||
"The phased path protects execution quality while capturing measurable value in-quarter.",
|
||||
"The pilot governance model can be reused for the scale phase.",
|
||||
"The decision can be taken now because the key delivery risks are already bounded."
|
||||
],
|
||||
"next_steps": [
|
||||
"Confirm phase-1 scope this week",
|
||||
"Launch pilot governance cadence next week",
|
||||
"Review pilot performance at week 8"
|
||||
]
|
||||
},
|
||||
{
|
||||
"layout": "table",
|
||||
"title": "Appendix & Evidence",
|
||||
"headers": ["Evidence", "Detail"],
|
||||
"rows": [
|
||||
["Process review", "Pilot teams show the highest rework and handoff load."],
|
||||
["Financial impact", "Run-rate margin lift is driven by lower rework and better prioritization."]
|
||||
]
|
||||
}
|
||||
]
|
||||
}
|
||||
""").RootElement;
|
||||
|
||||
var result = await tool.ExecuteAsync(args, context, CancellationToken.None);
|
||||
|
||||
result.Success.Should().BeTrue();
|
||||
File.Exists(Path.Combine(workDir, "board-golden.pptx")).Should().BeTrue();
|
||||
result.Output.Should().Contain("PPT quality");
|
||||
result.Output.Should().NotContain("Slide alerts:");
|
||||
result.Output.Should().Contain("Needs work: none");
|
||||
}
|
||||
finally
|
||||
{
|
||||
try
|
||||
{
|
||||
if (Directory.Exists(workDir))
|
||||
Directory.Delete(workDir, true);
|
||||
}
|
||||
catch
|
||||
{
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user