Levél-háttérfeladatok – beolvasás, parancsok, AI-osztályozás, e-mail feladat, kiküldés

Az e-mailhez kapcsolódó feladat-típusok működése, időkeretei, állapotai és táblái a beolvasástól a csoportos kiküldésig.

Feladat-típusok

TípusMűködés
email (globális, percenként, ha a modul levél-beolvasás kapcsolója nem 0)email/email::processForCronqueue(): az aktív email_source-ok (Gmail-címke) levelei a legrégebbivel kezdve, 50 mp-es keretben (melléklet-szám alapú költségbecslés); a levél és a mellékletek (ZIP kicsomagolással, PDF-szövegkinyeréssel) a közös Dlbtdocstore::addDocument() úton a cég email tárhely-szabálya szerint; memória-takarékos base64-dekódolás, inline képek kiszűrése. Szűrő és AI itt nem fut. Táblák: email_message, email_source, email_attachments, email_hash, email_pipeline_log, doc.
email_commands (globális, percenként)processCommandsForCronqueue(): INGESTED levelek; a rendszer feladat-előtagja a tárgyban → feladat-javaslat (PENDING_APPROVAL); a rendszer parancsblokkja a törzsben → strukturált javaslat (PENDING_APPROVAL); a rendszer hashtagje → FILTERED jelzéssel; egyébként FILTERED (továbbmegy az AI-hoz). 50 mp, max. 100 levél. Táblák: email_message, email_proposal, email_pipeline_log.
email_ai (globális, 2 percenként)processAiForCronqueue(): FILTERED levelek; prompt a tárgyból, feladóból, törzsből és a szál előzményeiből; Tier-1 hívás (OpenAI kis modell, tartalék Gemini; kulcs nélkül „ignore” válasz); javaslatok az email_proposal-ba; küszöb feletti konfidencia → PROCESSED, alatta PENDING_APPROVAL; AI-hiba → AI_RETRY (3×), majd ERROR. Előfeltétel: OpenAI vagy Gemini API-kulcs a modul-beállításban.
email_task (a sablon-sorok a task gyakorisága szerint)task/emailtask::processForCronqueue(): a payload email_task_id-ja vagy a cég esedékes taskjai; markRun() azonnal; a Dlbtemailtask motor 40 mp-es keretben (mappa-alapú API- vagy IMAP-lekérdezés, a levél nem tárolódik); maradék → folytatás-sor; hibánál fail_count++, 3 egymást követő hiba után inaktiválás és értesítés; notify=1 esetén értesítés valódi feldolgozásnál. Táblák: emailtask, notification, invoice, invoice_document, document, file, permission_scope.
otpkelfo_ingest (globális, 05:40, csak beállított Gmail-kereséssel és fiókkal)task/otpkelfo::processForCronqueue(): Gmail-keresés a feldolgozott címke kizárásával (max. 25 üzenet), ZIP-mellékletek a storage/tmp_otpkelfo/ mappába, file sor (status=0, mint kézi feltöltésnél), a feldolgozott üzenet címkézése (szükség esetén létrehozva).
mail_sweep (globális, 5 percenként)mail/batch::processSweepForCronqueue(): a napló-sorból indulva elindítja az esedékes, de sorba nem került vagy beragadt (sending) leveleket.
mail_batch (csak dispatch)mail/batch::processForCronqueue(): a sendBulk() által csomagokra bontott címzettek ütemezett kiküldése a közös dlbtmail->send() úton (tiltólista, csatorna, méret-plafon).
mail_message (csak dispatch)processMessageForCronqueue(): payload csak email_id; a tartalom a napló-soron él; a runQueued() atomi foglalása miatt a visszavont levél nem megy ki.
Kapcsolódó témák: levélfeldolgozás háttérfeladat