SELECT s.id as supp_id, s.type, d.id as doc_id, d.filename, d.elements_json FROM supplements s JOIN documents d ON s.document_id = d.id WHERE s.contract_id = AND d.elements_json IS NOT NULL ORDER BY s.created_at data: #serializeJSON({type:"error",message:"Нет распарсенных файлов"})# SELECT name_hash, name, price, qty, sum, date_start FROM spec_current WHERE contract_id = ORDER BY name data: #serializeJSON({type:"extract_start",supplement_id:sid,filename:supps.filename})# data: #serializeJSON({type:"extract_error",supplement_id:sid,filename:supps.filename,error:"LLM HTTP #cfhttp.statusCode#",time_s:elapsed})# data: #serializeJSON({type:"llm_done",supplement_id:sid,filename:supps.filename,ops_count:arrayLen(ops),mode:mode,time_s:elapsed})# data: #serializeJSON({type:"applied",supplement_id:sid,summary:applyResult.summary})# data: #serializeJSON({type:"apply_error",supplement_id:sid,error:structKeyExists(applyResult,'error')?applyResult.error:'unknown'})# data: #serializeJSON({type:"apply_error",supplement_id:sid,error:"apply HTTP #cfhttp.statusCode#"})# data: #serializeJSON({type:"extract_error",supplement_id:sid,filename:supps.filename,error:"JSON parse: " & cfcatch.message,time_s:elapsed})# data: #serializeJSON({type:"done",total_time_s:totalTime,total_unresolved:totalUnresolved})# data: #serializeJSON({type:"error",message:cfcatch.message,detail:cfcatch.detail})#