?? ?? ??? ?? ??? ??? ???? 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:
@@ -188,6 +188,14 @@ public static class ArtifactQualityReviewService
|
||||
issues.Add(new("Body content may be too short for an executive document.", ArtifactReviewSeverity.Warning));
|
||||
if (input.SectionCount < 4)
|
||||
issues.Add(new("Major section count is low for a business document.", ArtifactReviewSeverity.Warning));
|
||||
if (input.SectionCount >= 5 && !input.HasCoverPage)
|
||||
issues.Add(new("Client-facing document could benefit from a cover page.", ArtifactReviewSeverity.Info));
|
||||
if (input.SectionCount >= 5 && !input.HasTableOfContents)
|
||||
issues.Add(new("Long document could benefit from a table of contents.", ArtifactReviewSeverity.Info));
|
||||
if (input.SectionCount >= 6 && !input.HasTemplate)
|
||||
issues.Add(new("Template-based styling could improve consistency for a longer document.", ArtifactReviewSeverity.Info));
|
||||
if (input.SectionCount >= 4 && !input.HasHeaderFooter)
|
||||
issues.Add(new("Header or footer metadata is limited for a business document.", ArtifactReviewSeverity.Info));
|
||||
if (!input.HasExecutiveSummarySection)
|
||||
issues.Add(new("Executive Summary section is missing.", ArtifactReviewSeverity.Warning));
|
||||
if (!input.HasRecommendationSection)
|
||||
@@ -232,6 +240,12 @@ public static class ArtifactQualityReviewService
|
||||
issues.Add(new("Summary sheet could better surface KPIs, decisions, or highlights.", ArtifactReviewSeverity.Info));
|
||||
if (input.HasSummarySheet && input.DetailSheetCount >= 2 && !input.HasDashboardSheet)
|
||||
issues.Add(new("Workbook could benefit from a dashboard sheet to summarize multi-sheet trends.", ArtifactReviewSeverity.Info));
|
||||
if (input.HasDashboardSheet && !input.HasHighlightSection && !input.HasActionSection)
|
||||
issues.Add(new("Dashboard sheet could better call out highlights or actions.", ArtifactReviewSeverity.Info));
|
||||
if (input.HasDashboardSheet && input.DetailSheetCount >= 2 && input.HyperlinkCount == 0)
|
||||
issues.Add(new("Dashboard sheet should link to supporting detail sheets.", ArtifactReviewSeverity.Info));
|
||||
if (input.HasDashboardSheet && input.DetailSheetCount >= 2 && input.FormulaCount < 3)
|
||||
issues.Add(new("Dashboard sheet would benefit from more calculated trend or variance formulas.", ArtifactReviewSeverity.Info));
|
||||
|
||||
return BuildReport("xlsx", strengths, issues);
|
||||
}
|
||||
|
||||
@@ -38,6 +38,8 @@ public static class ArtifactRepairGuideService
|
||||
return "Add a decision summary and evidence cards near the recommendation section";
|
||||
if (message.Contains("cover page", StringComparison.OrdinalIgnoreCase))
|
||||
return "Add a cover page for print-ready or board-facing reports";
|
||||
if (message.Contains("table of contents", StringComparison.OrdinalIgnoreCase))
|
||||
return "Add a table of contents for longer print-ready reports";
|
||||
if (message.Contains("comparison or roadmap", StringComparison.OrdinalIgnoreCase))
|
||||
return "Add comparison or roadmap blocks to make options and sequencing explicit";
|
||||
if (message.Contains("supporting paragraphs", StringComparison.OrdinalIgnoreCase))
|
||||
@@ -55,6 +57,12 @@ public static class ArtifactRepairGuideService
|
||||
return "Add a dashboard sheet with KPI tiles, trends, and links to detail sheets";
|
||||
if (message.Contains("Summary sheet could better surface", StringComparison.OrdinalIgnoreCase))
|
||||
return "Promote KPIs, decisions, and highlights into the summary or dashboard sheet";
|
||||
if (message.Contains("Dashboard sheet could better call out highlights or actions", StringComparison.OrdinalIgnoreCase))
|
||||
return "Add highlight and action callout blocks to the dashboard sheet";
|
||||
if (message.Contains("Dashboard sheet should link", StringComparison.OrdinalIgnoreCase))
|
||||
return "Add hyperlinks from the dashboard to each supporting detail sheet";
|
||||
if (message.Contains("trend or variance formulas", StringComparison.OrdinalIgnoreCase))
|
||||
return "Add trend, variance, or rollup formulas so the dashboard summarizes detail sheets";
|
||||
if (message.Contains("data validation", StringComparison.OrdinalIgnoreCase))
|
||||
return "Add data validation rules for editable status, owner, or category columns";
|
||||
if (message.Contains("Conditional formatting", StringComparison.OrdinalIgnoreCase))
|
||||
@@ -68,6 +76,14 @@ public static class ArtifactRepairGuideService
|
||||
|
||||
private static string? BuildDocumentAction(string message)
|
||||
{
|
||||
if (message.Contains("cover page", StringComparison.OrdinalIgnoreCase))
|
||||
return "Add a cover page with subtitle, owner, and review context for the document";
|
||||
if (message.Contains("table of contents", StringComparison.OrdinalIgnoreCase))
|
||||
return "Add a table of contents so longer readers can navigate the document quickly";
|
||||
if (message.Contains("Template-based styling", StringComparison.OrdinalIgnoreCase))
|
||||
return "Apply a document template or style map to keep headings and body copy consistent";
|
||||
if (message.Contains("Header or footer", StringComparison.OrdinalIgnoreCase))
|
||||
return "Add header and footer metadata such as document name, confidentiality, or page numbers";
|
||||
if (message.Contains("Executive Summary", StringComparison.OrdinalIgnoreCase))
|
||||
return "Add an Executive Summary section at the start of the document";
|
||||
if (message.Contains("Recommendation", StringComparison.OrdinalIgnoreCase))
|
||||
|
||||
@@ -18,6 +18,10 @@ public static class DeckRepairGuideService
|
||||
=> "Add a clear recommendation or decision request slide near the end of the deck",
|
||||
var message when message.Contains("roadmap", StringComparison.OrdinalIgnoreCase)
|
||||
=> "Add a roadmap slide with phases, owners, and timing",
|
||||
var message when message.Contains("Appendix or evidence slide", StringComparison.OrdinalIgnoreCase)
|
||||
=> "Add appendix or evidence slides with supporting data, assumptions, or source tables",
|
||||
var message when message.Contains("duplicate headline", StringComparison.OrdinalIgnoreCase)
|
||||
=> "Rewrite repeated headlines so each slide lands a distinct message",
|
||||
var message when message.Contains("headline is too long", StringComparison.OrdinalIgnoreCase)
|
||||
=> "Tighten slide headlines to one clear message sentence",
|
||||
var message when message.Contains("content density is high", StringComparison.OrdinalIgnoreCase)
|
||||
|
||||
@@ -333,12 +333,13 @@ public class DocxSkill : IAgentTool
|
||||
useToc,
|
||||
templateApplied,
|
||||
headerText != null || footerText != null || showPageNumbers,
|
||||
headings.Any(h => ArtifactQualityReviewService.ContainsBusinessKeyword(h, "executive summary", "summary")),
|
||||
headings.Any(h => ArtifactQualityReviewService.ContainsBusinessKeyword(h, "recommendation", "proposal", "next step", "action")),
|
||||
headings.Any(h => ArtifactQualityReviewService.ContainsBusinessKeyword(h, "appendix", "reference", "supplement"))
|
||||
headings.Any(h => ArtifactQualityReviewService.ContainsBusinessKeyword(h, "executive summary", "summary", "요약", "핵심 요약")),
|
||||
headings.Any(h => ArtifactQualityReviewService.ContainsBusinessKeyword(h, "recommendation", "proposal", "next step", "action", "권고", "제안", "실행")),
|
||||
headings.Any(h => ArtifactQualityReviewService.ContainsBusinessKeyword(h, "appendix", "reference", "supplement", "부록", "참고"))
|
||||
));
|
||||
|
||||
parts.Add(review.ToToolSummary());
|
||||
parts.Add(ArtifactRepairGuideService.BuildGuide(review));
|
||||
return ToolResult.Ok(
|
||||
$"Word 문서 생성 완료: {fullPath}\n{string.Join(", ", parts)}",
|
||||
fullPath);
|
||||
|
||||
Reference in New Issue
Block a user