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)
- Ha a modul cron-titka be van állítva, a
secretparaméternek egyeznie kell (hash_equals), különben 403. Hívás: szerver-crontab percenként, vagy az alapkeretrendszer cron-listájából acron/cronqueuebelépőn át (az a titkot a beállításból adja). - 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. - Karbantartási módban csak a frissítés lép tovább (
dlbtupdate->cronApply(35)), majd kilép. - 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). enqueueDueTemplates(): az esedékes ütemezés-sablonokból futó sorok (cégcsoportnál a csoport minden cégére),_schedule_ida payloadban, a sablon léptetése (Dlbtschedule::nextRun).- 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. - 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. - 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 egynav_invoice_synclánc a következő negyedóra-határra; az elszakadt lánc helyreállítása; óránként diagnosztikai napló. - Beragadt számlák helyreállítása (
recoverOrphanPendingData): tétel nélküli NAV-számlákra újnav_invoice_datasor. - 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.
- Soronként (
processClaimedItem): jogosultsági feltétel (dlbtentitlement->allowsFeatureKey; jog nélkülskipped/entitlementés törlés);dispatch()vagydispatchJob(); 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ály | Feladat-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ént | integrity_check :07, recovery_fee :10, interest_doc :15; contir_general +60 perc |
| perces | email, email_commands +1 perc, email_ai +2 perc, contract_passthrough_scan +2 perc, mail_sweep +5 perc |
| egyedi | taskdigest: 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és | holnap 05:00 + a sorrend szerinti pozíció × 2 perc, de legalább a napi utolsó sor után 2 perccel |