(()=>{ 'use strict'; if(window.CateriumServerAutomationV1770)return; const VERSION='17.7.0'; const RELEASE='20260908-v17-7-0-architecture-foundation'; const POLL_MS=60000; let timer=0,running=false,lastRunAt=0,lastResult=null; const data=()=>window.CateriumDataV1770||window.CateriumData||null; const cloud=()=>window.SunCloudV2||null; const toast=text=>{try{window.SunEnterprise?.toast?.(text,'success',4200)}catch(_){}}; function ready(){ const d=data(),c=cloud(); if(!d||!c?.getClient?.()||!c?.getSession?.()?.user||!c?.getWorkspace?.()?.id)return false; if(d.isSupportReadOnly?.())return false; return true; } async function run({quiet=true,force=false}={}){ if(running||!ready())return lastResult; if(!force&&Date.now()-lastRunAt<15000)return lastResult; running=true;lastRunAt=Date.now(); try{ const c=cloud(),workspace=c.getWorkspace(),client=c.getClient(); const result=await data().diagnostics.measure('server-order-automation',async()=>{ const r=await client.rpc('sun_run_order_automation',{p_workspace:workspace.id});if(r.error)throw r.error;return r.data||{}; }); lastResult=result; const changed=Number(result?.changed||0),orders=Array.isArray(result?.orders)?result.orders:[]; if(changed&&orders.length){ data().orders.applyServerChanges(orders,{reason:'server-auto-complete'}); if(!quiet)toast(changed===1?'Заказ автоматически завершён сервером.':`${changed} заказа автоматически завершены сервером.`); } try{window.dispatchEvent(new CustomEvent('caterium:server-automation',{detail:{...result,version:VERSION}}))}catch(_){} return result; }catch(error){ if(!/failed to fetch|network|timeout/i.test(String(error?.message||error)))console.warn('[Caterium server automation]',error?.message||error); return null; }finally{running=false} } function start(){if(timer)return;run({quiet:true,force:true});timer=setInterval(()=>{if(!document.hidden)run({quiet:true})},POLL_MS)} function stop(){if(timer){clearInterval(timer);timer=0}} window.addEventListener('focus',()=>run({quiet:false,force:true})); document.addEventListener('visibilitychange',()=>{if(!document.hidden)run({quiet:true,force:true})}); window.addEventListener('sun:cloud-state-applied',()=>setTimeout(()=>run({quiet:true,force:true}),300)); window.addEventListener('caterium:data-ready',start); window.CateriumServerAutomationV1770={VERSION,RELEASE,POLL_MS,enabled:true,run,start,stop,checks:()=>({version:VERSION,running,lastRunAt,lastResult,ready:ready()})}; if(document.readyState==='loading')document.addEventListener('DOMContentLoaded',start,{once:true});else start(); })();