|
@@ -26,6 +26,7 @@ using XF.Domain.Exceptions;
|
|
|
using XF.Domain.Repository;
|
|
|
using Hotline.Share.Enums.CallCenter;
|
|
|
using Hotline.Configurations;
|
|
|
+using Hotline.Tools;
|
|
|
|
|
|
namespace Hotline.Application.Quality
|
|
|
{
|
|
@@ -43,8 +44,9 @@ namespace Hotline.Application.Quality
|
|
|
private readonly IOptionsSnapshot<AppConfiguration> _appOptions;
|
|
|
private readonly Publisher _publisher;
|
|
|
private readonly IRepository<TrCallRecord> _trCallRecordRepository;
|
|
|
+ private readonly IRepository<OrderWord> _orderWordRepository;
|
|
|
|
|
|
- public QualityApplication(
|
|
|
+ public QualityApplication(
|
|
|
ISessionContext sessionContext,
|
|
|
IMapper mapper,
|
|
|
IRepository<QualityDetail> qualiteyDetail,
|
|
@@ -56,7 +58,8 @@ namespace Hotline.Application.Quality
|
|
|
IOptionsSnapshot<AppConfiguration> appOptions,
|
|
|
ILogger<Hotline.Quality.Quality> logger,
|
|
|
Publisher publisher,
|
|
|
- IRepository<TrCallRecord> trCallRecordRepository)
|
|
|
+ IRepository<TrCallRecord> trCallRecordRepository,
|
|
|
+ IRepository<OrderWord> orderWordRepository)
|
|
|
{
|
|
|
_sessionContext = sessionContext;
|
|
|
_mapper = mapper;
|
|
@@ -70,7 +73,8 @@ namespace Hotline.Application.Quality
|
|
|
_logger = logger;
|
|
|
_publisher = publisher;
|
|
|
_trCallRecordRepository = trCallRecordRepository;
|
|
|
- }
|
|
|
+ _orderWordRepository = orderWordRepository;
|
|
|
+ }
|
|
|
|
|
|
/// <summary>
|
|
|
/// 新增质检
|
|
@@ -342,7 +346,23 @@ namespace Hotline.Application.Quality
|
|
|
}
|
|
|
transliterationContent = transliterationContent.Length > 7500 ? transliterationContent.Substring(0, 7500) : transliterationContent;
|
|
|
var state = !string.IsNullOrEmpty(transliterationContent)? ECallTransliterationState.Succeed : ECallTransliterationState.Fail;
|
|
|
- await _trCallRecordRepository.Updateable().SetColumns(o => new TrCallRecord { TransliterationState = state, TransliterationContent = transliterationContent })
|
|
|
+ List<string>? intersect = new List<string>();
|
|
|
+ //处理敏感词
|
|
|
+ if (!string.IsNullOrEmpty(transliterationContent))
|
|
|
+ {
|
|
|
+ try
|
|
|
+ {
|
|
|
+ var words = await _orderWordRepository.Queryable().Where(x => x.IsEnable == 1 && x.Classify.Contains("敏感标签")).Select(x => x.Tag).ToListAsync(cancellationToken);
|
|
|
+ var res = new List<string>();
|
|
|
+ if (words.Any()) res = ParticipleTool.SegMMDouble(transliterationContent, ref words);
|
|
|
+ if (res.Any())
|
|
|
+ {
|
|
|
+ intersect = words.Intersect(res).ToList();
|
|
|
+ }
|
|
|
+ }
|
|
|
+ catch { }
|
|
|
+ }
|
|
|
+ await _trCallRecordRepository.Updateable().SetColumns(o => new TrCallRecord { TransliterationState = state, TransliterationContent = transliterationContent, Sensitive = intersect })
|
|
|
.Where(o => o.Id == call.Id).ExecuteCommandAsync(cancellationToken);
|
|
|
}
|
|
|
}
|