Merge branch 'master' into dev-feature-20250903-Portrait0603

# Conflicts:
#	ai-analytic-center-api/src/main/java/com/volvo/ai/analytic/center/enums/BusinessTypeEnum.java
#	ai-analytic-center-biz/src/main/java/com/volvo/ai/analytic/center/controller/EGEventSubscriptionController.java
#	ai-analytic-center-biz/src/main/java/com/volvo/ai/analytic/center/job/CorpusFailJob.java
#	ai-analytic-center-biz/src/main/java/com/volvo/ai/analytic/center/mq/CorpusDccMqConsumer.java
#	ai-analytic-center-biz/src/main/java/com/volvo/ai/analytic/center/mq/CorpusProcessKafkaProducer.java
#	ai-analytic-center-biz/src/main/java/com/volvo/ai/analytic/center/service/HuaWeiEGService.java
#	ai-analytic-center-biz/src/main/java/com/volvo/ai/analytic/center/service/impl/TmTelephoneCorpusServiceImpl.java
#	pom.xml
This commit is contained in:
ZLI263
2025-09-04 11:05:12 +08:00
60 changed files with 2985 additions and 472 deletions

View File

@@ -4,6 +4,8 @@ public class Constant {
public static final String CHANNEL_DCC = "Channel_Dcc";
public static final String CHANNEL_4IN1 = "Channel_4in1";
public static final String DISPLAY_STATUS = "FINISHED";
public static final String INTELLIGENT_CUSTOMER_4IN1 = "INTELLIGENT_CUSTOMER_4IN1";

View File

@@ -0,0 +1,38 @@
package com.volvo.ai.analytic.center.dto.corpus;
import lombok.Data;
import java.util.Date;
/**
* @description IM会话存档消息记录表-湖仓同步表
* @author jlu
* @date 2025-07-17
*/
@Data
public class ImCurMessageDTO {
private static final long serialVersionUID = 1L;
private Long id;
private String sessionId;
/**
* 消息内容文本
*/
private String msgContent;
/**
* 客户类型0:用户 1百度 2GPT 3人工 4唯都Agent
*/
private Integer customerType;
private Long msgTimestamp;
private String userDemand;
public ImCurMessageDTO() {
}
}

View File

@@ -16,7 +16,7 @@ public class ClaimVerificationFileDTO {
@NotBlank(message = "售后ID不能为空")
private String newBieAfterSalesId;
@NotBlank(message = "业务类型不能为空, 99001文件分析99002审计报告")
@NotBlank(message = "业务类型不能为空, 99001文件分析99002审计报告99003文件分类")
private String businessType;
//文件类型 dtc诊断报告
@@ -33,4 +33,23 @@ public class ClaimVerificationFileDTO {
//诊断报告
private JSONObject diagnosticReport;
//诊断报告
private JSONObject warrantyReport;
//ai分析请求id
private String aiAnalysisRequestId;
//文件分类列表
private List<ClaimVerificationFile> claimVerificationFiles;
@Data
@AllArgsConstructor
@NoArgsConstructor
public static class ClaimVerificationFile {
private String fileBusinessId;
private String fileObsPath;
private String fileType;
}
}

View File

@@ -0,0 +1,18 @@
package com.volvo.ai.analytic.center.dto.req;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
@Data
@AllArgsConstructor
@NoArgsConstructor
public class ClaimVerificationPartHoursDTO {
//主零件id
private String partId;
//主零件工时id
private String hoursId;
}

View File

@@ -12,6 +12,7 @@ public class CommunityTargetDTO {
private String targetType;
private String targetId;
private String communityRequestId;
private String communityType;
private List<ContentNode> content;
@Setter

View File

@@ -0,0 +1,18 @@
package com.volvo.ai.analytic.center.dto.req;
import com.fasterxml.jackson.annotation.JsonFormat;
import lombok.Data;
import java.util.Date;
@Data
public class ConsultingRequestDTO {
private String businessType; // 新增字段
private String text;
private String sourceCorpusId;
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
private Date sourceCorpusTime;
}

View File

@@ -0,0 +1,27 @@
package com.volvo.ai.analytic.center.dto.req;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
import java.util.List;
@Data
@AllArgsConstructor
@NoArgsConstructor
public class SpokesManDTO {
private List<String> files;
private String platform;
private String theme;
private String communityRequestId;
private String redNoteType;
private String userId;
private String postUrl;
}

View File

@@ -0,0 +1,13 @@
package com.volvo.ai.analytic.center.dto.req;
import com.alibaba.fastjson.JSONObject;
import lombok.Data;
@Data
public class SummaryQuestionRequestDTO {
private String summaryReportId;
private String preliminarySummaryResults;
}

View File

@@ -0,0 +1,13 @@
package com.volvo.ai.analytic.center.entity;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
@Data
@AllArgsConstructor
@NoArgsConstructor
public class DifySpokesManDTO {
private String channel;
}

View File

@@ -0,0 +1,69 @@
package com.volvo.ai.analytic.center.entity;
import com.baomidou.mybatisplus.annotation.*;
import com.volvo.common.core.base.BaseEntity;
import lombok.Data;
import lombok.EqualsAndHashCode;
@Data
@EqualsAndHashCode(callSuper = true)
@TableName("tm_claim_verification_part_hours_mapping")
public class TmClaimVerificationPartHoursMapping extends BaseEntity {
private static final long serialVersionUID = 1L;
/**
* 自增主键id
*/
@TableId(value = "id", type = IdType.AUTO)
private Long id;
/**
* 外键part_id
*/
@TableField("part_id")
private String partId;
/**
* 外键hours_id
*/
@TableField("hours_id")
private String hoursId;
/**
* 记录版本号,即乐观锁
*/
@TableField("versions")
private Integer versions;
/**
* 删除标识0-未删除1-已删除)
*/
@TableField("is_deleted")
private Integer isDeleted;
/**
* 创建人
*/
@TableField("create_by")
private String createBy;
/**
* 更新人
*/
@TableField("update_by")
private String updateBy;
/**
* 创建sql人
*/
@TableField("create_sqlby")
private String createSqlby;
/**
* 更新sql人
*/
@TableField("update_sqlby")
private String updateSqlby;
}

View File

@@ -0,0 +1,125 @@
package com.volvo.ai.analytic.center.entity;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import lombok.Data;
import java.util.Date;
/**
* 单条语料分析结论表
*/
@Data
@TableName("tm_corpus_question_report")
public class TmCorpusQuestionReport {
private static final long serialVersionUID = 1L;
/**
* 主键id
*/
@TableId(value = "id", type = IdType.AUTO)
private Long id;
/**
* 主类别
*/
@TableField("main_category")
private String mainCategory;
/**
* 子类别
*/
@TableField("sub_category")
private String subCategory;
/**
* 置信度
*/
@TableField("confidence")
private String confidence;
/**
* 业务类型
*/
@TableField("business_type")
private String businessType;
/**
* 用户需求
*/
@TableField("user_demand")
private String userDemand;
/**
* 分析结果
*/
@TableField("analysis_result_json")
private String analysisResultJson;
/**
* 删除标识0-未删除1-已删除)
*/
@TableField("is_deleted")
private Integer isDeleted;
/**
* 记录版本号,即乐观锁
*/
@TableField("versions")
private Integer versions;
/**
* 创建人
*/
@TableField("create_by")
private String createBy;
/**
* 更新人
*/
@TableField("update_by")
private String updateBy;
/**
* 创建sql人
*/
@TableField("create_sqlby")
private String createSqlby;
/**
* 更新sql人
*/
@TableField("update_sqlby")
private String updateSqlby;
/**
* 创建时间
*/
@TableField("create_time")
private Date createTime;
/**
* 更新时间
*/
@TableField("update_time")
private Date updateTime;
/**
* 原语料外部主键
*/
@TableField("source_corpus_id")
private String sourceCorpusId;
/**
* 原语料时间
*/
@TableField("source_corpus_time")
private Date sourceCorpusTime;
}

View File

@@ -0,0 +1,105 @@
package com.volvo.ai.analytic.center.entity;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import lombok.Data;
import java.util.Date;
/**
* 语料分析初步总结表
*/
@Data
@TableName("tm_corpus_question_summary_report")
public class TmCorpusQuestionSummaryReport {
private static final long serialVersionUID = 1L;
/**
* 主键id
*/
@TableId(value = "id", type = IdType.AUTO)
private Long id;
/**
* 主类别
*/
@TableField("main_category")
private String mainCategory;
/**
* 子类别
*/
@TableField("sub_category")
private String subCategory;
/**
* 初步结果
*/
@TableField("preliminary_summary_results")
private String preliminarySummaryResults;
/**
* 原语料时间
*/
@TableField("source_time")
private Date sourceTime;
/**
* 关联id
*/
@TableField("summary_report_id")
private String summaryReportId;
/**
* 删除标识0-未删除1-已删除)
*/
@TableField("is_deleted")
private Integer isDeleted;
/**
* 记录版本号,即乐观锁
*/
@TableField("versions")
private Integer versions;
/**
* 创建人
*/
@TableField("create_by")
private String createBy;
/**
* 更新人
*/
@TableField("update_by")
private String updateBy;
/**
* 创建sql人
*/
@TableField("create_sqlby")
private String createSqlby;
/**
* 更新sql人
*/
@TableField("update_sqlby")
private String updateSqlby;
/**
* 创建时间
*/
@TableField("create_time")
private Date createTime;
/**
* 更新时间
*/
@TableField("update_time")
private Date updateTime;
}

View File

@@ -0,0 +1,232 @@
package com.volvo.ai.analytic.center.entity;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
import java.util.Date;
/**
* @author Lingma (灵码)
* @description 湖仓同步AI铭牌到店试驾语料信息 (tm_ods_ainp_arrival_testdrive_voice_info)
* @date 2025-07-17
*/
@Data
@TableName("tm_ods_ainp_arrival_testdrive_voice_info")
@Builder
@AllArgsConstructor
@NoArgsConstructor
public class TmOdsAinpArrivalTestdriveVoiceInfo {
private static final long serialVersionUID = 1L;
/**
* 主键id
*/
@TableId(value = "id", type = IdType.AUTO)
private Long id;
/**
* 客流id
*/
@TableField("cust_flow_id")
private Long custFlowId;
/**
* 商机id
*/
@TableField("biz_opp_id")
private Long bizOppId;
/**
* 试驾id
*/
@TableField("test_drive_id")
private Long testDriveId;
/**
* 经销商代码
*/
@TableField("dealer_code")
private String dealerCode;
/**
* 线索状态
*/
@TableField("leads_stat")
private Integer leadsStat;
/**
* 厅接待意向车型
*/
@TableField("showroom_reception_intention_veh_model")
private String showroomReceptionIntentionVehModel;
/**
* 厅接待意向车型燃料类型
*/
@TableField("showroom_veh_model_fuel_type")
private Integer showroomVehModelFuelType;
/**
* 商机主意向车型
*/
@TableField("main_intention_veh_model")
private String mainIntentionVehModel;
/**
* 商机主意向车型燃料类型
*/
@TableField("main_intention_veh_model_fuel_type")
private Integer mainIntentionVehModelFuelType;
/**
* 试驾车型
*/
@TableField("test_drive_veh_model")
private String testDriveVehModel;
/**
* 试驾车型燃料类型
*/
@TableField("test_drive_veh_model_fuel_type")
private Integer testDriveVehModelFuelType;
/**
* 到店销售顾问id
*/
@TableField("arrival_sales_consultant_id")
private String arrivalSalesConsultantId;
/**
* 到店销售顾问
*/
@TableField("arrival_sales_consultant")
private String arrivalSalesConsultant;
/**
* 到店接待顾问id
*/
@TableField("arrival_reception_consultant_id")
private String arrivalReceptionConsultantId;
/**
* 到店接待顾问
*/
@TableField("arrival_reception_consultant")
private String arrivalReceptionConsultant;
/**
* 试驾销售顾问id
*/
@TableField("test_drive_sales_consultant_id")
private String testDriveSalesConsultantId;
/**
* 试驾销售顾问
*/
@TableField("test_drive_sales_consultant")
private String testDriveSalesConsultant;
/**
* 试驾顾问id
*/
@TableField("test_drive_consultant_id")
private String testDriveConsultantId;
/**
* 试驾顾问
*/
@TableField("test_drive_consultant")
private String testDriveConsultant;
/**
* 试驾开始时间
*/
@TableField("test_drive_start_time")
private Date testDriveStartTime;
/**
* 试驾结束时间
*/
@TableField("test_drive_end_time")
private Date testDriveEndTime;
/**
* 录音开始时间
*/
@TableField("voice_start_time")
private String voiceStartTime;
/**
* 录音结束时间
*/
@TableField("voice_end_time")
private String voiceEndTime;
/**
* 录音时长,单位秒
*/
@TableField("voice_duration")
private Integer voiceDuration;
/**
* 语料内容
*/
@TableField("content")
private String content;
/**
* 声道标识位
*/
@TableField("is_mix")
private Byte isMix;
/**
* 语料类型
*/
@TableField("content_code")
private Byte contentCode;
/**
* 分区字段
*/
@TableField("pday")
private String pday;
/**
* 创建时间
*/
@TableField("created_time")
private Date createdTime;
/**
* 创建人
*/
@TableField("created_by")
private String createdBy;
/**
* 更新时间
*/
@TableField("updated_time")
private Date updatedTime;
/**
* 更新人
*/
@TableField("updated_by")
private String updatedBy;
/**
* 删除标志位0未删除1已删除
*/
@TableField("is_deleted")
private Byte isDeleted;
}

View File

@@ -0,0 +1,171 @@
package com.volvo.ai.analytic.center.entity;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
import java.util.Date;
/**
* @description 湖仓同步实时IM消息表 (tm_ods_im_realtime_message_cur)
* @date 2025-07-17
*/
@Data
@TableName("tm_ods_im_realtime_message_cur")
@Builder
@AllArgsConstructor
@NoArgsConstructor
public class TmOdsImRealtimeMessageCur {
private static final long serialVersionUID = 1L;
/**
* 主键id
*/
@TableId(value = "id", type = IdType.AUTO)
private Long id;
/**
* 消息唯一标识键
*/
@TableField("msg_key")
private String msgKey;
/**
* 会话ID
*/
@TableField("session_id")
private String sessionId;
/**
* 消息内容
*/
@TableField("msg_content")
private String msgContent;
/**
* 消息类型,文本类型TIMTextElem
*/
@TableField("msg_type")
private String msgType;
/**
* 消息体
*/
@TableField("msg_body")
private String msgBody;
/**
* 客户类型0:用户 1百度 2GPT 3人工 4唯都Agent
*/
@TableField("customer_type")
private Integer customerType;
/**
* 云端自定义数据
*/
@TableField("cloud_custom_data")
private String cloudCustomData;
/**
* 客服来源
*/
@TableField("cs_source")
private String csSource;
/**
* 发送方账号
*/
@TableField("from_account")
private String fromAccount;
/**
* 插入时间原字符串格式转换为datetime
*/
@TableField("insert_time")
private Date insertTime;
/**
* 会员ID
*/
@TableField("member_id")
private String memberId;
/**
* 消息标志位
*/
@TableField("msg_flag_bits")
private Integer msgFlagBits;
/**
* 消息随机数
*/
@TableField("msg_random")
private Long msgRandom;
/**
* 消息序列号
*/
@TableField("msg_seq")
private String msgSeq;
/**
* 消息时间戳(毫秒级)
*/
@TableField("msg_timestamp")
private Long msgTimestamp;
/**
* 第三方平台OpenID
*/
@TableField("open_id")
private String openId;
/**
* 来源标识 0:公众号1app
*/
@TableField("source_type")
private Integer sourceType;
/**
* 接收方账号
*/
@TableField("to_account")
private String toAccount;
/**
* 创建时间
*/
@TableField("created_time")
private Date createdTime;
/**
* 创建人
*/
@TableField("created_by")
private String createdBy;
/**
* 更新时间
*/
@TableField("updated_time")
private Date updatedTime;
/**
* 更新人
*/
@TableField("updated_by")
private String updatedBy;
/**
* 删除标志位0未删除1已删除
*/
@TableField("is_deleted")
private Byte isDeleted;
}

View File

@@ -6,16 +6,21 @@ import lombok.Getter;
public enum BusinessTypeEnum {
COMMUNITYTARGET("CommunityTarget", "社区舆情分析"),
FEEDQUALITY("feedQuality", "Feed流好内容"),
PUBLICOPINIONAUTOMATION("publicOpinionAutomation", "舆情自动化"),
SMART_ASSISTANT("SMART_ASSISTANT", "智能助手-DCC"),
SMART_ASSISTANT_QIWEI("SMART_ASSISTANT_QIWEI", "智能助手-企微"),
INTELLIGENT_CUSTOMER("INTELLIGENT_CUSTOMER_4IN1", "智能客服-4合一"),
SMART_ASSISTANT_4IN1("SMART_ASSISTANT_4IN1", "智能客服-4In1"),
//索赔检核
CLAIM_VERIFICATION("CLAIM_VERIFICATION", "索赔检核流程"),
CLAIM_VERIFICATION_FILE_ANALYSIS("99001", "索赔检核文件分析"),
CLAIM_VERIFICATION_AUDIT("99002", "索赔检核审计报告"),
CLAIM_VERIFICATION_DTC("DTC", "DTC报告"),
CLAIM_VERIFICATION_DIAGNOSTIC("DIAGNOSTIC", "诊断报告"),
CLAIM_VERIFICATION_CLASSIFY("CLAIM_VERIFICATION_CLASSIFY", "索赔检核文件分类"),
CLAIM_VERIFICATION_CLASSIFY_APP("99003", "索赔检核文件分类/应用侧"),
//索赔检核配置类型
AUDITRULES("AuditRules", "审计规则配置"),
@@ -25,6 +30,18 @@ public enum BusinessTypeEnum {
SMART_ASSISTANT_NAMEPLATE("SMART_ASSISTANT_NAMEPLATE", "智能助手-铭牌"),
IM_CORPUS_ANALYSIS("IM_CORPUS_ANALYSIS", "IM语料库"),
SUMMARY_REPORT("SUMMARY_REPORT", "问题总结"),
//特邀发言官
SPOKESMAN("SPOKESMAN", "特邀发言官"),
//特邀发言官敏感词
SPOKESMAN_SENSITIVE_WORD("SPOKESMAN_SENSITIVE_WORD", "特邀发言官敏感词"),
//特邀发言官审核规则
SPOKESMAN_AUDIT_RULE("SPOKESMAN_AUDIT_RULE", "特邀发言官审核规则"),
SMART_ASSISTANT_NAMEPLATE("SMART_ASSISTANT_NAMEPLATE", "智能助手-铭牌"),
CORPUS_PORTRAIT_DCC("CORPUS_PORTRAIT_DCC", "智能助手-画像-DCC"),
CORPUS_PORTRAIT_QIWEI("CORPUS_PORTRAIT_QIWEI", "智能助手-画像-企微"),
CORPUS_PORTRAIT_NAMEPLATE("CORPUS_PORTRAIT_NAMEPLATE", "智能助手-画像-铭牌"),

View File

@@ -0,0 +1,27 @@
package com.volvo.ai.analytic.center.enums;
public enum ImCustomTypeEnums {
CUSTOMER(0, "用户"),
BAIDU(1, "百度"),
GPT(2, "GPT"),
MANUAL(3, "人工"),
VOLVO_AGENT(4, "唯都Agent"),
;
private Integer code;
private String message;
ImCustomTypeEnums(Integer code, String message) {
this.code = code;
this.message = message;
}
public Integer getCode() {
return this.code;
}
public String getMessage() {
return this.message;
}
}

View File

@@ -0,0 +1,26 @@
package com.volvo.ai.analytic.center.enums;
public enum QuestionMainCategoryEnum {
CAR_PURCHASE_RELATED("CAR_PURCHASE_RELATED", "购车相关"),
AFTER_SALES_SERVICE("AFTER_SALES_SERVICE", "售后服务"),
USER_OPERATION("USER_OPERATION", "用户运营"),
CORPORATE_VALUES("CORPORATE_VALUES", "企业价值观"),
SCENE_NOT_CLEAR("SCENE_NOT_CLEAR", "场景不明确"),
;
private String code;
private String message;
QuestionMainCategoryEnum(String code, String message) {
this.code = code;
this.message = message;
}
public String getCode() {
return this.code;
}
public String getMessage() {
return this.message;
}
}