validate completed AI results

This commit is contained in:
2026-09-06 17:39:25 +03:00
parent 424de8d67a
commit 78d6cb7de2
+5 -2
View File
@@ -68,8 +68,11 @@ export function claimAiJob(clock=Date.now()) {
}); });
} }
export const heartbeatAiJob=(id,runId)=>dbWork(db=>db.prepare("UPDATE ai_jobs SET heartbeat=? WHERE id=? AND run_id=? AND state='running'").run(Date.now(),id,runId).changes>0); export const heartbeatAiJob=(id,runId)=>dbWork(db=>db.prepare("UPDATE ai_jobs SET heartbeat=? WHERE id=? AND run_id=? AND state='running'").run(Date.now(),id,runId).changes>0);
export const finishAiJob=(id,runId,result,error=null)=>dbWork(db=>db.prepare("UPDATE ai_jobs SET state=?,result=?,error=?,updated_at=? WHERE id=? AND run_id=? AND state='running'") export const finishAiJob=(id,runId,result,error=null)=>{
.run(error?'failed':'completed',error?null:JSON.stringify(result),error,new Date().toISOString(),id,runId).changes>0); if(!error && (!result || typeof result!=='object' || Array.isArray(result))) throw new Error('AI sonucu geçersiz; iş tamamlanmadı.');
return dbWork(db=>db.prepare("UPDATE ai_jobs SET state=?,result=?,error=?,updated_at=? WHERE id=? AND run_id=? AND state='running'")
.run(error?'failed':'completed',error?null:JSON.stringify(result),error,new Date().toISOString(),id,runId).changes>0);
};
export const cancelAiJob=(email,id)=>dbWork(db=>db.prepare("UPDATE ai_jobs SET state='cancelled',error=NULL,updated_at=? WHERE id=? AND email=? AND state IN ('queued','running','interrupted','failed')").run(new Date().toISOString(),id,email).changes>0); export const cancelAiJob=(email,id)=>dbWork(db=>db.prepare("UPDATE ai_jobs SET state='cancelled',error=NULL,updated_at=? WHERE id=? AND email=? AND state IN ('queued','running','interrupted','failed')").run(new Date().toISOString(),id,email).changes>0);
export const retryAiJob=(email,id)=>dbWork(db=>{ export const retryAiJob=(email,id)=>dbWork(db=>{
db.exec('BEGIN IMMEDIATE'); db.exec('BEGIN IMMEDIATE');