55 lines
1.6 KiB
TypeScript
55 lines
1.6 KiB
TypeScript
|
|
import { postWorkAuditsAiReview, getWorkAuditsAiReviewResult } from '@/api/all/generationWorkshop';
|
||
|
|
export default function useGetAiReviewResult({ cardInfo, updateAiReview }: { cardInfo: any; updateAiReview: (ai_review: any) => void }) {
|
||
|
|
const statusPollingTimer = ref<number | null>(null);
|
||
|
|
const ticket = ref('');
|
||
|
|
const checkLoading = ref(false);
|
||
|
|
const checkResult = ref<any>({});
|
||
|
|
|
||
|
|
const handleStartCheck = async () => {
|
||
|
|
checkLoading.value = true;
|
||
|
|
const { id, platform, content } = cardInfo.value;
|
||
|
|
const { code, data } = await postWorkAuditsAiReview({ id, platform, content });
|
||
|
|
if (code === 200) {
|
||
|
|
ticket.value = data.ticket;
|
||
|
|
startStatusPolling();
|
||
|
|
}
|
||
|
|
};
|
||
|
|
const handleAgainCheck = async () => {
|
||
|
|
checkResult.value = {};
|
||
|
|
ticket.value = '';
|
||
|
|
clearStatusPollingTimer();
|
||
|
|
handleStartCheck();
|
||
|
|
};
|
||
|
|
const startStatusPolling = () => {
|
||
|
|
clearStatusPollingTimer();
|
||
|
|
statusPollingTimer.value = setInterval(async () => {
|
||
|
|
const { code, data } = await getWorkAuditsAiReviewResult(cardInfo.value.id, ticket.value);
|
||
|
|
if (code === 200 && data.status === 1) {
|
||
|
|
checkResult.value = data.ai_review;
|
||
|
|
updateAiReview?.(data.ai_review);
|
||
|
|
checkLoading.value = false;
|
||
|
|
clearStatusPollingTimer();
|
||
|
|
}
|
||
|
|
}, 3000);
|
||
|
|
};
|
||
|
|
|
||
|
|
const clearStatusPollingTimer = () => {
|
||
|
|
if (statusPollingTimer.value) {
|
||
|
|
clearInterval(statusPollingTimer.value);
|
||
|
|
statusPollingTimer.value = null;
|
||
|
|
}
|
||
|
|
};
|
||
|
|
|
||
|
|
onUnmounted(() => {
|
||
|
|
clearStatusPollingTimer();
|
||
|
|
});
|
||
|
|
|
||
|
|
return {
|
||
|
|
handleStartCheck,
|
||
|
|
handleAgainCheck,
|
||
|
|
checkResult,
|
||
|
|
checkLoading,
|
||
|
|
ticket,
|
||
|
|
};
|
||
|
|
}
|