49 lines
2.0 KiB
C#
49 lines
2.0 KiB
C#
using System;
|
|
using System.Threading.Tasks;
|
|
using CodeBase.Parsers;
|
|
using CodeBase.Repositories;
|
|
|
|
namespace CodeBase.Services
|
|
{
|
|
public class ScipProcessingService
|
|
{
|
|
private readonly ScipParser _parser;
|
|
private readonly VectorizationService _vectorizationService;
|
|
private readonly ScipRepository _repository;
|
|
|
|
// Внедрение зависимостей
|
|
public ScipProcessingService(
|
|
ScipParser parser,
|
|
VectorizationService vectorizationService,
|
|
ScipRepository repository)
|
|
{
|
|
_parser = parser;
|
|
_vectorizationService = vectorizationService;
|
|
_repository = repository;
|
|
}
|
|
|
|
public async Task ProcessAndSaveProjectAsync(string projectRootPath, string lang, string name)
|
|
{
|
|
try
|
|
{
|
|
Console.WriteLine($"[СЕРВИС] Запуск парсинга проекта: {projectRootPath}");
|
|
|
|
// 1. Получаем "сырые" чанки из парсера
|
|
var chunks = await _parser.ParseProjectAsync(projectRootPath, lang, name);
|
|
Console.WriteLine($"[СЕРВИС] Найдено {chunks.Count} сущностей. Начинаем векторизацию...");
|
|
|
|
// 2. Обогащаем каждый чанк векторным представлением GraphCodeBERT
|
|
chunks = await _vectorizationService.EnrichChunksWithVectorsAsync(chunks);
|
|
|
|
// 3. Сохраняем готовую сборку в графовую базу
|
|
await _repository.SaveChunksAsync(chunks);
|
|
|
|
Console.WriteLine("[СЕРВИС] Проект успешно обработан и сохранен в БД.");
|
|
}
|
|
catch (Exception ex)
|
|
{
|
|
Console.WriteLine($"[СЕРВИС ОШИБКА] Сбой при обработке проекта: {ex.Message}");
|
|
}
|
|
}
|
|
}
|
|
} |