?? ?? ??? ?? ??? ??? ???? DOCX ???? ?? ??? ?? ??? ??

?? ??
- ?? ?? ?? critic/repair ?? ?? ??? ??? DOCX/XLSX/HTML/PPT ??? ? ???? ?? ???? ????? ??
- ??? ????? DOCX ?? ??? ? ????? ????? ?? ??? ?? ??? ??

?? ????
- ArtifactQualityReviewService? DOCX ?? ??? cover, ??, ???, header/footer ?? ??? ???? XLSX dashboard workbook? highlight/action, detail navigation, trend/variance formula ?? ??? ??
- ArtifactRepairGuideService? ? ?? ??? ?? ?? ???? ??? ??? ???? HTML/DOCX/XLSX ??? ???? ? ???
- DeckRepairGuideService? appendix/evidence ??? duplicate headline ??? ?? ???? ??? deck ?? ???? ??
- DocxSkill? Repair guide? ??? ?? ????? ???? Executive Summary/Recommendation/Appendix ?? ??? ?? ???? ??
- ArtifactQualityReviewServiceTests, ArtifactRepairGuideServiceTests, DeckRepairGuideServiceTests, DocxSkillTemplateFeaturesTests? ??? ??? ??
- README.md? docs/DEVELOPMENT.md? 2026-04-15 09:05 (KST) ?? ??? ?? ??? ??

?? ??
- dotnet build src/AxCopilot/AxCopilot.csproj -c Release -v minimal -p:OutputPath=bin\\verify_doc_repair_finalize\\ -p:IntermediateOutputPath=obj\\verify_doc_repair_finalize\\ : ?? 0 / ?? 0
- dotnet test src/AxCopilot.Tests/AxCopilot.Tests.csproj -c Release -v minimal --filter "ArtifactQualityReviewServiceTests|ArtifactRepairGuideServiceTests|DeckRepairGuideServiceTests|DocxSkillTemplateFeaturesTests" -p:OutputPath=bin\\verify_doc_repair_finalize_tests\\ -p:IntermediateOutputPath=obj\\verify_doc_repair_finalize_tests\\ : ?? 11
This commit is contained in:
2026-04-15 08:48:04 +09:00
parent 6b3e5e6797
commit 918d62b8d5
10 changed files with 122 additions and 4 deletions

View File

@@ -38,7 +38,7 @@ public class ArtifactQualityReviewServiceTests
{
var review = ArtifactQualityReviewService.ReviewStructuredDocument(new StructuredDocumentReviewInput(
"Ops Memo",
2,
6,
600,
0,
0,
@@ -55,6 +55,8 @@ public class ArtifactQualityReviewServiceTests
review.Issues.Should().Contain(issue => issue.Message.Contains("Executive Summary", StringComparison.OrdinalIgnoreCase));
review.Issues.Should().Contain(issue => issue.Message.Contains("Recommendation", StringComparison.OrdinalIgnoreCase));
review.Issues.Should().Contain(issue => issue.Message.Contains("table of contents", StringComparison.OrdinalIgnoreCase));
review.Issues.Should().Contain(issue => issue.Message.Contains("Template-based styling", StringComparison.OrdinalIgnoreCase));
}
[Fact]
@@ -80,4 +82,29 @@ public class ArtifactQualityReviewServiceTests
review.Issues.Should().Contain(issue => issue.Message.Contains("summary sheet", StringComparison.OrdinalIgnoreCase));
review.Score.Should().BeLessThan(80);
}
[Fact]
public void ReviewWorkbook_ShouldFlagWeakDashboardSupport_WhenDashboardLacksActionsAndFormulas()
{
var review = ArtifactQualityReviewService.ReviewWorkbook(new WorkbookReviewInput(
"Operating Review",
4,
3,
32,
1,
0,
1,
1,
true,
true,
false,
false,
false,
false,
true));
review.Issues.Should().Contain(issue => issue.Message.Contains("highlights or actions", StringComparison.OrdinalIgnoreCase));
review.Issues.Should().Contain(issue => issue.Message.Contains("supporting detail sheets", StringComparison.OrdinalIgnoreCase));
review.Issues.Should().Contain(issue => issue.Message.Contains("trend or variance formulas", StringComparison.OrdinalIgnoreCase));
}
}

View File

@@ -41,4 +41,24 @@ public class ArtifactRepairGuideServiceTests
guide.Should().Contain("decision summary");
guide.Should().Contain("comparison or roadmap");
}
[Fact]
public void BuildGuide_ForDocumentIssues_ShouldReturnTemplateAndNavigationActions()
{
var review = new ArtifactQualityReport(
"docx",
66,
["Includes cover page"],
[
new ArtifactReviewIssue("Long document could benefit from a table of contents.", ArtifactReviewSeverity.Info),
new ArtifactReviewIssue("Template-based styling could improve consistency for a longer document.", ArtifactReviewSeverity.Info),
new ArtifactReviewIssue("Header or footer metadata is limited for a business document.", ArtifactReviewSeverity.Info)
]);
var guide = ArtifactRepairGuideService.BuildGuide(review);
guide.Should().Contain("table of contents");
guide.Should().Contain("template");
guide.Should().Contain("header and footer");
}
}

View File

@@ -35,4 +35,22 @@ public class DeckRepairGuideServiceTests
guide.Should().Contain("Reduce text density");
guide.Should().Contain("evidence");
}
[Fact]
public void BuildGuide_ShouldSurfaceAppendixAndHeadlineActions()
{
var report = new DeckQualityReport(
58,
[],
[
new DeckReviewIssue("Appendix or evidence slide is limited.", DeckReviewSeverity.Info),
new DeckReviewIssue("Found 2 duplicate headline(s).", DeckReviewSeverity.Warning)
],
[]);
var guide = DeckRepairGuideService.BuildGuide(report);
guide.Should().Contain("appendix");
guide.Should().Contain("distinct message");
}
}

View File

@@ -53,6 +53,7 @@ public class DocxSkillTemplateFeaturesTests
var result = await tool.ExecuteAsync(args, context, CancellationToken.None);
result.Success.Should().BeTrue();
result.Output.Should().Contain("Repair guide:");
var outputPath = Path.Combine(workDir, "executive-brief.docx");
File.Exists(outputPath).Should().BeTrue();