Files
AX-Copilot-Codex/src/AxCopilot.Tests/Services/ArtifactRepairGuideServiceTests.cs
lacvet 2a49b1da24 SQL 정적 분석과 PPT·HTML critic을 고도화하고 코드 탭 fallback 문맥을 보강
- SqlAnalysisService에 script intent, dependency, review focus 계산을 추가해 migration/seed/reporting SQL의 위험도와 검토 포인트를 더 정확히 안내하도록 개선했습니다.
- HtmlSkill에 decision_matrix, metric_strip 섹션을 추가하고 ArtifactQualityReviewService/ArtifactRepairGuideService에서 board·strategy 문서의 의사결정 구조와 KPI 연결 부족을 더 정밀하게 진단하도록 강화했습니다.
- DeckQualityReviewService와 DeckRepairGuideService를 확장해 executive summary headline, comparison trade-off, roadmap milestone, chart takeaway, KPI context 부족을 추가로 감지하고 보정 가이드를 반환하도록 정리했습니다.
- WorkspaceContextGenerator와 CodeLanguageCatalog를 업데이트해 SQL 저장소에서 SQL Review Focus와 확장된 workflow summary를 제공하도록 맞췄고, README/DEVELOPMENT/NEXT_ROADMAP에 2026-04-15 11:36 (KST) 기준 이력을 반영했습니다.

검증 결과
- dotnet build src/AxCopilot/AxCopilot.csproj -c Release -v minimal -p:OutputPath=bin\\verify_code_sql_doc_final\\ -p:IntermediateOutputPath=obj\\verify_code_sql_doc_final\\ : 경고 0 / 오류 0
- dotnet test src/AxCopilot.Tests/AxCopilot.Tests.csproj -c Release -v minimal --filter "SqlDialectDetectorTests|SqlAnalysisServiceTests|CodeLanguageCatalogTests|WorkspaceContextGeneratorTests|ArtifactQualityReviewServiceTests|ArtifactRepairGuideServiceTests|DeckQualityReviewServiceTests|HtmlSkillConsultingSectionsTests" -p:OutputPath=bin\\verify_code_sql_doc_final_tests\\ -p:IntermediateOutputPath=obj\\verify_code_sql_doc_final_tests\\ : 통과 62
2026-04-15 11:38:50 +09:00

72 lines
3.0 KiB
C#

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("Dashboard sheet lacks KPI, trend, or decision content.", ArtifactReviewSeverity.Info),
new ArtifactReviewIssue("Dashboard sheet lacks trend or variance framing for the supporting sheets.", ArtifactReviewSeverity.Info),
new ArtifactReviewIssue("Dashboard workbook should summarize each supporting detail sheet.", ArtifactReviewSeverity.Info)
]);
var guide = ArtifactRepairGuideService.BuildGuide(review);
guide.Should().Contain("dashboard");
guide.Should().Contain("core story");
guide.Should().Contain("trend");
guide.Should().Contain("sheet summaries");
}
[Fact]
public void BuildGuide_ForHtmlIssues_ShouldReturnHtmlActions()
{
var review = new ArtifactQualityReport(
"html",
70,
["Includes print-ready CSS"],
[
new ArtifactReviewIssue("Board-ready report should include a decision summary block.", ArtifactReviewSeverity.Warning),
new ArtifactReviewIssue("Board-ready report would be stronger with a KPI panel or metric strip.", ArtifactReviewSeverity.Info),
new ArtifactReviewIssue("Strategy brief should include explicit decisions or a decision summary block.", ArtifactReviewSeverity.Warning),
new ArtifactReviewIssue("Board-ready report would benefit from a comparison or decision matrix block.", ArtifactReviewSeverity.Info)
]);
var guide = ArtifactRepairGuideService.BuildGuide(review);
guide.Should().Contain("decision summary");
guide.Should().Contain("KPI");
guide.Should().Contain("strategy brief");
guide.Should().Contain("decision matrix");
}
[Fact]
public void BuildGuide_ForDocumentIssues_ShouldReturnTemplateAndNavigationActions()
{
var review = new ArtifactQualityReport(
"docx",
66,
["Includes cover page"],
[
new ArtifactReviewIssue("Supporting evidence table is limited for a business document.", ArtifactReviewSeverity.Info),
new ArtifactReviewIssue("Key messages would benefit from callout or highlight blocks.", ArtifactReviewSeverity.Info),
new ArtifactReviewIssue("Header or footer metadata is limited for a business document.", ArtifactReviewSeverity.Info)
]);
var guide = ArtifactRepairGuideService.BuildGuide(review);
guide.Should().Contain("evidence table");
guide.Should().Contain("callout");
guide.Should().Contain("header and footer");
}
}