From f6ad404f652da438a481891f0db869df5878c146 Mon Sep 17 00:00:00 2001 From: spllzh <28668817@qq.com> Date: Mon, 29 Sep 2025 22:29:44 +0800 Subject: [PATCH] =?UTF-8?q?=E9=9F=B3=E9=A2=91=E7=AE=A1=E7=90=86=E5=92=8C?= =?UTF-8?q?=E7=BB=B4=E5=BA=A6=E5=88=86=E6=9E=90?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/main/java/com/rj/common/PasswordUtil.java | 4 + .../java/com/rj/common/ServiceManager.java | 4 + src/main/java/com/rj/config/AliyunConfig.java | 4 + .../rj/controller/biz/TopSalesController.java | 21 +- .../com/rj/controller/sys/AuthController.java | 4 + .../com/rj/controller/sys/MenuController.java | 4 + .../com/rj/controller/sys/RoleController.java | 4 + .../rj/controller/sys/UserRoleController.java | 4 + .../com/rj/dto/DifyWorkflowResponseDto.java | 5 + .../java/com/rj/entity/AudioManagement.java | 4 + .../mapper/CustomerProfileAnalysisMapper.java | 4 + .../java/com/rj/pojo/sys/LoginResponse.java | 4 + .../AudioMockInsertDataScheduler.java | 253 ++++++++++++++++++ .../scheduler/AudioStatisticsScheduler.java | 4 + .../biz/ICustomerProfileAnalysisService.java | 4 + .../biz/ITopSalesScoreResultService.java | 2 +- .../CustomerProfileAnalysisServiceImpl.java | 4 + .../impl/TopSalesScoreResultServiceImpl.java | 12 +- .../java/com/rj/service/sys/IMenuService.java | 4 + .../com/rj/service/sys/IUserRoleService.java | 4 + .../rj/service/sys/impl/MenuServiceImpl.java | 4 + .../rj/service/sys/impl/RoleServiceImpl.java | 4 + .../service/sys/impl/UserRoleServiceImpl.java | 4 + src/main/resources/application-audio.yml | 4 + .../customer-profile-analysis-example.json | 20 -- .../dify-workflow-request-example.json | 9 - .../mapper/AudioManagementMapper.xml | 10 +- .../AudioManagementStatisticsMapper.xml | 4 + src/main/sql/audio_management.sql | 1 + .../sql/topsales_score_result20250929.sql | 55 ++++ src/main/sql/适配准真实.sql | 25 +- 31 files changed, 443 insertions(+), 50 deletions(-) create mode 100644 src/main/java/com/rj/scheduler/AudioMockInsertDataScheduler.java delete mode 100644 src/main/resources/customer-profile-analysis-example.json delete mode 100644 src/main/resources/dify-workflow-request-example.json create mode 100644 src/main/sql/topsales_score_result20250929.sql diff --git a/src/main/java/com/rj/common/PasswordUtil.java b/src/main/java/com/rj/common/PasswordUtil.java index 964a872..5ade3a3 100644 --- a/src/main/java/com/rj/common/PasswordUtil.java +++ b/src/main/java/com/rj/common/PasswordUtil.java @@ -112,6 +112,10 @@ public class PasswordUtil { + + + + diff --git a/src/main/java/com/rj/common/ServiceManager.java b/src/main/java/com/rj/common/ServiceManager.java index d5d2ef6..417b68c 100644 --- a/src/main/java/com/rj/common/ServiceManager.java +++ b/src/main/java/com/rj/common/ServiceManager.java @@ -96,6 +96,10 @@ public class ServiceManager { + + + + diff --git a/src/main/java/com/rj/config/AliyunConfig.java b/src/main/java/com/rj/config/AliyunConfig.java index 6a8f977..65429a1 100644 --- a/src/main/java/com/rj/config/AliyunConfig.java +++ b/src/main/java/com/rj/config/AliyunConfig.java @@ -74,6 +74,10 @@ public class AliyunConfig { + + + + diff --git a/src/main/java/com/rj/controller/biz/TopSalesController.java b/src/main/java/com/rj/controller/biz/TopSalesController.java index 8059204..54bcd2c 100644 --- a/src/main/java/com/rj/controller/biz/TopSalesController.java +++ b/src/main/java/com/rj/controller/biz/TopSalesController.java @@ -15,6 +15,9 @@ import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.rj.entity.bz.TopSalesScoreResult; +import java.util.HashMap; +import java.util.Map; + @Slf4j @RestController @RequestMapping("/api/topsales") @@ -26,16 +29,20 @@ public class TopSalesController { @PostMapping("/score") @Operation(summary = "调用TopSales评分工作流") - public ResponseEntity score(@Valid @RequestBody TopSalesScoreRequestDto requestDto) { + public ResponseEntity> score(@Valid @RequestBody TopSalesScoreRequestDto requestDto) { + Map result = new HashMap<>(); try { - return ResponseEntity.ok(topSalesScoreResultService.callAndSave(requestDto)); + result.put("success", true); + result.put("message", "TopSales评分成功"); + result.put("data", topSalesScoreResultService.callAndSave(requestDto)); + return ResponseEntity.ok(result); + } catch (Exception e) { + String ss ="TopSales评分工作流调用失败: " + e.getMessage() ; + result.put("success", true); + result.put("message", ss); log.error("调用TopSales评分工作流失败", e); - DifyWorkflowResponseDto error = DifyWorkflowResponseDto.failure( - "TopSales评分工作流调用失败: " + e.getMessage(), - e.getClass().getSimpleName() - ); - return ResponseEntity.status(500).body(error); + return ResponseEntity.status(500).body(result ); } } diff --git a/src/main/java/com/rj/controller/sys/AuthController.java b/src/main/java/com/rj/controller/sys/AuthController.java index 9da2ee9..8fd2cc9 100644 --- a/src/main/java/com/rj/controller/sys/AuthController.java +++ b/src/main/java/com/rj/controller/sys/AuthController.java @@ -195,6 +195,10 @@ public class AuthController { + + + + diff --git a/src/main/java/com/rj/controller/sys/MenuController.java b/src/main/java/com/rj/controller/sys/MenuController.java index 84e3a18..d156663 100644 --- a/src/main/java/com/rj/controller/sys/MenuController.java +++ b/src/main/java/com/rj/controller/sys/MenuController.java @@ -334,6 +334,10 @@ public class MenuController { + + + + diff --git a/src/main/java/com/rj/controller/sys/RoleController.java b/src/main/java/com/rj/controller/sys/RoleController.java index c3975f6..9a898d3 100644 --- a/src/main/java/com/rj/controller/sys/RoleController.java +++ b/src/main/java/com/rj/controller/sys/RoleController.java @@ -304,6 +304,10 @@ public class RoleController { + + + + diff --git a/src/main/java/com/rj/controller/sys/UserRoleController.java b/src/main/java/com/rj/controller/sys/UserRoleController.java index 2255c30..289684e 100644 --- a/src/main/java/com/rj/controller/sys/UserRoleController.java +++ b/src/main/java/com/rj/controller/sys/UserRoleController.java @@ -310,6 +310,10 @@ public class UserRoleController { + + + + diff --git a/src/main/java/com/rj/dto/DifyWorkflowResponseDto.java b/src/main/java/com/rj/dto/DifyWorkflowResponseDto.java index 92a5f79..0567df9 100644 --- a/src/main/java/com/rj/dto/DifyWorkflowResponseDto.java +++ b/src/main/java/com/rj/dto/DifyWorkflowResponseDto.java @@ -49,6 +49,7 @@ public class DifyWorkflowResponseDto { return response; } + /** * 创建失败响应 */ @@ -76,6 +77,10 @@ public class DifyWorkflowResponseDto { + + + + diff --git a/src/main/java/com/rj/entity/AudioManagement.java b/src/main/java/com/rj/entity/AudioManagement.java index c2ef961..8b7d16c 100644 --- a/src/main/java/com/rj/entity/AudioManagement.java +++ b/src/main/java/com/rj/entity/AudioManagement.java @@ -155,4 +155,8 @@ public class AudioManagement implements Serializable { @TableField("audio_file_extension") private String audioFileExtension; + @Schema(description = "录音文本内容") + @TableField("recording_text") + private String recordingText; + } diff --git a/src/main/java/com/rj/mapper/CustomerProfileAnalysisMapper.java b/src/main/java/com/rj/mapper/CustomerProfileAnalysisMapper.java index a4783cb..ea96cfd 100644 --- a/src/main/java/com/rj/mapper/CustomerProfileAnalysisMapper.java +++ b/src/main/java/com/rj/mapper/CustomerProfileAnalysisMapper.java @@ -25,3 +25,7 @@ public interface CustomerProfileAnalysisMapper extends BaseMapper> resp = audioManagementController.addAudio(audio); + if (resp != null && resp.getStatusCode().is2xxSuccessful()) { + success++; + } else { + log.warn("第{}次插入失败,返回:{}", i + 1, resp == null ? "null" : resp.getStatusCode()); + } + } + log.info("音频管理模拟数据任务完成,共尝试100次,成功 {} 次", success); + } catch (Exception e) { + log.error("音频管理模拟数据任务异常", e); + } + } + + private AudioManagement buildMockAudioManagement() { + AudioManagement audio = new AudioManagement(); + + // 销售、项目、门店 + String[] sale = pick(SALES_PEOPLE); + String[] project = pick(PROJECTS); + String[] dealer = pick(DEALERSHIPS); + + // 录音与上传时间:近7天随机时间 + LocalDateTime now = LocalDateTime.now(); + LocalDateTime recordTime = now.minusDays(ThreadLocalRandom.current().nextInt(0, 7)) + .minusHours(ThreadLocalRandom.current().nextInt(0, 24)) + .minusMinutes(ThreadLocalRandom.current().nextInt(0, 60)); + + // 基本字段 + audio.setRecordingName(project[1] + "-客户沟通录音-" + (1000 + random.nextInt(9000))); + audio.setRecordingTime(recordTime); + audio.setSalesId(sale[0]); + audio.setSalesName(sale[1]); + audio.setDuration(new BigDecimal(String.format("%d.%d", + 5 + random.nextInt(55), // 分钟 + random.nextInt(10)))); + audio.setCustomerId(null); + audio.setCustomerName(randomChineseName()); + audio.setCustomerPhone(generatePhone()); + audio.setUploadTime(recordTime.plusMinutes(random.nextInt(180))); + audio.setIntentionLevel(pick(INTENTION_LEVELS)); + audio.setDealershipId(dealer[0]); + audio.setDealershipName(dealer[1]); + audio.setProjectId(project[0]); + audio.setProjectName(project[1]); + audio.setScriptModel(pick(SCRIPT_MODELS)); + audio.setUploadStatus(pick(UPLOAD_STATUS)); + audio.setSyncStatus(pick(SYNC_STATUS)); + audio.setIsMerged(random.nextBoolean()); + audio.setRemarks(buildRemarks(project[1], dealer[1], audio.getCustomerName())); + audio.setCompanyType(pick(COMPANY_TYPES)); + audio.setEditStatus(pick(EDIT_STATUS)); + audio.setEditTime(now); + audio.setInfoCardType("来访目的/试驾结果"); + audio.setInfoCarddescription("对" + project[1] + " 车型有兴趣,试驾体验良好,关注金融政策"); + audio.setCreateTime(now); + audio.setUpdateTime(now); + + // 文件信息可为空或模拟(此处留空,避免依赖真实文件) + audio.setAudioFilePath(null); + audio.setAudioFileUrl(null); + audio.setAudioFileSize(null); + audio.setAudioFileOriginalName(null); + audio.setAudioFileExtension(null); + + // 随机选择录音文本内容 + audio.setRecordingText(pick(MOCK_RECORDING_TEXTS)); + + return audio; + } + + private String[] pick(String[][] arr) { + return arr[random.nextInt(arr.length)]; + } + + private String pick(String[] arr) { + return arr[random.nextInt(arr.length)]; + } + + private String generatePhone() { + String prefix = pick(PHONE_PREFIXES); + int mid = 100 + random.nextInt(900); + int tail = 1000 + random.nextInt(9000); + return prefix + mid + tail; + } + + private String randomChineseName() { + String[] family = {"王", "李", "张", "刘", "陈", "杨", "赵", "黄", "周", "吴", "徐", "孙"}; + String[] given = {"伟", "芳", "娜", "敏", "静", "强", "磊", "军", "洋", "艳", "勇", "杰"}; + return family[random.nextInt(family.length)] + given[random.nextInt(given.length)]; + } + + private String buildRemarks(String projectName, String dealerName, String customerName) { + Map phrases = new HashMap<>(); + phrases.put("A", "客户咨询配置与优惠政策"); + phrases.put("B", "对试驾体验较为满意"); + phrases.put("C", "计划一周内回访确认"); + phrases.put("D", "倾向贷款方案"); + String chosen = phrases.values().stream().skip(random.nextInt(phrases.size())).findFirst().orElse("无"); + return customerName + " 在 " + dealerName + " 咨询 " + projectName + "," + chosen; + } +} + + diff --git a/src/main/java/com/rj/scheduler/AudioStatisticsScheduler.java b/src/main/java/com/rj/scheduler/AudioStatisticsScheduler.java index e003203..73c9a47 100644 --- a/src/main/java/com/rj/scheduler/AudioStatisticsScheduler.java +++ b/src/main/java/com/rj/scheduler/AudioStatisticsScheduler.java @@ -80,6 +80,10 @@ public class AudioStatisticsScheduler { + + + + diff --git a/src/main/java/com/rj/service/biz/ICustomerProfileAnalysisService.java b/src/main/java/com/rj/service/biz/ICustomerProfileAnalysisService.java index 5dffa71..e977d05 100644 --- a/src/main/java/com/rj/service/biz/ICustomerProfileAnalysisService.java +++ b/src/main/java/com/rj/service/biz/ICustomerProfileAnalysisService.java @@ -46,3 +46,7 @@ public interface ICustomerProfileAnalysisService extends IService { - DifyWorkflowResponseDto callAndSave(TopSalesScoreRequestDto requestDto); + TopSalesScoreResult callAndSave(TopSalesScoreRequestDto requestDto); TopSalesScoreResult getByWorkflowId(String workflowId); } diff --git a/src/main/java/com/rj/service/biz/impl/CustomerProfileAnalysisServiceImpl.java b/src/main/java/com/rj/service/biz/impl/CustomerProfileAnalysisServiceImpl.java index a6a52c2..acb2896 100644 --- a/src/main/java/com/rj/service/biz/impl/CustomerProfileAnalysisServiceImpl.java +++ b/src/main/java/com/rj/service/biz/impl/CustomerProfileAnalysisServiceImpl.java @@ -81,3 +81,7 @@ public class CustomerProfileAnalysisServiceImpl extends ServiceImpl { + + + + diff --git a/src/main/java/com/rj/service/sys/IUserRoleService.java b/src/main/java/com/rj/service/sys/IUserRoleService.java index 72c97c1..8c6db2f 100644 --- a/src/main/java/com/rj/service/sys/IUserRoleService.java +++ b/src/main/java/com/rj/service/sys/IUserRoleService.java @@ -43,6 +43,10 @@ public interface IUserRoleService extends IService { + + + + diff --git a/src/main/java/com/rj/service/sys/impl/MenuServiceImpl.java b/src/main/java/com/rj/service/sys/impl/MenuServiceImpl.java index c76e00d..fcad786 100644 --- a/src/main/java/com/rj/service/sys/impl/MenuServiceImpl.java +++ b/src/main/java/com/rj/service/sys/impl/MenuServiceImpl.java @@ -47,6 +47,10 @@ public class MenuServiceImpl extends ServiceImpl implements IM + + + + diff --git a/src/main/java/com/rj/service/sys/impl/RoleServiceImpl.java b/src/main/java/com/rj/service/sys/impl/RoleServiceImpl.java index 17e1027..f0d4348 100644 --- a/src/main/java/com/rj/service/sys/impl/RoleServiceImpl.java +++ b/src/main/java/com/rj/service/sys/impl/RoleServiceImpl.java @@ -47,6 +47,10 @@ public class RoleServiceImpl extends ServiceImpl implements IR + + + + diff --git a/src/main/java/com/rj/service/sys/impl/UserRoleServiceImpl.java b/src/main/java/com/rj/service/sys/impl/UserRoleServiceImpl.java index 8d01cb7..9f8adcc 100644 --- a/src/main/java/com/rj/service/sys/impl/UserRoleServiceImpl.java +++ b/src/main/java/com/rj/service/sys/impl/UserRoleServiceImpl.java @@ -47,6 +47,10 @@ public class UserRoleServiceImpl extends ServiceImpl i + + + + diff --git a/src/main/resources/application-audio.yml b/src/main/resources/application-audio.yml index 77f2bf1..e3acd4f 100644 --- a/src/main/resources/application-audio.yml +++ b/src/main/resources/application-audio.yml @@ -57,6 +57,10 @@ spring: + + + + diff --git a/src/main/resources/customer-profile-analysis-example.json b/src/main/resources/customer-profile-analysis-example.json deleted file mode 100644 index 050981d..0000000 --- a/src/main/resources/customer-profile-analysis-example.json +++ /dev/null @@ -1,20 +0,0 @@ -{ - "chat": "客户:你好,我想了解一下沃尔沃XC60这款车。\n顾问:您好!很高兴为您介绍沃尔沃XC60。这是一款中型豪华SUV,在安全性和环保方面表现非常出色。\n客户:我比较关心安全性能,听说沃尔沃在安全方面做得很好?\n顾问:是的,沃尔沃XC60配备了City Safety城市安全系统,还有Pilot Assist领航辅助系统,在主动安全方面非常先进。\n客户:那价格方面怎么样?我预算大概在40-50万左右。\n顾问:XC60的指导价在37-47万之间,您的预算完全够用。而且我们现在有置换补贴和金融方案,可以帮您降低购车成本。\n客户:我目前开的是宝马X3,想置换。置换的话有什么优惠吗?\n顾问:宝马X3置换XC60的话,我们可以提供1万元的置换补贴,还有3年免费保养。您对XC60的哪个配置比较感兴趣?\n客户:我比较喜欢T5智远豪华版,配置比较均衡。\n顾问:T5智远豪华版确实是个不错的选择,配置很丰富,包括全景天窗、真皮座椅、哈曼卡顿音响等。您平时主要是家用还是商务用途?\n客户:主要是家用,偶尔会跑长途。\n顾问:那XC60非常适合您,空间宽敞,长途驾驶也很舒适。而且沃尔沃的环保理念很好,车内空气质量是同级最好的。", - "communicateDate": "2025-01-03 14:30:00", - "analysisScene": "wechat_chat", - "aiAnalysisRequestId": "ai_req_20250103_001", - "businessId": "union_12345", - "customerFlowId": "flow_67890", - "businessType": "wechat_chat" -} - - - - - - - - - - - diff --git a/src/main/resources/dify-workflow-request-example.json b/src/main/resources/dify-workflow-request-example.json deleted file mode 100644 index c97cae5..0000000 --- a/src/main/resources/dify-workflow-request-example.json +++ /dev/null @@ -1,9 +0,0 @@ -{ - "unionId": "test_union_12345", - "consultantId": "consultant_67890", - "communicateDate": "2025-01-03 10:30:00", - "analysisScene": "sales_consultation", - "aiAnalysisRequestId": "ai_req_20250103_001", - "version": 1, - "chat": "客户:你好,我想了解一下沃尔沃XC60这款车。\n顾问:您好!很高兴为您介绍沃尔沃XC60。这是一款非常优秀的中型SUV,请问您主要关注哪些方面呢?\n客户:我比较关心安全性能和油耗表现。\n顾问:XC60在安全方面表现非常出色,配备了City Safety城市安全系统,还有Pilot Assist领航辅助系统。油耗方面,2.0T发动机百公里综合油耗约8.5L。\n客户:价格大概是多少?\n顾问:XC60的指导价在37.39-47.49万元之间,目前有优惠活动,可以优惠3万元左右。\n客户:我预算在40万以内,有什么推荐的配置吗?\n顾问:根据您的预算,我推荐智逸豪华版,指导价39.69万,优惠后36.69万,完全符合您的预算。\n客户:好的,我考虑一下,什么时候可以试驾?\n顾问:明天下午2点可以安排试驾,您方便吗?\n客户:可以的,我明天下午过去。\n顾问:好的,我为您预约明天下午2点的试驾,地址是..." -} diff --git a/src/main/resources/mapper/AudioManagementMapper.xml b/src/main/resources/mapper/AudioManagementMapper.xml index d26c769..7080999 100644 --- a/src/main/resources/mapper/AudioManagementMapper.xml +++ b/src/main/resources/mapper/AudioManagementMapper.xml @@ -28,14 +28,20 @@ - + + + + + + + - id, recording_name, recording_time, sales_id, sales_name, duration, customer_id, customer_name, customer_phone, upload_time, intention_level, dealership_id, dealership_name, project_id, project_name, script_model, upload_status, sync_status, is_merged, remarks, company_type, edit_status, edit_time, info_card_type, info_card_value, create_time, update_time + id, recording_name, recording_time, info_card_description, sales_id, sales_name, duration, customer_id, customer_name, customer_phone, upload_time, intention_level, dealership_id, dealership_name, project_id, project_name, script_model, upload_status, sync_status, is_merged, remarks, company_type, edit_status, edit_time, info_card_type, info_card_value, create_time, update_time, audio_file_path, audio_file_url, audio_file_size, audio_file_original_name, audio_file_extension, recording_text diff --git a/src/main/resources/mapper/AudioManagementStatisticsMapper.xml b/src/main/resources/mapper/AudioManagementStatisticsMapper.xml index 7eaefb9..34ffd2c 100644 --- a/src/main/resources/mapper/AudioManagementStatisticsMapper.xml +++ b/src/main/resources/mapper/AudioManagementStatisticsMapper.xml @@ -33,6 +33,10 @@ + + + + diff --git a/src/main/sql/audio_management.sql b/src/main/sql/audio_management.sql index ae54987..ec31258 100644 --- a/src/main/sql/audio_management.sql +++ b/src/main/sql/audio_management.sql @@ -43,6 +43,7 @@ CREATE TABLE `audio_management` ( `sync_status` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '同步状态', `is_merged` tinyint(1) NULL DEFAULT 0 COMMENT '是否合并(0否1是)', `remarks` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '录音备注', + `recording_text` mediumtext CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL COMMENT '录音文本内容', `company_type` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '公司类型', `edit_status` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '编辑状态', `edit_time` datetime NULL DEFAULT NULL COMMENT '编辑时间', diff --git a/src/main/sql/topsales_score_result20250929.sql b/src/main/sql/topsales_score_result20250929.sql new file mode 100644 index 0000000..f6bdedd --- /dev/null +++ b/src/main/sql/topsales_score_result20250929.sql @@ -0,0 +1,55 @@ +/* + Navicat Premium Data Transfer + + Source Server : 媒体经纪人-测试 + Source Server Type : MySQL + Source Server Version : 80042 + Source Host : 124.221.59.58:3309 + Source Schema : ai_smart_badge + + Target Server Type : MySQL + Target Server Version : 80042 + File Encoding : 65001 + + Date: 29/09/2025 16:29:16 +*/ + +SET NAMES utf8mb4; +SET FOREIGN_KEY_CHECKS = 0; + +-- ---------------------------- +-- Table structure for topsales_score_result +-- ---------------------------- +DROP TABLE IF EXISTS `topsales_score_result`; +CREATE TABLE `topsales_score_result` ( + `id` varchar(36) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL COMMENT 'primary key, UUID', + `workflow_id` varchar(128) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL COMMENT 'Dify workflow id', + `naturalness_score` int NOT NULL DEFAULT 0 COMMENT '自然度分数', + `coherence_score` int NOT NULL DEFAULT 0 COMMENT '连贯性分数', + `fluency_score` int NOT NULL DEFAULT 0 COMMENT '流畅度分数', + `advisor_aggressiveness_score` int NOT NULL DEFAULT 0 COMMENT '顾问攻击性分数(高=低攻击性)', + `advisor_consistency_score` int NOT NULL DEFAULT 0 COMMENT '顾问一致性分数', + `greeting_reception_score` int NOT NULL DEFAULT 0 COMMENT '欢迎接待分数', + `brand_introduction_score` int NOT NULL DEFAULT 0 COMMENT '品牌介绍分数', + `customer_needs_understanding_score` int NOT NULL DEFAULT 0 COMMENT '了解客户用车需求分数', + `budget_understanding_score` int NOT NULL DEFAULT 0 COMMENT '了解客户经济预算分数', + `recommendation_score` int NOT NULL DEFAULT 0 COMMENT '推荐配置或车型分数', + `safety_introduction_score` int NOT NULL DEFAULT 0 COMMENT '重点介绍安全性分数', + `health_environment_introduction_score` int NOT NULL DEFAULT 0 COMMENT '重点介绍健康环保分数', + `technology_introduction_score` int NOT NULL DEFAULT 0 COMMENT '重点介绍科技性分数', + `test_drive_invitation_score` int NOT NULL DEFAULT 0 COMMENT '邀请试驾分数', + `negotiation_deal_score` int NOT NULL DEFAULT 0 COMMENT '商谈成交分数', + `src_content` text CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL COMMENT '待分析内容', + `src_id` varchar(128) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT '原内容ID', + `src_desc` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT '来源说明', + `total_tokens` int NULL DEFAULT NULL COMMENT 'total tokens', + `elapsed_time` decimal(10, 2) NULL DEFAULT NULL COMMENT 'elapsed seconds', + `status` varchar(32) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT 'run status', + `error` text CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL COMMENT 'error message', + `created_at` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT 'created at', + `updated_at` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT 'updated at', + PRIMARY KEY (`id`) USING BTREE, + INDEX `idx_workflow_id`(`workflow_id`) USING BTREE +) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_unicode_ci COMMENT = 'TopSales all-dimensions scoring result' ROW_FORMAT = Dynamic; + +SET FOREIGN_KEY_CHECKS = 1; diff --git a/src/main/sql/适配准真实.sql b/src/main/sql/适配准真实.sql index 0ef0f27..9f32e23 100644 --- a/src/main/sql/适配准真实.sql +++ b/src/main/sql/适配准真实.sql @@ -98,7 +98,26 @@ filename: 适配准真实.sql 适配单向开口率的JSON--结束 +录音文本内容适配维度 --- 开始 +0、请模拟30段录音文本内容形成一个数组,每段内容需要覆盖下面的维度,并把这些文暂存在AudioMockInsertDataScheduler.java 的最后,并在插入时随机获取一个维度,插入数据库 +1、模拟数据时得分要求:总分不能低于50分 ,总分不超过100分 ,每一项适配维度分值是 6分 +2、模拟插入数据时,需要模拟销售顾问和潜在客户交流的问题, 模拟的文本内容需要覆盖下面的这个些维度 : +{ + `naturalness_score` int NOT NULL DEFAULT 0 COMMENT '自然度分数', + `coherence_score` int NOT NULL DEFAULT 0 COMMENT '连贯性分数', + `fluency_score` int NOT NULL DEFAULT 0 COMMENT '流畅度分数', + `advisor_aggressiveness_score` int NOT NULL DEFAULT 0 COMMENT '顾问攻击性分数(高=低攻击性)', + `advisor_consistency_score` int NOT NULL DEFAULT 0 COMMENT '顾问一致性分数', + `greeting_reception_score` int NOT NULL DEFAULT 0 COMMENT '欢迎接待分数', + `brand_introduction_score` int NOT NULL DEFAULT 0 COMMENT '品牌介绍分数', + `customer_needs_understanding_score` int NOT NULL DEFAULT 0 COMMENT '了解客户用车需求分数', + `budget_understanding_score` int NOT NULL DEFAULT 0 COMMENT '了解客户经济预算分数', + `recommendation_score` int NOT NULL DEFAULT 0 COMMENT '推荐配置或车型分数', + `safety_introduction_score` int NOT NULL DEFAULT 0 COMMENT '重点介绍安全性分数', + `health_environment_introduction_score` int NOT NULL DEFAULT 0 COMMENT '重点介绍健康环保分数', + `technology_introduction_score` int NOT NULL DEFAULT 0 COMMENT '重点介绍科技性分数', + `test_drive_invitation_score` int NOT NULL DEFAULT 0 COMMENT '邀请试驾分数', + `negotiation_deal_score` int NOT NULL DEFAULT 0 COMMENT '商谈成交分数', + } - - - +录音文本内容适配维度 --- 结束