Dun.Jason 2 hete
szülő
commit
ec2d2c7a40

+ 0 - 1
src/Hotline.Ai.Jths/AiVisitService.cs

@@ -2,7 +2,6 @@
 using Hotline.Ai.CallOut;
 using Hotline.Ai.Jths.OrderVisits;
 using Hotline.Ai.Visit;
-using Hotline.Orders;
 using Hotline.Share.Dtos.Order;
 using Hotline.Share.Enums.Order;
 using Microsoft.Extensions.Logging;

+ 20 - 0
src/Hotline.Api/Controllers/Bi/BiOrderController.cs

@@ -51,6 +51,7 @@ using Hotline.Application.OrderApp;
 using Hotline.Share.Tools;
 using MediatR;
 using static Hotline.AppDefaults;
+using Hotline.Ai.Visit;
 
 namespace Hotline.Api.Controllers.Bi
 {
@@ -1306,6 +1307,25 @@ namespace Hotline.Api.Controllers.Bi
             return returnModel;
         }
 
+        /// <summary>
+        /// 智能回访不满意明细
+        /// </summary>
+        /// <param name="dto"></param>
+        /// <returns></returns>
+        [HttpGet("aivisit-nosatisfied-paeglist")]
+        public async Task<PagedDto<AiVisitNoSatisfiedPageListRep>> AiVisitNoSatisfiedPageList([FromQuery] AiVisitNoSatisfiedPageListRequest dto)
+        {
+            var (total,items) = await _aiOrderVisitDetailRepository.Queryable()
+                .Includes(x => x.OrderVisit)
+                .Includes(x => x.OrderVisit.Order)
+                .Includes(x => x.OrderVisit.Employee)
+                .Where(x => x.AiVisitTime >= dto.StartTime && x.AiVisitTime <= dto.EndTime && x.IsSuccess == true && SqlFunc.JsonField(x.AiOrgProcessingResults, "Key") == "2")
+                .WhereIF(!string.IsNullOrEmpty(dto.VisitName), x => x.OrderVisit.Employee.Name.Contains(dto.VisitName))
+                .ToPagedListAsync(dto.PageIndex, dto.PageSize, HttpContext.RequestAborted);
+
+            return new PagedDto<AiVisitNoSatisfiedPageListRep>(total, _mapper.Map<IReadOnlyList<AiVisitNoSatisfiedPageListRep>>(items));
+        }
+
         /// <summary>
         /// 热点类型小类统计
         /// </summary>

+ 2 - 1
src/Hotline.Application/Mappers/OrderMapperConfigs.cs

@@ -1,4 +1,5 @@
-using Hotline.FlowEngine.Workflows;
+using Hotline.Ai.Visit;
+using Hotline.FlowEngine.Workflows;
 using Hotline.Orders;
 using Hotline.Share.Dtos.Ai;
 using Hotline.Share.Dtos.Order;

+ 1 - 1
src/Hotline.Application/OrderApp/AiOrderVisitApplication.cs

@@ -1,4 +1,4 @@
-using Hotline.Orders;
+using Hotline.Ai.Visit;
 using Hotline.Share.Dtos.Ai;
 using SqlSugar;
 using XF.Domain.Dependency;

+ 1 - 1
src/Hotline.Application/OrderApp/IAiOrderVisitApplication.cs

@@ -1,4 +1,4 @@
-using Hotline.Orders;
+using Hotline.Ai.Visit;
 using Hotline.Share.Dtos.Ai;
 using SqlSugar;
 

+ 2 - 2
src/Hotline.Repository.SqlSugar/CallCenter/TrCallRecordRepository.cs

@@ -1,5 +1,5 @@
-using Hotline.CallCenter.Calls;
-using Hotline.Orders;
+using Hotline.Ai.Visit;
+using Hotline.CallCenter.Calls;
 using Hotline.Repository.SqlSugar.DataPermissions;
 using Hotline.Settings;
 using Hotline.Share.Dtos.CallCenter;

+ 1 - 0
src/Hotline.Repository.SqlSugar/Orders/OrderRepository.cs

@@ -39,6 +39,7 @@ using Hotline.Identity.Accounts;
 using Hotline.Share.Dtos.Enterprise;
 using XF.Domain.Exceptions;
 using Microsoft.AspNetCore.Http;
+using Hotline.Ai.Visit;
 
 namespace Hotline.Repository.SqlSugar.Orders
 {

+ 62 - 0
src/Hotline.Share/Dtos/Ai/AiDto.cs

@@ -226,6 +226,68 @@ namespace Hotline.Share.Dtos.Ai
         /// 不满意原因
         /// </summary>
         public Dictionary<string, string> SceneVariable { get; set; }
+
+        /// <summary>
+        /// 语音段列表信息
+        /// </summary>
+        public List<SentenceListDto> SentenceList { get; set; }
+    }
+
+    public class SentenceListDto
+    {
+        /// <summary>
+        /// 序号
+        /// </summary>
+        public int Index { get; set; }
+        /// <summary>
+        /// 开始时间(毫秒)
+        /// </summary>
+        public int StartTime { get; set; }
+
+        /// <summary>
+        /// 结束时间(毫秒)
+        /// </summary>
+        public int EndTime { get; set; }
+
+        /// <summary>
+        /// 角色(机器人:agent,用户:user,未知:unknown)
+        /// </summary>
+        public string Role { get; set; }
+
+        /// <summary>
+        /// 性别(未知:unknow,男:male,女:female)
+        /// </summary>
+        public string Gender { get; set; }
+
+        /// <summary>
+        /// 文本
+        /// </summary>
+        public string Text { get; set; }
+
+        /// <summary>
+        /// 人工编译后文本
+        /// </summary>
+        public string CorrectText { get; set; }
+
+        /// <summary>
+        /// 置信分数(本词条的可信度[0-65535], 分值越高,越可信)
+        /// </summary>
+        public string Score { get; set; }
+
+        /// <summary>
+        /// 语速
+        /// </summary>
+        public string Speed { get; set; }
+
+        /// <summary>
+        /// 最大音量
+        /// </summary>
+        public string MaxVolume { get; set; }
+
+        /// <summary>
+        /// 平均音量
+        /// </summary>
+        public string AvgVolume { get; set; }
     }
 
     public class QuestionnaireResult

