社区feed流
This commit is contained in:
@@ -112,6 +112,8 @@ public class PasswordUtil {
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
@@ -96,6 +96,8 @@ public class ServiceManager {
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
@@ -74,6 +74,8 @@ public class AliyunConfig {
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
@@ -1,5 +1,6 @@
|
||||
package com.rj.controller;
|
||||
|
||||
import com.rj.dto.CommunityFeedDTO;
|
||||
import com.rj.dto.DifyWorkflowRequestDto;
|
||||
import com.rj.dto.DifyWorkflowResponseDto;
|
||||
import com.rj.dto.CustomerProfileAnalysisRequestDto;
|
||||
@@ -23,7 +24,7 @@ import java.util.Map;
|
||||
*/
|
||||
@Slf4j
|
||||
@RestController
|
||||
@RequestMapping("/api/dify")
|
||||
@RequestMapping("/api/aicommunity")
|
||||
@Tag(name = "Dify工作流", description = "Dify工作流API接口")
|
||||
public class DifyWorkflowController {
|
||||
|
||||
@@ -81,6 +82,7 @@ public class DifyWorkflowController {
|
||||
}
|
||||
|
||||
|
||||
|
||||
/**
|
||||
* DCC对话分析工作流
|
||||
*/
|
||||
|
||||
@@ -195,6 +195,8 @@ public class AuthController {
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
@@ -334,6 +334,8 @@ public class MenuController {
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
@@ -304,6 +304,8 @@ public class RoleController {
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
@@ -310,6 +310,8 @@ public class UserRoleController {
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
16
src/main/java/com/rj/dto/CommunityFeedDTO.java
Normal file
16
src/main/java/com/rj/dto/CommunityFeedDTO.java
Normal file
@@ -0,0 +1,16 @@
|
||||
package com.rj.dto;
|
||||
|
||||
import lombok.Data;
|
||||
|
||||
/**
|
||||
* Author: 李中华 wx: spllzh
|
||||
* Date: 2025/9/25 16:34
|
||||
**/
|
||||
@Data
|
||||
public class CommunityFeedDTO {
|
||||
|
||||
String targetContent;
|
||||
String targetId;
|
||||
String targetType;
|
||||
|
||||
}
|
||||
@@ -78,4 +78,6 @@ public class DifyWorkflowResponseDto {
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
@@ -23,3 +23,5 @@ public interface CustomerProfileAnalysisMapper extends BaseMapper<CustomerProfil
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
@@ -61,6 +61,8 @@ public class LoginResponse {
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
@@ -80,6 +80,8 @@ public class AudioStatisticsScheduler {
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
@@ -44,6 +44,9 @@ public class DifyWorkflowService {
|
||||
@Value("${dify.api.portrait-3in1-token}")// 客户画像 app-Tpz9ByHyj5X6QCNpPX53QoBt
|
||||
private String portraitAllInToken;
|
||||
|
||||
@Value("${dify.api.ai-feed-token}")
|
||||
private String aiFeedToken; // AI-Feed流(社区优质内容评估)
|
||||
|
||||
private final RestTemplate restTemplate;
|
||||
|
||||
@Autowired
|
||||
@@ -200,6 +203,62 @@ public class DifyWorkflowService {
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 调用 AI-Feed 流(社区Feed流优质内容)工作流
|
||||
* 期望 inputs 参数包含:targetContent、targetId、targetType
|
||||
*/
|
||||
public DifyWorkflowResponse callAiFeedWorkflow(DifyWorkflowRequest request) {
|
||||
try {
|
||||
String url = difyBaseUrl + workflowEndpoint;
|
||||
|
||||
HttpHeaders headers = new HttpHeaders();
|
||||
headers.setContentType(MediaType.APPLICATION_JSON);
|
||||
headers.set("Authorization", "Bearer " + aiFeedToken);
|
||||
|
||||
Map<String, Object> requestBody = new HashMap<>();
|
||||
requestBody.put("inputs", request.getInputs());
|
||||
requestBody.put("response_mode", "blocking");
|
||||
requestBody.put("user", request.getUserId());
|
||||
|
||||
HttpEntity<Map<String, Object>> entity = new HttpEntity<>(requestBody, headers);
|
||||
|
||||
log.info("调用AI-Feed Dify工作流API: {}", url);
|
||||
log.info("AI-Feed请求参数: {}", JSON.toJSONString(requestBody));
|
||||
|
||||
ResponseEntity<String> response = restTemplate.exchange(
|
||||
url,
|
||||
HttpMethod.POST,
|
||||
entity,
|
||||
String.class
|
||||
);
|
||||
|
||||
log.info("AI-Feed Dify工作流响应状态: {}", response.getStatusCode());
|
||||
log.info("AI-Feed Dify工作流响应内容: {}", response.getBody());
|
||||
|
||||
if (response.getStatusCode() == HttpStatus.OK) {
|
||||
JSONObject responseJson = JSON.parseObject(response.getBody());
|
||||
// AI-Feed 暂不做入库,直接返回
|
||||
DifyWorkflowResponse result = new DifyWorkflowResponse();
|
||||
if (responseJson.containsKey("data")) {
|
||||
JSONObject data = responseJson.getJSONObject("data");
|
||||
result.setWorkflowRunId(data.getString("workflow_run_id"));
|
||||
result.setTaskId(data.getString("task_id"));
|
||||
result.setData(data);
|
||||
}
|
||||
if (responseJson.containsKey("metadata")) {
|
||||
result.setMetadata(responseJson.getJSONObject("metadata"));
|
||||
}
|
||||
return result;
|
||||
} else {
|
||||
throw new RuntimeException("AI-Feed Dify工作流调用失败,状态码: " + response.getStatusCode());
|
||||
}
|
||||
|
||||
} catch (Exception e) {
|
||||
log.error("调用AI-Feed Dify工作流异常", e);
|
||||
throw new RuntimeException("调用AI-Feed Dify工作流异常: " + e.getMessage(), e);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 解析工作流响应并保存数据
|
||||
*/
|
||||
|
||||
@@ -1,16 +0,0 @@
|
||||
package com.rj.service.biz;
|
||||
|
||||
import com.baomidou.mybatisplus.extension.service.IService;
|
||||
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
||||
import com.rj.entity.bz.DifyWorkflowAnalysis;
|
||||
|
||||
import com.rj.mapper.biz.DifyWorkflowAnalysisMapper;
|
||||
import org.springframework.stereotype.Service;
|
||||
|
||||
/**
|
||||
* Dify工作流分析结果服务实现类
|
||||
*/
|
||||
@Service
|
||||
public class DifyWorkflowAnalysisServiceImpl extends ServiceImpl<DifyWorkflowAnalysisMapper, DifyWorkflowAnalysis>
|
||||
implements IService<DifyWorkflowAnalysis> {
|
||||
}
|
||||
@@ -44,3 +44,5 @@ public interface ICustomerProfileAnalysisService extends IService<CustomerProfil
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
@@ -79,3 +79,5 @@ public class CustomerProfileAnalysisServiceImpl extends ServiceImpl<CustomerProf
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
@@ -43,6 +43,8 @@ public interface IMenuService extends IService<Menu> {
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
@@ -43,6 +43,8 @@ public interface IUserRoleService extends IService<UserRole> {
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
@@ -47,6 +47,8 @@ public class MenuServiceImpl extends ServiceImpl<MenuMapper, Menu> implements IM
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
@@ -47,6 +47,8 @@ public class RoleServiceImpl extends ServiceImpl<RoleMapper, Role> implements IR
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
@@ -47,6 +47,8 @@ public class UserRoleServiceImpl extends ServiceImpl<UserRoleMapper, UserRole> i
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
@@ -57,6 +57,8 @@ spring:
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
@@ -134,3 +134,4 @@ dify:
|
||||
summary-ddc-token: app-rgaQbIir7vrVb1473Z3Puz6w
|
||||
summary-nameplate-token: app-cv5glaYrY4zgjq0XIidSoJea
|
||||
portrait-3in1-token: app-jlrV6lLDlhy1YDEdUiK4hdVZ
|
||||
ai-feed-token: app-b6kFOvLvAsAOxB1vDgSNa0OO
|
||||
@@ -16,3 +16,5 @@
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
@@ -33,6 +33,8 @@
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
15
src/main/sql/A-dify/qiwei.log
Normal file
15
src/main/sql/A-dify/qiwei.log
Normal file
@@ -0,0 +1,15 @@
|
||||
|
||||
问题咨询-总结和分类----语料
|
||||
{
|
||||
"chat": "客户: 啊,你好,对对你给我反馈一下,这情况,我都跟那个,咱们这个哈尔滨这头都联系完了啊,就是没有及急的给我去,呃,去去弄这个事儿,我先天下。\n顾问: 这边听同奥,对听同事说,您是在是在购车店吗?有5次,这个保养权义目前还是2次,然后四s店是去道们承接店,然后承接店说不能给您使用了,是吗?要给您先反馈一下。\n顾问: 嗯嗯嗯。\n顾问: 嗯嗯,是的,好的了解。\n客户: 对,我是对,先给你们反馈一下,你们帮我解决一下,解决不了,然后我再考虑其他途径去解决,是吧。\n顾问: 嗯啊。\n顾问: 嗯,好明白这个情况了,不好意思给您造成用车不便了,然后跟您核实下基本信息,您是车主本人吗?\n客户: 啊,这这我是我,我爱人,那都没问题。\n顾问: 好辛苦提供一下车主的完整姓名。\n客户: 啊,车主的还是我的就可以吧,到时跟我联系就行了。\n顾问: 哦,那您提供一下您的完整姓名。\n客户: 啊,我姓王,手机号就是这个,这个手机号。\n顾问: 嗯哦,好完整姓名先生王,后面方便提供一下吗?\n客户: 啊有云南。\n顾问: 勇敢的勇好稍等,您的车牌号是黑a363x零这辆车吗?\n客户: 对对,我也不太清楚啊,他这写的他经销售订单上给我写的是给道厂家承诺的还是还是他门店承诺的,我就不太清楚。\n顾问: 好,20年8月7号,在哈尔滨尊荣一方汽承贸易有限公司买的一个20款的s608。\n顾问: 好,您是在那个道里区机场路,就您的购车店是他成诺赠送您5次保养的,对吗?\n顾问: 哦,好店是您的购成店吧,就是哈尔滨尊荣一方这家店吧。\n客户: 啊,这个,这七。\n顾问: 奥,好,了解好首天厂家的权益区,任何一家涉线都可以使用的。如果是天义惠展来看,哈尔滨地区的承接集团是天拓,是原厂的项目自行约,天拓店就可以。如果是广惠集团的权益呢,是需要提供一下有效的合同凭证的合同,上面需要有合同章,车辆信息,客户信息等关键有效信息。您这边的话是有合同对吗?先生。\n客户: 呃,他就是有在这个销售订单上,订单上这不有销售顾问,财务人员,还有销售经理都签字了。\n顾问: 嗯,有都签字了,好了解您稍等一下您啊,您联系的是我们的这个道里区机场路在哈尔滨天司是这家店,是吗?\n客户: 对对,就机场路这个。\n顾问: 嗯,对好了解,他们说是需要先反馈一下,是吧。\n客户: 对他们说给我反馈下,反馈的话也不能,咱们能说他得有时间呐,也不能通。\n顾问: 好嗯。\n顾问: 嗯,好了解,嗯好明白。\n客户: 我想呢,通过咱们,我想通过咱们这个。\n客户: 呃,咱们这总部这头帮我催一催,是不是能有力度,能够尽快帮我推进一下,需要保养啊,下到期了。\n顾问: 嗯,好,了解不好意思,给您添麻烦了,那这样先生我先给您来电,嗯,好不好意思打断,您说下8尾号0404,发了一个短信链接,然后辛苦您这边也上传一下您的凭证,我们会马上帮您同步反馈的。\n客户: 啊,没下经天信了,反馈给他了。\n顾问: 哦,已经哦,好哦,好明道8尾号0404吧。\n客户: 对,嗯,还可以,你就帮我帮我催一下吧,是不是你这,因为你们这个比有力度,是不是,我想这东西必要去再反馈给咱们,1235等其他的媒体,这就对你们来说,呃,也没啥必要,是吧,我想咱们能能解决呗,你就帮我解决一下,应涉及到什么,其他的,对,嗯,嗯,嗯。\n顾问: 嗯嗯嗯。\n顾问: 嗯嗯,对嗯,是的先生。\n顾问: 嗯,好了解不好意思给您添麻烦,我这边会马上帮您同步反馈的,那您看还有其他问题吗?\n客户: 啊,别的没有了,就感谢帮我反馈一下,帮我催一催啊,因为你们这这毕竟,毕竟毕竟是上级,上级领导啊,对他可能能能能有能起到一定作用,是不是。\n顾问: 哦,好嗯,好嗯,好。\n顾问: 嗯,好,那对经销商也是有监管的,稍后也会立刻帮您反馈您的问题,您放心,那没有其他问题,先不打扰您哈。\n客户: 嗯,行有问题,我再给你打,或者说我就反馈给其他平台,让其他平台找你们呗啊。\n顾问: 嗯好嗯嗯嗯。\n顾问: 嗯,了解那也先不打扰您,感谢致电沃尔,我是客服中金。\n客户: 嗯。\n",
|
||||
"businessType": "Channel_4in1",
|
||||
"sourceCorpusId": "1758592509-731892",
|
||||
"sourceCorpusTime": "2025-09-23 09:55:12",
|
||||
"sys.files": [],
|
||||
"sys.user_id": "corpush_question_user",
|
||||
"sys.app_id": "1b9b6173-6a97-4147-a512-ec319eaa1c6f",
|
||||
"sys.workflow_id": "d5c1da0f-32de-4bf0-9ee2-3277e7e8d43a",
|
||||
"sys.workflow_run_id": "b2529eb7-0c71-4c70-8c31-6589a348d64b"
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user