Ce rulează în fundal
Sarcinile care rulează fără un om în pagină: cele pornite din procesul API, worker-ul cozii de ieșire, executorii și unitățile programate pe serverul firmei, cu orele lor.
Pe scurt
| Unde rulează | Ce e acolo |
|---|---|
| Procesul API | sarcinile periodice ale API-ului |
Worker-ul (aplicatii/worker) | livrarea cozii de ieșire evenimente_iesire |
| Executorii | programe de pe serverul firmei care iau lucru din API, cu rolul executor |
| Unități programate | timere pe serverul firmei: verificarea canalelor, SPV, evidența, statisticile și altele |
Tabelul orelor
Orele fixe sunt date cu fusul lor. Intervalele „la fiecare” nu depind de fus: se socotesc de la ultima rulare.
Coloana „În cod” spune ce scrie în unitățile din codul platformei. Coloana „Pe server” spune ce rulează de fapt pe serverul platformei, citit cu systemctl pe 12.11.2026. Unde cele două diferă, contează coloana „Pe server”: acolo programul a fost schimbat după nevoile restaurantului.
| Sarcină | În cod | Pe server | Ce face |
|---|---|---|---|
| Statistici social, rularea completă | zilnic, 03:20, plus până la 2 min, ora României | instalată, dar oprită | citește Facebook, Instagram, TikTok, cu 28 de zile înapoi |
| Statistici social, rularea ușoară | la 30 min | zilnic, 03:30, ora României | contul, seriile și postările din ultimele 7 zile |
| Facturi primite din SPV | luni–sâmbătă, 08:30, plus până la 2 min, ora României | unitatea din cod nu e instalată; rulează în locul ei o sincronizare SPV zilnică, la 03:00, ora României, cu un program din afara codului platformei | aduce facturile primite din ANAF e-Factura |
| Evidența, jobul zilnic | zilnic, 06:10, ora României | nu e instalată | import FGO și legarea automată a recurențelor |
| Registru ← FGO | la minutul 07 și 37 al fiecărei ore, plus până la 1 min | nu e instalată | se amână singur când serverul e încărcat peste 6 |
| Specificațiile calculatoarelor | zilnic, 03:00, ora PC 1, ca sarcină programată pe PC 1, nu pe server | nu rulează pe server: serverul doar primește fișierul scris de PC 1 | model, procesor, RAM, disc și sistem pentru fișa tehnică, doar citire, fără stare live |
| Verificarea canalelor | la 3 min | la 5 min | citește canalele și scrie bifele din tabelul Produse |
| la 5 min | o dată pe oră, la minutul 20, ora României | citește pinii și scrie bifa Pinterest în tabel | |
| Colectorul Jurnal live | la 30 s | nu e instalată | ce au făcut timerele și executorii, spre POST /v1/jurnal-live |
| Oglinda pe NAS | la 2 min | nu e instalată | copiază codul pe NAS, doar fast-forward |
| Finder, anunțuri | la 30 min | zilnic, 03:30, ora României | colectorul de anunțuri: Storia, OLX, Publi24, Imobiliare, Anunțul |
| Finder, joburi | la 6 h | instalată, dar oprită | colectorul de anunțuri de joburi |
„Nu e instalată” înseamnă că unitatea nu există pe serverul platformei; dacă rulează pe altă mașină nu se poate vedea din cloud, deci acolo e neverificat. Ultimele trei rânduri rulează în procesul API și pornesc doar cu variabile din fișierul de setări al serverului, care nu se poate citi fără drept de administrator: de aceea sunt marcate „neverificat”.
Serverul rulează pe UTC (citit pe server: Etc/UTC). De aceea timerele cu oră fixă își scriu fusul Europe/Bucharest, iar trecerea la ora de vară sau de iarnă se face singură.
Sarcinile din procesul API
Cele trei pornesc după ce API-ul începe să asculte. Fiecare e oprită până primește lista de firme din mediu. Trecerile nu se suprapun: dacă una încă rulează, următoarea e sărită.
| Sarcină | Pornită de | Interval implicit | Condiții |
|---|
- Completarea scrie doar ce lipsește. Alergenii se scriu numai unde sunt „necompletați”, deci ce a declarat omul nu se suprascrie. Schimbările apar în
eventspe un cont tehnic, nu pe un om. - Pozele lipsă nu dublează o generare: un produs cu job activ sau cu o generare în ultimele 6 ore e sărit.
O firmă care eșuează nu le oprește pe celelalte: eroarea se scrie în jurnalul API-ului, iar trecerea continuă.
Worker-ul: coada de ieșire
Worker-ul livrează evenimentele din tabelul evenimente_iesire (outbox) către o adresă dată în TINTA_URL.
| Pas | Ce face |
|---|---|
| La pornire | numără firmele vizibile; iese cu codul 2 dacă vede 0 firme (RLS), 3 dacă nu are drept de citire, 1 la altă eroare |
| O trecere | pentru fiecare firmă ia cel mult 20 de evenimente și le livrează pe rând |
| Livrarea | POST cu Idempotency-Key = id-ul evenimentului; 2xx = livrata, altfel reîncercare |
| Eșecul | după 5 încercări evenimentul devine esuata și nu se mai reia |
| Blocajul | un eveniment rămas in_lucru peste 10 minute redevine eligibil |
| Oprirea | la SIGTERM termină evenimentul în curs și iese |
Pauza dintre treceri e INTERVAL_MS, de cel puțin 100 ms. Timpul de livrare, TIMEOUT_MS, e implicit 10 secunde și trebuie să fie sub cele 10 minute de expirare, altfel worker-ul nu pornește.
Executorii
Un executor este un program de pe serverul firmei care vorbește cu platforma doar prin API, cu un jeton de serviciu cu rolul executor. Jetoanele se citesc din JETOANE_SERVICIU și dintr-un dosar de jetoane. Un fișier stricat e sărit, ca să nu oprească API-ul.
| Rută | Cine o folosește |
|---|---|
POST /v1/spv/sincronizeaza | timerul SPV |
POST /v1/jurnal-live | colectorul Jurnal live |
POST /v1/executori/social-statistici | colectorul de statistici social |
POST /v1/wtso/proiecte, …/rulare/preia, …/rulare/{id}/log | worker-ul de traducere și SEO al site-urilor |
POST /v1/flux-lant/stare | starea lanțului de produse |
POST /v1/agentie/scraper/stare | starea scraperului agenției |
O cerere trece dacă oricare identitate a ei are rolul cerut: un jeton de executor valid nu e umbrit de un cookie de om. Modelul cozii este descris în Sisteme externe și executori.
Pornite la cerere, nu la oră
| Unitate | Pornește când |
|---|---|
| Puntea asistentului | rulează mereu și repornește la 3 s după o cădere; cel mult 2 cereri în paralel, 55 s pe cerere |
| Puntea imaginilor | rulează mereu și repornește la 3 s; o cerere odată, 180 s pe cerere |
Pe serverul platformei, niciuna dintre aceste trei unități nu e instalată cu numele din cod (citit 12.11.2026). Unde rulează: neverificat.