문서 repair guide와 목적형 HTML/XLSX 경로를 추가 고도화
- ArtifactRepairGuideService를 추가해 HTML/XLSX/DOCX 품질 리뷰 결과를 Repair guide 형태의 실행 가능한 보정 지침으로 변환 - HtmlSkill, ExcelSkill, DocumentAssemblerTool 출력에 repair guide를 연결해 품질 점수 뒤에 후속 보완 방향을 함께 제공 - Excel dashboard sheet에 dashboard_tiles와 variance_series를 추가해 운영 리뷰형 workbook archetype을 강화 - strategy-brief-html, operating-review-xlsx 번들 스킬을 추가해 목적형 문서 생성 진입점을 확장 - README.md와 docs/DEVELOPMENT.md에 2026-04-14 23:58 (KST) 기준 작업 이력과 검증 명령을 반영 검증 결과 - dotnet build src/AxCopilot/AxCopilot.csproj -c Release -v minimal -p:OutputPath=bin\\verify_doc_next6\\ -p:IntermediateOutputPath=obj\\verify_doc_next6\\ : 경고 0 / 오류 0 - dotnet test src/AxCopilot.Tests/AxCopilot.Tests.csproj -c Release -v minimal --filter ArtifactQualityReviewServiceTests|ArtifactRepairGuideServiceTests|ExcelSkillDashboardSummaryTests|HtmlSkillConsultingSectionsTests|HtmlSkillPrintFrameTests|DocumentAssemblerStyleMapTests|DocumentAssemblerDocxFeaturesTests|DocumentAssemblerSemanticTests|PptxSkillGoldenDeckTests|DeckQualityReviewServiceTests -p:OutputPath=bin\\verify_doc_next6_tests\\ -p:IntermediateOutputPath=obj\\verify_doc_next6_tests\\ : 통과 17
This commit is contained in:
@@ -0,0 +1,44 @@
|
||||
using AxCopilot.Services.Agent;
|
||||
using FluentAssertions;
|
||||
using Xunit;
|
||||
|
||||
namespace AxCopilot.Tests.Services;
|
||||
|
||||
public class ArtifactRepairGuideServiceTests
|
||||
{
|
||||
[Fact]
|
||||
public void BuildGuide_ForWorkbookIssues_ShouldReturnWorkbookActions()
|
||||
{
|
||||
var review = new ArtifactQualityReport(
|
||||
"xlsx",
|
||||
68,
|
||||
["Includes summary sheet"],
|
||||
[
|
||||
new ArtifactReviewIssue("Workbook could benefit from a dashboard sheet to summarize multi-sheet trends.", ArtifactReviewSeverity.Info),
|
||||
new ArtifactReviewIssue("Summary sheet does not link to detail sheets.", ArtifactReviewSeverity.Warning)
|
||||
]);
|
||||
|
||||
var guide = ArtifactRepairGuideService.BuildGuide(review);
|
||||
|
||||
guide.Should().Contain("dashboard sheet");
|
||||
guide.Should().Contain("detail sheets");
|
||||
}
|
||||
|
||||
[Fact]
|
||||
public void BuildGuide_ForHtmlIssues_ShouldReturnHtmlActions()
|
||||
{
|
||||
var review = new ArtifactQualityReport(
|
||||
"html",
|
||||
70,
|
||||
["Includes print-ready CSS"],
|
||||
[
|
||||
new ArtifactReviewIssue("Print-ready business report would benefit from decision summary or evidence cards.", ArtifactReviewSeverity.Warning),
|
||||
new ArtifactReviewIssue("Strategy brief would be stronger with a comparison or roadmap block.", ArtifactReviewSeverity.Info)
|
||||
]);
|
||||
|
||||
var guide = ArtifactRepairGuideService.BuildGuide(review);
|
||||
|
||||
guide.Should().Contain("decision summary");
|
||||
guide.Should().Contain("comparison or roadmap");
|
||||
}
|
||||
}
|
||||
@@ -40,12 +40,18 @@ public class ExcelSkillDashboardSummaryTests
|
||||
"scorecards": [
|
||||
{ "label": "Run-rate", "value": "96%", "status": "On Track", "note": "Ahead of plan" }
|
||||
],
|
||||
"dashboard_tiles": [
|
||||
{ "label": "Decision status", "value": "Ready", "status": "Green", "note": "Funding ask aligned" }
|
||||
],
|
||||
"kpis": [
|
||||
{ "label": "Margin", "value": "18%", "trend": "Q/Q", "note": "Recovered" }
|
||||
],
|
||||
"trend_series": [
|
||||
{ "label": "Revenue", "current": "120", "target": "130", "delta": "-10", "status": "Watch" }
|
||||
],
|
||||
"variance_series": [
|
||||
{ "label": "Opex", "actual": "84", "target": "80", "variance": "+4", "status": "Watch" }
|
||||
],
|
||||
"sheet_summaries": [
|
||||
{ "sheet": "Revenue", "status": "Watch", "summary": "SMB margin pressure", "owner": "Sales Ops" }
|
||||
],
|
||||
@@ -66,6 +72,7 @@ public class ExcelSkillDashboardSummaryTests
|
||||
|
||||
result.Success.Should().BeTrue();
|
||||
result.Output.Should().Contain("Quality score");
|
||||
result.Output.Should().Contain("Repair guide:");
|
||||
|
||||
using var doc = SpreadsheetDocument.Open(Path.Combine(workDir, "dashboard-review.xlsx"), false);
|
||||
var workbookPart = doc.WorkbookPart!;
|
||||
@@ -99,6 +106,10 @@ public class ExcelSkillDashboardSummaryTests
|
||||
dashboardTexts.Should().Contain("Open: Revenue");
|
||||
dashboardTexts.Should().Contain("Key KPIs");
|
||||
dashboardTexts.Should().Contain("Margin");
|
||||
dashboardTexts.Should().Contain("Dashboard Tiles");
|
||||
dashboardTexts.Should().Contain("Decision status");
|
||||
dashboardTexts.Should().Contain("Variance Overview");
|
||||
dashboardTexts.Should().Contain("Opex");
|
||||
}
|
||||
finally
|
||||
{
|
||||
|
||||
@@ -95,6 +95,7 @@ public class HtmlSkillConsultingSectionsTests
|
||||
var result = await tool.ExecuteAsync(args, context, CancellationToken.None);
|
||||
|
||||
result.Success.Should().BeTrue();
|
||||
result.Output.Should().Contain("Repair guide:");
|
||||
var html = File.ReadAllText(Path.Combine(workDir, "consulting.html"));
|
||||
html.Should().Contain("comparison-grid");
|
||||
html.Should().Contain("roadmap-block");
|
||||
|
||||
Reference in New Issue
Block a user