Központi feladatsor-feldolgozó – futás, ütemezés, újrapróbálás

A percenként hívott worker lépései: titok, zárolás, karbantartás, takarítás, sablonok, seedek, NAV-láncok, időkeretes feldolgozás, újrapróbálási szabályok, öndiagnosztika és az ütemezési időpontok.

Áttekintés

Az egyetlen percenként hívott háttér-belépő: a cron_queue sort kezeli, és a feladat-típusnak megfelelő vezérlőt vagy libraryt hívja. Eredmények: admin Cron-lista, System → Async jobs, rendszernapló (cron csatorna), értesítések és opcionális e-mailek. Funkciójogot nem ellenőriz (rendszer-kontextus); ahol a sor entitlement_feature_key-t hordoz, a sort létrehozó felhasználó előfizetési joga dönt.

A futás lépései (masterdata/cronqueue.run)

  1. Ha a modul cron-titka be van állítva, a secret paraméternek egyeznie kell (hash_equals), különben 403. Hívás: szerver-crontab percenként, vagy az alapkeretrendszer cron-listájából a cron/cronqueue belépőn át (az a titkot a beállításból adja).
  2. Lock-fájl (storage/logs/cronqueue.lock, 10 perc): futó példány mellett csendes kilépés; heartbeat-fájl; leállás-kezelő fatal hibánál is törli a lockot és naplóz.
  3. Karbantartási módban csak a frissítés lép tovább (dlbtupdate->cronApply(35)), majd kilép.
  4. Hétfő 7 óra előtt a 30 napnál régebbi sorok törlése; naponta doc-cache takarítás; óránként Drive-útvonal frissítés; cron önjavítás (dlbtcronhealth->healIfDue).
  5. enqueueDueTemplates(): az esedékes ütemezés-sablonokból futó sorok (cégcsoportnál a csoport minden cégére), _schedule_id a payloadban, a sablon léptetése (Dlbtschedule::nextRun).
  6. Lejárt megosztási mappák inaktiválása (expireShares); iPhone-mentés lánc-őr (getStuckChains); handleExpired(): lejárt függő sorok törlése és pótló újraütemezése.
  7. Globális seed (company_id = 0), ha engedélyezett és nincs függő sora: email, email_commands, email_ai, taskdigest, contract_passthrough_scan, otpkelfo_ingest, contir_general, fxrate_sync, avgrate_daily, integrity_check, recovery_fee, interest_doc, subscription_lifecycle, quick_invoice, quick_image, nav_tax_debt, mail_sweep, update_check.
  8. NAV-szinkron seed: ha a modul NAV-szinkron kapcsolója nem 0 (alap: be), minden NAV-belépővel és digest_status=1-gyel rendelkező cégre egy nav_invoice_sync lánc a következő negyedóra-határra; az elszakadt lánc helyreállítása; óránként diagnosztikai napló.
  9. Beragadt számlák helyreállítása (recoverOrphanPendingData): tétel nélküli NAV-számlákra új nav_invoice_data sor.
  10. Feldolgozás időkeretben (alap 45 mp, 5–55), legfeljebb 200 sor: előbb a Main Job sorai, majd a pipeline-sorok, végül a klasszikus sorok.
  11. Soronként (processClaimedItem): jogosultsági feltétel (dlbtentitlement->allowsFeatureKey; jog nélkül skipped/entitlement és törlés); dispatch() vagy dispatchJob(); sikernél eredmény, sor törlése, eredmény-levél vagy napló, következő futás ütemezése, Main Job haladás, opcionális befejező e-mail. Hibánál barátságos üzenet, újrapróbálási korlát (végleges NAV-hiba 1, átmeneti hálózati hiba 3, egyéb 2), exponenciális visszalépés (30 mp × 2^n, max. 600 mp), az utolsó próba után törlés és újraütemezés; NAV-szinkron hibánál értesítés a cég jogosultjainak.

Táblák: cron_queue, job, notification, emailtask, company.

Öndiagnosztika (masterdata/cronqueue.status)

Böngészőből, egyszerű szövegként, csak olvas: a worker utolsó futása a heartbeatből (180 mp felett hiba) és a lock állapota; NAV-szinkron kapcsoló és intervallum; NAV-cégek (belépő, digest_status, seedelt); a nav_invoice_sync és nav_invoice_data utolsó 30 sora; iPhone-mentés diagnosztika; a teendő crontab-sor. Cron-titokkal védett (403).

Ütemezési szabályok (scheduleNextRun)

SzabályFeladat-típusok
egyszeri, esemény-vezérelt (nincs újraütemezés)nav_invoice_ref, doc_zip_unpack, doc_recognise, content_translate, doc_download, update_apply, contract_passthrough, iphone_backup_*, mail_message, mail_batch, email_task, doc_text, gpt_workflow
napi időpont (lemaradásnál azonnali pótló futás)subscription_lifecycle 00:20, avgrate_daily 03:00, quick_invoice 03:45, quick_image 04:00 (maradék jelöltnél +5 perc), otpkelfo_ingest 05:40, nav_tax_debt 06:10, fxrate_sync 13:00
óránkéntintegrity_check :07, recovery_fee :10, interest_doc :15; contir_general +60 perc
percesemail, email_commands +1 perc, email_ai +2 perc, contract_passthrough_scan +2 perc, mail_sweep +5 perc
egyeditaskdigest: következő hétfő 05:30; nav_invoice_sync: következő intervallum-határ (alap 15 perc); update_check: a beállított óránkénti intervallum (alap 6) + telepítés-függő 0–59 perc + 0–9 perc véletlen
alapértelmezésholnap 05:00 + a sorrend szerinti pozíció × 2 perc, de legalább a napi utolsó sor után 2 perccel
Kapcsolódó témák: háttérfeladat jogosultság