HTML archetype·Excel dashboard·PPT 골든 회귀를 추가 고도화
- HtmlSkill에 board_report와 strategy_brief 구조화 섹션 타입을 추가해 이사회 보고형/전략 요약형 HTML 산출물 표현력을 확장 - ArtifactQualityReviewService HTML 리뷰에 board-report-panel, strategy-brief-panel 인식과 보완 포인트 규칙을 추가 - Excel dashboard sheet에 KPI, highlights, actions를 함께 렌더링해 executive dashboard 시트 밀도를 강화 - PptxSkillGoldenDeckTests에 strategy deck 회귀 샘플을 추가해 strong 전략 덱 품질 기준을 고정 - README.md와 docs/DEVELOPMENT.md에 2026-04-14 23:32 (KST) 기준 이력과 검증 명령을 반영 검증 결과 - dotnet build src/AxCopilot/AxCopilot.csproj -c Release -v minimal -p:OutputPath=bin\\verify_doc_next5\\ -p:IntermediateOutputPath=obj\\verify_doc_next5\\ : 경고 0 / 오류 0 - dotnet test src/AxCopilot.Tests/AxCopilot.Tests.csproj -c Release -v minimal --filter ArtifactQualityReviewServiceTests|ExcelSkillDashboardSummaryTests|HtmlSkillConsultingSectionsTests|HtmlSkillPrintFrameTests|DeckQualityReviewServiceTests|PptxSkillGoldenDeckTests|PptxSkillAutoRepairTests|PptxSkillConsultingDeckTests -p:OutputPath=bin\\verify_doc_next5_tests\\ -p:IntermediateOutputPath=obj\\verify_doc_next5_tests\\ : 통과 14
This commit is contained in:
@@ -121,4 +121,120 @@ public class PptxSkillGoldenDeckTests
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
[Fact]
|
||||
public async Task ExecuteAsync_WithStrongStrategyDeck_ShouldRemainFreeOfSlideAlerts()
|
||||
{
|
||||
var workDir = Path.Combine(Path.GetTempPath(), "ax-pptx-golden-strategy-" + 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": "strategy-golden.pptx",
|
||||
"theme": "professional",
|
||||
"audience": "CEO staff",
|
||||
"objective": "Confirm the next-phase growth strategy",
|
||||
"decision_ask": "Approve the SMB-first expansion plan",
|
||||
"storyline": ["Executive Summary", "Current State", "Options", "Roadmap", "Recommendation", "Appendix"],
|
||||
"slides": [
|
||||
{
|
||||
"layout": "title",
|
||||
"title": "Growth Strategy Refresh"
|
||||
},
|
||||
{
|
||||
"layout": "executive_summary",
|
||||
"title": "Executive Summary",
|
||||
"headline": "An SMB-first strategy gives the best balance of growth, margin, and execution risk.",
|
||||
"summary_points": [
|
||||
"The SMB segment now drives the strongest retention and the fastest sales cycle.",
|
||||
"Enterprise expansion remains attractive but requires heavier onboarding capacity.",
|
||||
"The SMB-first path improves near-term growth while keeping operating complexity in bounds."
|
||||
],
|
||||
"recommendation": "Prioritize SMB expansion, stage enterprise enablement, and re-sequence hiring.",
|
||||
"kpis": [
|
||||
{ "label": "Growth", "value": "+14%", "trend": "run-rate", "note": "SMB mix" },
|
||||
{ "label": "Margin", "value": "+1.8pt", "trend": "plan", "note": "lower service load" },
|
||||
{ "label": "Retention", "value": "92%", "trend": "SMB", "note": "stable" }
|
||||
]
|
||||
},
|
||||
{
|
||||
"layout": "comparison",
|
||||
"title": "Strategic Options",
|
||||
"headline": "SMB-first is the strongest near-term path while preserving the enterprise option.",
|
||||
"options": [
|
||||
{ "name": "SMB first", "pros": "Fast cycle and strong retention", "cons": "Smaller deal size", "verdict": "Recommended" },
|
||||
{ "name": "Balanced mix", "pros": "Diversified growth", "cons": "Higher delivery complexity", "verdict": "Balanced" },
|
||||
{ "name": "Enterprise first", "pros": "Largest upside", "cons": "Slowest ramp and highest risk", "verdict": "Long-term only" }
|
||||
]
|
||||
},
|
||||
{
|
||||
"layout": "roadmap",
|
||||
"title": "Execution Roadmap",
|
||||
"headline": "Deliver in three phases with clear commercial and delivery checkpoints.",
|
||||
"phases": [
|
||||
{ "title": "Focus", "detail": "Reset segment priorities and targets", "timeline": "Weeks 1-2", "owner": "Strategy" },
|
||||
{ "title": "Enable", "detail": "Align pricing, messaging, and onboarding", "timeline": "Weeks 3-6", "owner": "Sales + Ops" },
|
||||
{ "title": "Scale", "detail": "Expand channel coverage and monitor retention", "timeline": "Weeks 7-12", "owner": "GM" }
|
||||
]
|
||||
},
|
||||
{
|
||||
"layout": "recommendation",
|
||||
"title": "Recommendation",
|
||||
"headline": "Approve the SMB-first plan and stage enterprise investment after week 8.",
|
||||
"recommendation": "Approve the SMB-first growth plan and stage enterprise investments after onboarding capacity stabilizes.",
|
||||
"summary_points": [
|
||||
"This path captures the highest near-term growth with the cleanest operating model.",
|
||||
"It keeps the enterprise option open without overloading delivery teams.",
|
||||
"The required decision is sequencing, not strategic direction."
|
||||
],
|
||||
"next_steps": [
|
||||
"Reset next-quarter targets",
|
||||
"Lock SMB enablement backlog",
|
||||
"Review enterprise readiness after week 8"
|
||||
]
|
||||
},
|
||||
{
|
||||
"layout": "table",
|
||||
"title": "Appendix & Evidence",
|
||||
"headers": ["Observation", "Implication"],
|
||||
"rows": [
|
||||
["Retention pattern", "SMB cohort retention is consistently above plan."],
|
||||
["Onboarding load", "Enterprise onboarding is the main delivery constraint."]
|
||||
]
|
||||
}
|
||||
]
|
||||
}
|
||||
""").RootElement;
|
||||
|
||||
var result = await tool.ExecuteAsync(args, context, CancellationToken.None);
|
||||
|
||||
result.Success.Should().BeTrue();
|
||||
File.Exists(Path.Combine(workDir, "strategy-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