+ 16 - 0
src/Hotline.Share/Requests/PagedKeywordRequest.cs

@@ -1,4 +1,5 @@
 using Hotline.Share.Dtos;
+using Hotline.Share.Dtos.Order;
 using Hotline.Share.Enums.Order;
 using System.ComponentModel.DataAnnotations;
 using XF.Utility.EnumExtensions;
@@ -371,6 +372,21 @@ public record VisitMeasureStatisticsRequest
     public string? VisitName { get; set; }
 }
 
+
+public record AiVisitNoSatisfiedPageListRequest:PagedRequest
+{
+    public DateTime StartTime { get; set; }
+    public DateTime EndTime { get; set; }
+
+    public string? VisitName { get; set; }
+}
+
+public class AiVisitNoSatisfiedPageListRep
+{
+    public OrderVisitDto OrderVisit { get; set; }
+}
+
+
 public record HotspotReportPagedRequest : ReportPagedRequest
 {
 

+ 2 - 2
src/Hotline/Orders/AiOrderVisit.cs → src/Hotline/Ai/Visit/AiOrderVisit.cs

@@ -3,7 +3,7 @@ using SqlSugar;
 using System.ComponentModel;
 using XF.Domain.Repository;
 
-namespace Hotline.Orders
+namespace Hotline.Ai.Visit
 {
     [Description("智能回访")]
     public class AiOrderVisit : CreationEntity
@@ -14,7 +14,7 @@ namespace Hotline.Orders
 
         public DateTime EndTime { get; set; }
 
-        public EAiOrderVisitTaskState TaskState {get;set;}
+        public EAiOrderVisitTaskState TaskState { get; set; }
         /// <summary>
         /// 批次上报结果ID
         /// </summary>

+ 68 - 3
src/Hotline/Orders/AiOrderVisitDetail.cs → src/Hotline/Ai/Visit/AiOrderVisitDetail.cs

@@ -1,4 +1,6 @@
-using Hotline.Share.Dtos;
+using Hotline.Orders;
+using Hotline.Share.Dtos;
+using Hotline.Share.Dtos.Ai;
 using Hotline.Share.Enums.Ai;
 using Hotline.Share.Enums.Order;
 using Oracle.ManagedDataAccess.Types;
@@ -10,7 +12,7 @@ using System.Text;
 using System.Threading.Tasks;
 using XF.Domain.Repository;
 
-namespace Hotline.Orders
+namespace Hotline.Ai.Visit
 {
     public class AiOrderVisitDetail : CreationEntity
     {
@@ -42,7 +44,7 @@ namespace Hotline.Orders
         /// </summary>
         public string OuterNo { get; set; }
 
-        public EAiOrderVisitState AiOrderVisitState { get;set;}
+        public EAiOrderVisitState AiOrderVisitState { get; set; }
 
         /// <summary>
         /// 智能回访时间
@@ -106,5 +108,68 @@ namespace Hotline.Orders
         /// </summary>
         [SugarColumn(DefaultValue = "0")]
         public int CallTimes { get; set; }
+
+        /// <summary>
+        /// 语音段列表信息
+        /// </summary>
+        [SugarColumn(ColumnDataType = "json", IsJson = true, IsNullable = true)]
+        public List<SentenceList> SentenceList { get; set; }
+    }
+
+    public class SentenceList
+    {
+        /// <summary>
+        /// 序号
+        /// </summary>
+        public int Index { get; set; }
+        /// <summary>
+        /// 开始时间(毫秒)
+        /// </summary>
+        public int StartTime { get; set; }
+
+        /// <summary>
+        /// 结束时间(毫秒)
+        /// </summary>
+        public int EndTime { get; set; }
+
+        /// <summary>
+        /// 角色(机器人:agent,用户:user,未知:unknown)
+        /// </summary>
+        public string Role { get; set; }
+
+        /// <summary>
+        /// 性别(未知:unknow,男:male,女:female)
+        /// </summary>
+        public string Gender { get; set; }
+
+        /// <summary>
+        /// 文本
+        /// </summary>
+        public string Text { get; set; }
+
+        /// <summary>
+        /// 人工编译后文本
+        /// </summary>
+        public string CorrectText { get; set; }
+
+        /// <summary>
+        /// 置信分数(本词条的可信度[0-65535], 分值越高,越可信)
+        /// </summary>
+        public string Score { get; set; }
+
+        /// <summary>
+        /// 语速
+        /// </summary>
+        public string Speed { get; set; }
+
+        /// <summary>
+        /// 最大音量
+        /// </summary>
+        public string MaxVolume { get; set; }
+
+        /// <summary>
+        /// 平均音量
+        /// </summary>
+        public string AvgVolume { get; set; }
     }
 }

+ 0 - 1
src/Hotline/Ai/Visit/IAiVisitService.cs

@@ -1,6 +1,5 @@
 
 using Hotline.Ai.CallOut;
-using Hotline.Orders;
 using Hotline.Share.Dtos.Order;
 using Microsoft.AspNetCore.Http;