Reply Pilot Worker
Tato stranka popisuje modul reply-pilot-worker/.
Role modulu
- background job container mimo request cyklus
- owner mailbox import workflow nad
reply-pilot-be - umi periodicky obnovovat Gmail watch a volitelne cist Gmail Pub/Sub Pull subscription nad
reply-pilot-be - umi drzet sjednoceny
gmail_synchronizerjob, ktery spojuje watch pull a mailbox import do jedne pipeline - umi kazdych 120 sekund spoustet uplnou CME company synchronizaci nad
reply-pilot-be - kazde dve hodiny autentizovane triggeruje logical dump v
reply-pilot-db-backup; nezna DB host, user ani password - umi kazdou minutu synchronizovat lokalni
task_jiracache podle Jiry presreply-pilot-be - umi volitelne periodicky spoustet AI klasifikaci prefiltrovanych requirement kandidatu nad
reply-pilot-be - umi volitelne periodicky spoustet finalni requirement agregaci nad
reply-pilot-be - pripravena hranice pro dalsi async joby a retry flow
Runtime
- worker nema verejne HTTP rozhrani na hostu
- worker vystavuje interni HTTP status API na sdilene Docker siti:
GET /healthzpro healthcheck kontejneruGET /statuszpro backend monitoring- lokalni heartbeat zustava v
data/worker-heartbeat.json;GET /healthzjeho cerstvost vyuziva pro self-check workeru - heartbeat ted krom
last_jobdrzi ijob_metricspo jednotlivych workerech a polerunning_jobs, aby slo delat jednoduchy ops report nad AI a evaluation pipeline - loguje vyhradne na
stdout; lokalne pouzijdocker compose logs - backend vola pres
BACKEND_API_BASE_URL, defaultnehttp://reply-pilot-be:5000 - worker uz neni jeden sekvencni loop nad vsemi joby; bezi jako maly scheduler v jednom procesu:
- scheduler thread jen hlida intervaly a job conflicts
- jednotlive joby se pousti ve vlastnich daemon vlaknech
- jeden job se nespusti podruhe, dokud jeho predchozi beh stale trva
gmail_synchronizerje jediny owner mailbox flow a drzi si vlastni stav rozbehnuteho importu
Aktualni job
gmail_synchronizerv kratkem intervalu volaPOST /api/mailbox/watch/pull; pokud notifikace ukazuji na zmenu mailboxu, zaqueueuje import- jednou za
WORKER_IMPORT_POLL_INTERVAL_SECONDSsigmail_synchronizerkontrolujeGET /api/mailbox/import/status - kdyz import je
QUEUEDneboRUNNING,gmail_synchronizerho po krocich dotahuje presPOST /api/mailbox/import/step - auto-queue importu zustava volitelne pres
WORKER_IMPORT_AUTO_QUEUE_ENABLED=true; kdyz je zapnute,gmail_synchronizerpravidelne frontuje incremental import i bez watch notifikace, ne opakovany full scan - pro aktivni import
gmail_synchronizeropakovane volaPOST /api/mailbox/import/step, dokud backend nevratiCOMPLETEDneboFAILED POST /api/cme/company-sync/runjednou zaWORKER_CME_SYNC_INTERVAL_SECONDS; synchronizuje dodavatele zdodavatelvčetně odpovědného obchodníka zdodavatel_informacea rezervace zosloveni_dodavatelePOST http://reply-pilot-db-backup:8080/api/backupsjednou zaWORKER_DATABASE_BACKUP_INTERVAL_SECONDS(default7200); trigger pouzivaDATABASE_BACKUP_API_TOKEN, bezi i on-start a worker neceka na dokonceni dumpuPOST /api/jira/task-sync/runjednou zaWORKER_JIRA_TASK_SYNC_INTERVAL_SECONDS; backend si pamatuje Jiraupdatedwatermark vpublic.jira_sync_statea lokalnitask_jirabere jako cachePOST /api/requirements/ai-classify/runv konfigurovatelnem intervalu; default je vypnuty, aby se AI job nepoustel bez vedome konfiguracePOST /api/requirements/evaluate/runv konfigurovatelnem intervalu; typicky navazuje na deterministic a AI vrstvu a prepocitava finalni company atributy- Gmail modul pri
POST /api/mailbox/watch/pullulozi pending ack ID a potvrdi je az po uspesnem mailbox-wide snapshot/history zapisu; navazany incremental import pak ridigmail_synchronizer - heartbeat se udrzuje i v idle stavu, aby worker mel lokalni self-observed stav; backend uz ho necte pres sdileny mount, ale pres
GET /statusz - pri timeoutu nebo backend chybe konkretni job nesmi shodit cely worker proces; chyba se materializuje do
job_metricsa scheduler pokracuje dalsimi joby