Skip to content

Commit 7e0b1df

Browse files
committed
fix
1 parent 8834056 commit 7e0b1df

File tree

4 files changed

+30
-12
lines changed

4 files changed

+30
-12
lines changed

vtb.backend/SqlAnalyzer.Api/Dto/QueryAnalysis/QueryAnalysisResultDto.cs

Lines changed: 0 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -38,11 +38,6 @@ public class QueryAnalysisResultDto
3838
/// </summary>
3939
public SqlLlmAnalysisResult? LlmRecommendations { get; init; }
4040

41-
/// <summary>
42-
/// Айдишники найденных кастомных правил
43-
/// </summary>
44-
public IReadOnlyCollection<Guid> FindindCustomRules { get; init; } = [];
45-
4641
/// <summary>
4742
/// Результат сравнения EXPLAIN для входного запроса и запроса с LLM
4843
/// </summary>

vtb.backend/SqlAnalyzer.Api/Services/QueryAnalysis/QueryService.cs

Lines changed: 27 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,8 @@
88
using SqlAnalyzer.Api.Services.LlmClient.Interfaces;
99
using SqlAnalyzer.Api.Services.QueryAnalysis.Interfaces;
1010
using SqlAnalyzerLib.Facade.Interfaces;
11+
using SqlAnalyzerLib.SqlStaticAnalysis.Constants;
12+
using SqlAnalyzerLib.SqlStaticAnalysis.Models;
1113

1214
namespace SqlAnalyzer.Api.Services.QueryAnalysis;
1315

@@ -126,7 +128,6 @@ public async Task<QueryAnalysisResultDto> Analyze(Guid queryId, bool useLlm, IRe
126128
ExplainResult = query.ExplainResult,
127129
AlgorithmRecommendation = analysis.Recommendations,
128130
LlmRecommendations = analysis.LlmResult,
129-
FindindCustomRules = analysis.FindindCustomRules ?? [],
130131
ExplainComparisonDto = _explainer.Compare(query.ExplainResult, analysis.LlmResult?.ExplainResult)
131132
};
132133
}
@@ -152,6 +153,7 @@ public async Task<QueryAnalysisResultDto> Analyze(Guid queryId, bool useLlm, IRe
152153
_db.QueryAnalysisResults.Add(result);
153154
await _db.SaveChangesAsync();
154155

156+
await AddCustomToAnalysisResult(customFindings, analysisResult);
155157

156158
return new QueryAnalysisResultDto
157159
{
@@ -161,11 +163,28 @@ public async Task<QueryAnalysisResultDto> Analyze(Guid queryId, bool useLlm, IRe
161163
ExplainResult = query.ExplainResult,
162164
AlgorithmRecommendation = analysisResult,
163165
LlmRecommendations = llmAnswer,
164-
FindindCustomRules = customFindings,
165166
ExplainComparisonDto = _explainer.Compare(query.ExplainResult, llmAnswer?.ExplainResult)
166167
};
167168
}
168169

170+
private async Task AddCustomToAnalysisResult(IReadOnlyCollection<Guid> customFindings,
171+
SqlAlgorithmAnalysisResult analysisResult)
172+
{
173+
// todo! переделать чтобы у всех правил был айдишник
174+
var customRules = await _db.SqlAnalyzeRules.Where(x => customFindings.Contains(x.Id)).ToListAsync();
175+
foreach (var customRule in customRules)
176+
{
177+
analysisResult.QueryAnalysisResult.Findings.Add(
178+
new StaticAnalysisPoint(
179+
StaticRules.Custom,
180+
customRule.Severity,
181+
customRule.Problem,
182+
customRule.Recommendation
183+
)
184+
);
185+
}
186+
}
187+
169188
private async Task<SqlLlmAnalysisResult> GetLlmResult(QueryAnalysis query)
170189
{
171190
var llmAnswer = await _llm.GetRecommendation(
@@ -196,16 +215,17 @@ private async Task UpdateQueryAnalysisResult(bool useLlm, IReadOnlyCollection<Gu
196215
}
197216

198217
var newRules = ruleIds?.Except(analysisResult.FindindCustomRules ?? []).ToList();
218+
IReadOnlyCollection<Guid> customFindings = [];
199219
if (newRules?.Count > 0)
200220
{
201-
var newFindings = await _customRulesService.ApplyForQuery(analysisResult.Query, newRules);
221+
customFindings = await _customRulesService.ApplyForQuery(analysisResult.Query, newRules);
202222
if (analysisResult.FindindCustomRules is null)
203223
{
204-
analysisResult.FindindCustomRules = newFindings.ToList();
224+
analysisResult.FindindCustomRules = customFindings.ToList();
205225
}
206226
else
207227
{
208-
analysisResult.FindindCustomRules.AddRange(newFindings);
228+
analysisResult.FindindCustomRules.AddRange(customFindings);
209229
}
210230

211231
isUpdated = true;
@@ -215,5 +235,7 @@ private async Task UpdateQueryAnalysisResult(bool useLlm, IReadOnlyCollection<Gu
215235
{
216236
await _db.SaveChangesAsync();
217237
}
238+
239+
await AddCustomToAnalysisResult(customFindings, analysisResult.Recommendations);
218240
}
219241
}

vtb.backend/SqlAnalyzer.Api/SqlAnalyzerLib/SqlStaticAnalysis/Constants/StaticRules.cs

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -48,5 +48,6 @@ public enum StaticRules
4848
ImplicitCastInJoinOrWhere,
4949
CaseInWhere,
5050
AggregateOnUnindexed,
51-
SelectWithoutFrom
51+
SelectWithoutFrom,
52+
Custom
5253
}

vtb.backend/SqlAnalyzer.Api/SqlAnalyzerLib/SqlStaticAnalysis/Models/StaticAnalysisResult.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,5 +5,5 @@ namespace SqlAnalyzerLib.SqlStaticAnalysis.Models;
55
/// </summary>
66
public record StaticAnalysisResult(
77
string Query,
8-
IReadOnlyList<StaticAnalysisPoint> Findings,
8+
ICollection<StaticAnalysisPoint> Findings,
99
DateTime AnalyzedAt);

0 commit comments

Comments
 (0)