feat: 合同审查异步方案(定时任务触发、非流式轮询扣子API、token计费、HTML报告下载)
This commit is contained in:
@@ -0,0 +1,53 @@
|
||||
// client/ai/pub/doReviewTimer.js
|
||||
module.exports = {
|
||||
main: async (event) => {
|
||||
let { data = {} } = event;
|
||||
const { record_id, file_id, user_id, file_name, file_size } = data;
|
||||
|
||||
if (!record_id || !file_id) return { code: -1, msg: '参数错误' };
|
||||
|
||||
const db = uniCloud.database();
|
||||
|
||||
// 检查是否已经在审查中(防止重复触发)
|
||||
const record = await db.collection('jjx-review-records').doc(record_id).get();
|
||||
if (record.data.length && record.data[0].status === 'reviewing') {
|
||||
// 检查是否刚触发(5分钟内不重复触发)
|
||||
const lastUpdate = record.data[0].update_time;
|
||||
if (lastUpdate && (Date.now() - new Date(lastUpdate).getTime() < 5 * 60 * 1000)) {
|
||||
return { code: 0, msg: '已在审查中,跳过' };
|
||||
}
|
||||
}
|
||||
|
||||
// 更新状态为审查中
|
||||
await db.collection('jjx-review-records').doc(record_id).update({
|
||||
status: 'reviewing',
|
||||
review_started_at: new Date(),
|
||||
update_time: new Date()
|
||||
});
|
||||
|
||||
// 调用实际的审查逻辑
|
||||
try {
|
||||
const doReview = require('./jjxDoReview.js');
|
||||
await doReview.main({
|
||||
data: {
|
||||
record_id,
|
||||
file_id,
|
||||
user_id: user_id || 'anonymous',
|
||||
file_name: file_name || '',
|
||||
file_size: file_size || 0
|
||||
}
|
||||
});
|
||||
return { code: 0, msg: '审查完成' };
|
||||
} catch (e) {
|
||||
console.error('审查失败:', e);
|
||||
// 更新状态为失败
|
||||
await db.collection('jjx-review-records').doc(record_id).update({
|
||||
status: 'failed',
|
||||
result: '审查失败: ' + e.message,
|
||||
error: e.message,
|
||||
update_time: new Date()
|
||||
});
|
||||
return { code: -1, msg: '审查失败: ' + e.message };
|
||||
}
|
||||
}
|
||||
};
|
||||
Reference in New Issue
Block a user