Merge remote-tracking branch 'origin/dev_1.0.0' into dev_1.0.0
commit
164f1567b2
@ -0,0 +1,12 @@
|
|||||||
|
package com.supervision.police.service;
|
||||||
|
|
||||||
|
import com.supervision.police.domain.ModelRecordType;
|
||||||
|
import com.supervision.police.domain.NoteRecordSplit;
|
||||||
|
import com.supervision.springaidemo.dto.QARecordNodeDTO;
|
||||||
|
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
|
public interface RecordSplitTypeService {
|
||||||
|
|
||||||
|
void type(List<ModelRecordType> allTypeList, QARecordNodeDTO qa, NoteRecordSplit noteRecord);
|
||||||
|
}
|
@ -0,0 +1,47 @@
|
|||||||
|
package com.supervision.police.service.impl;
|
||||||
|
|
||||||
|
import com.supervision.police.domain.ModelRecordType;
|
||||||
|
import com.supervision.police.domain.NoteRecordSplit;
|
||||||
|
import com.supervision.police.service.CaseTaskRecordService;
|
||||||
|
import com.supervision.police.service.NoteRecordSplitService;
|
||||||
|
import com.supervision.police.service.RecordSplitTypeService;
|
||||||
|
import com.supervision.springaidemo.dto.QARecordNodeDTO;
|
||||||
|
import com.supervision.thread.RecordSplitTypeThread;
|
||||||
|
import com.supervision.thread.RecordSplitTypeThreadPool;
|
||||||
|
import lombok.RequiredArgsConstructor;
|
||||||
|
import lombok.extern.slf4j.Slf4j;
|
||||||
|
import org.springframework.ai.ollama.OllamaChatClient;
|
||||||
|
import org.springframework.scheduling.annotation.Async;
|
||||||
|
import org.springframework.stereotype.Service;
|
||||||
|
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
|
@Service
|
||||||
|
@Slf4j
|
||||||
|
@RequiredArgsConstructor
|
||||||
|
public class RecordSplitTypeServiceImpl implements RecordSplitTypeService {
|
||||||
|
|
||||||
|
private final OllamaChatClient chatClient;
|
||||||
|
|
||||||
|
private final NoteRecordSplitService noteRecordSplitService;
|
||||||
|
|
||||||
|
@Async
|
||||||
|
@Override
|
||||||
|
public void type(List<ModelRecordType> allTypeList, QARecordNodeDTO qa, NoteRecordSplit noteRecord){
|
||||||
|
// 这里线程休眠1秒,因为首先报保证消息记录能够插入完成,插入完成之后,再去提交大模型,让大模型去分类.防止分类太快,分类结果出来了,插入还没有插入完成
|
||||||
|
try {
|
||||||
|
Thread.sleep(1000);
|
||||||
|
}catch (Exception e){
|
||||||
|
log.error("线程休眠失败");
|
||||||
|
}
|
||||||
|
// 首先创建一个提取任务
|
||||||
|
|
||||||
|
// 进行分类
|
||||||
|
log.info("提交线程池进行分类");
|
||||||
|
RecordSplitTypeThread recordSplitTypeThread = new RecordSplitTypeThread(allTypeList, qa, chatClient, noteRecordSplitService, noteRecord);
|
||||||
|
RecordSplitTypeThreadPool.recordSplitTypeExecutor.submit(recordSplitTypeThread);
|
||||||
|
log.info("线程池提交分类成功");
|
||||||
|
// 这里应该对分类任务的执行过程进行监控,分类结束之后,才能提取三元组的关系.问了产品,暂时先不做,等后面在考虑
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
@ -0,0 +1,13 @@
|
|||||||
|
package com.supervision.thread;
|
||||||
|
|
||||||
|
import cn.hutool.core.thread.ThreadUtil;
|
||||||
|
|
||||||
|
import java.util.concurrent.ExecutorService;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 笔录分类线程池
|
||||||
|
*/
|
||||||
|
public class RecordSplitTypeThreadPool {
|
||||||
|
|
||||||
|
public static final ExecutorService recordSplitTypeExecutor = ThreadUtil.newFixedExecutor(5, Integer.MAX_VALUE, "recordSplitType", false);
|
||||||
|
}
|
Loading…
Reference in New Issue