SQL 정적 분석과 PPT·HTML 품질 기준을 강화하고 언어 fallback을 고도화한다
- SQL 전용 정적 분석 계층을 추가해 PostgreSQL/MySQL/SQL Server/SQLite/Oracle 방언 추정, statement kind 분류, object 추출, destructive DDL·broad DML·transaction boundary 위험 감지를 지원한다 - CodeLanguageCatalog의 SQL manifest/build/test/lint 힌트와 fallback summary를 SQL 분석 결과 중심으로 보강해 no-LSP 환경에서도 dialect·risk·next checks를 직접 안내한다 - DeckPlanningService가 구조화된 content 슬라이드를 kpi_dashboard/comparison/roadmap/chart로 자동 승격하고 DeckQualityReviewService·DeckRepairGuideService가 KPI 근거, verdict, owner/timeline, takeaway 부족을 별도 진단·보정한다 - HtmlSkill에 kpi_panel 섹션을 추가하고 ArtifactQualityReviewService·ArtifactRepairGuideService가 board/strategy 문서의 KPI·evidence·decision 연결 부족을 더 정확히 감지하도록 확장한다 - README.md, docs/DEVELOPMENT.md, docs/NEXT_ROADMAP.md에 2026-04-15 11:17 (KST) 기준 작업 이력과 검증 결과를 반영했다 검증 결과 - dotnet build src/AxCopilot/AxCopilot.csproj -c Release -v minimal -p:OutputPath=bin\verify_sql_doc_batch\ -p:IntermediateOutputPath=obj\verify_sql_doc_batch\ : 경고 0 / 오류 0 - dotnet test src/AxCopilot.Tests/AxCopilot.Tests.csproj -c Release -v minimal --filter SqlDialectDetectorTests|SqlAnalysisServiceTests|CodeLanguageCatalogTests|DeckPlanningServiceTests|DeckQualityReviewServiceTests|ArtifactQualityReviewServiceTests|ArtifactRepairGuideServiceTests|HtmlSkillConsultingSectionsTests|HtmlSkillGoldenReportTests|PptxSkillGoldenDeckTests -p:OutputPath=bin\verify_sql_doc_batch_tests\ -p:IntermediateOutputPath=obj\verify_sql_doc_batch_tests\ : 통과 47
This commit is contained in:
@@ -39,6 +39,7 @@ public static class CodeLanguageCatalog
|
||||
["ruby"] = ["Gemfile", "Gemfile.lock", "*.gemspec"],
|
||||
["kotlin"] = ["build.gradle.kts", "settings.gradle.kts", "gradle.properties"],
|
||||
["swift"] = ["Package.swift", "*.xcodeproj", "*.xcworkspace"],
|
||||
["sql"] = ["migrations/*.sql", "schema.sql", "seed.sql", "*.sqlproj"],
|
||||
};
|
||||
|
||||
private static readonly IReadOnlyDictionary<string, string[]> s_buildHints =
|
||||
@@ -56,6 +57,7 @@ public static class CodeLanguageCatalog
|
||||
["ruby"] = ["bundle exec rake", "ruby -c"],
|
||||
["kotlin"] = ["gradle build", "./gradlew build"],
|
||||
["swift"] = ["swift build", "xcodebuild build"],
|
||||
["sql"] = ["apply in a disposable database first", "review migration order and dependency impact"],
|
||||
};
|
||||
|
||||
private static readonly IReadOnlyDictionary<string, string[]> s_testHints =
|
||||
@@ -73,6 +75,7 @@ public static class CodeLanguageCatalog
|
||||
["ruby"] = ["bundle exec rspec", "bundle exec rake test"],
|
||||
["kotlin"] = ["gradle test", "./gradlew test"],
|
||||
["swift"] = ["swift test", "xcodebuild test"],
|
||||
["sql"] = ["run the script against a disposable database", "verify affected row counts and dependent queries"],
|
||||
};
|
||||
|
||||
private static readonly IReadOnlyDictionary<string, string[]> s_lintHints =
|
||||
@@ -89,6 +92,7 @@ public static class CodeLanguageCatalog
|
||||
["ruby"] = ["rubocop", "standardrb"],
|
||||
["kotlin"] = ["./gradlew ktlintCheck", "./gradlew detekt"],
|
||||
["swift"] = ["swiftformat --lint", "swiftlint"],
|
||||
["sql"] = ["check destructive statements and transaction boundaries", "review index, constraint, and view impact"],
|
||||
};
|
||||
|
||||
private static readonly ReadOnlyCollection<CodeLanguageCapability> s_all =
|
||||
@@ -257,8 +261,8 @@ public static class CodeLanguageCatalog
|
||||
"SQL",
|
||||
[".sql"],
|
||||
[
|
||||
"Preserve migration ordering, transactional safety, and index/constraint compatibility.",
|
||||
"Call out destructive or data-migrating changes explicitly."
|
||||
"Preserve migration ordering, dialect assumptions, and transaction boundaries.",
|
||||
"Call out destructive DDL, broad DML, and index or constraint impact explicitly."
|
||||
]),
|
||||
new(
|
||||
"web",
|
||||
@@ -351,7 +355,7 @@ public static class CodeLanguageCatalog
|
||||
}
|
||||
|
||||
foreach (var capability in s_all.Where(x =>
|
||||
x.Key is "csharp" or "python" or "java" or "cpp" or "typescript" or "javascript" or "go" or "rust" or "kotlin" or "swift"))
|
||||
x.Key is "csharp" or "python" or "java" or "cpp" or "typescript" or "javascript" or "go" or "rust" or "kotlin" or "swift" or "sql"))
|
||||
{
|
||||
var summary = capability.Guidance.FirstOrDefault();
|
||||
if (!string.IsNullOrWhiteSpace(summary))
|
||||
@@ -437,6 +441,8 @@ public static class CodeLanguageCatalog
|
||||
var primaryGuidance = capability.Guidance.FirstOrDefault();
|
||||
if (!string.IsNullOrWhiteSpace(primaryGuidance))
|
||||
parts.Add("focus: " + primaryGuidance);
|
||||
if (string.Equals(capability.Key, "sql", StringComparison.OrdinalIgnoreCase))
|
||||
parts.Add("analysis: detect dialect, statement kinds, destructive risk, and object dependencies");
|
||||
|
||||
if (parts.Count == 0)
|
||||
return capability.DisplayName;
|
||||
@@ -481,6 +487,8 @@ public static class CodeLanguageCatalog
|
||||
public static string BuildFallbackSummary(string? filePathOrExtension)
|
||||
{
|
||||
var capability = ResolveCapabilityFromKeyOrExtension(filePathOrExtension);
|
||||
if (capability != null && string.Equals(capability.Key, "sql", StringComparison.OrdinalIgnoreCase))
|
||||
return SqlAnalysisService.BuildFallbackSummary(filePathOrExtension);
|
||||
if (capability == null)
|
||||
return "정적 fallback: 확장자와 프로젝트 매니페스트를 먼저 확인하고 관련 build/test/lint 힌트를 따라 수동 검증하세요.";
|
||||
|
||||
|
||||
Reference in New Issue
Block a user