feat: 合同审查轮询方案(先审查后扣积分、HTML报告下载、数据库记录)
This commit is contained in:
@@ -1,47 +1,27 @@
|
||||
// 云函数:client/ai/pub/getReviewResult
|
||||
module.exports = {
|
||||
main: async (event) => {
|
||||
let { data = {} } = event;
|
||||
const COZE_TOKEN = 'sat_OiXlI4Da5Q99fxmul6pNfExmA6hR898UbxBDwrvjZ638APxRSlFnXbz6zyFedKNG';
|
||||
const { chat_id, conversation_id } = data;
|
||||
|
||||
if (!chat_id || !conversation_id) return { code: -1, msg: '参数不完整' };
|
||||
|
||||
// 查询对话状态
|
||||
const statusRes = await uniCloud.httpclient.request(
|
||||
'https://api.coze.cn/v3/chat?chat_id=' + chat_id + '&conversation_id=' + conversation_id + '&bot_id=7689821072762011698',
|
||||
{ method: 'GET', dataType: 'text', headers: { 'Authorization': 'Bearer ' + COZE_TOKEN }, timeout: 15000 }
|
||||
);
|
||||
|
||||
let status = 'unknown';
|
||||
try {
|
||||
const parsed = JSON.parse(statusRes.data);
|
||||
status = parsed.data && parsed.data.status;
|
||||
} catch (e) {}
|
||||
|
||||
if (status !== 'completed') {
|
||||
return { code: 0, data: { status } };
|
||||
}
|
||||
|
||||
// 获取消息
|
||||
const msgRes = await uniCloud.httpclient.request(
|
||||
'https://api.coze.cn/v3/chat/message/list?chat_id=' + chat_id + '&conversation_id=' + conversation_id,
|
||||
{ method: 'GET', dataType: 'text', headers: { 'Authorization': 'Bearer ' + COZE_TOKEN }, timeout: 15000 }
|
||||
);
|
||||
|
||||
let answer = '';
|
||||
try {
|
||||
const parsed = JSON.parse(msgRes.data);
|
||||
const messages = parsed.data;
|
||||
if (Array.isArray(messages)) {
|
||||
for (const m of messages) {
|
||||
if (m.type === 'answer' && m.role === 'assistant') {
|
||||
answer = m.content;
|
||||
break;
|
||||
}
|
||||
}
|
||||
let { data = {}, userInfo, util } = event;
|
||||
let { db } = util;
|
||||
const { record_id } = data;
|
||||
|
||||
if (!record_id) return { code: -1, msg: '缺少 record_id' };
|
||||
|
||||
const record = await db.collection('jjx-review-records').doc(record_id).get();
|
||||
if (!record.data.length) return { code: -1, msg: '记录不存在' };
|
||||
|
||||
const rec = record.data[0];
|
||||
|
||||
return {
|
||||
code: 0,
|
||||
data: {
|
||||
status: rec.status,
|
||||
result: rec.result || '',
|
||||
points_used: rec.points_used || 0,
|
||||
html_url: rec.html_url || '',
|
||||
contract_info: rec.contract_info || {},
|
||||
error: rec.error || ''
|
||||
}
|
||||
} catch (e) {}
|
||||
|
||||
return { code: 0, data: { status: 'completed', answer } };
|
||||
};
|
||||
}
|
||||
};
|
||||
};
|
||||
Reference in New Issue
Block a user