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_synchronizer job, ktery spojuje watch pull a mailbox import do jedne pipeline
  • umi periodicky spoustet CME company check nad reply-pilot-be
  • umi kazdou minutu synchronizovat lokalni task_jira cache podle Jiry pres reply-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 /healthz pro healthcheck kontejneru
  • GET /statusz pro backend monitoring
  • lokalni heartbeat zustava v data/worker-heartbeat.json; GET /healthz jeho cerstvost vyuziva pro self-check workeru
  • heartbeat ted krom last_job drzi i job_metrics po jednotlivych workerech a pole running_jobs, aby slo delat jednoduchy ops report nad AI a evaluation pipeline
  • loguje do reply-pilot-worker/logs/reply-pilot-worker.log
  • backend vola pres BACKEND_API_BASE_URL, defaultne http://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_synchronizer je jediny owner mailbox flow a drzi si vlastni stav rozbehnuteho importu

Aktualni job

  • gmail_synchronizer v kratkem intervalu vola POST /api/mailbox/watch/pull; pokud notifikace ukazuji na zmenu mailboxu, zaqueueuje import
  • jednou za WORKER_IMPORT_POLL_INTERVAL_SECONDS si gmail_synchronizer kontroluje GET /api/mailbox/import/status
  • kdyz import je QUEUED nebo RUNNING, gmail_synchronizer ho po krocich dotahuje pres POST /api/mailbox/import/step
  • auto-queue importu zustava volitelne pres WORKER_IMPORT_AUTO_QUEUE_ENABLED=true; kdyz je zapnute, gmail_synchronizer umi pravidelne frontovat import i bez watch notifikace
  • pro aktivni import gmail_synchronizer opakovane vola POST /api/mailbox/import/step, dokud backend nevrati COMPLETED nebo FAILED
  • POST /api/cme/company-check/run v konfigurovatelnem intervalu; backend si sam ridi queue i stale recheck firem
  • POST /api/jira/task-sync/run jednou za WORKER_JIRA_TASK_SYNC_INTERVAL_SECONDS; backend si pamatuje Jira updated watermark v public.jira_sync_state a lokalni task_jira bere jako cache
  • POST /api/requirements/ai-classify/run v konfigurovatelnem intervalu; default je vypnuty, aby se AI job nepoustel bez vedome konfigurace
  • POST /api/requirements/evaluate/run v konfigurovatelnem intervalu; typicky navazuje na deterministic a AI vrstvu a prepocitava finalni company atributy
  • backend pri POST /api/mailbox/watch/pull potvrdi Pub/Sub zpravy az po uspesnem zpracovani notifikaci; navazany import pak ridi uz gmail_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_metrics a scheduler pokracuje dalsimi joby