Conectare TikTok per-artist
Buton in backstage (Login Kit). App Sandbox activ, Production in review.
Lista completa a functiilor, modificarilor si integrarilor de pe ionuttatar.ro — pe categorii, cu date si status. Vizibila doar pentru admin.
Buton in backstage (Login Kit). App Sandbox activ, Production in review.
Butoane Meta/TikTok/YouTube in header pana se conecteaza artistul; dupa conectare, cardul arata datele REALE.
Card cu followers + insights Instagram & Facebook (oficial, via Business Manager) pe profilul FIECARUI artist. General, nu doar unul.
Export PDF al raportului A&R per piesa.
Scor final per artist din toate sursele.
S-a abonat astazi, dar in sistem nu exista decat un cont simplu de cumparator: fara profil, fara backstage, fara chat. Acum e artista intreaga, la fel ca ceilalti - profil public, backstage deschis, chat pornit, si toate cele 36 de clipuri aduse de pe canal, impreuna cu cei 1.620 de abonati si cu cele 472.678 de vizionari. Contul ei de reclame de pe Google, 544-555-8596, a fost legat de managerul nostru si pus pe numele ei, iar contul de Facebook a fost gasit si legat automat. Pe TikTok nu are inca un cont de reclame - se leaga singur cand apare. La inscriere, numele de artist si linkul de YouTube ramasesera necompletate in comanda, asa ca le-am trecut noi.
Avea deja profil pe site si canalul de YouTube trecut, dar contul ei nu era legat de nimic: nu putea intra in chat si nu avea backstage. Acum contul, profilul si randul de artist sunt un singur lucru: chatul merge, backstage-ul e deschis si s-au adus toate cele 112 clipuri de pe canal, impreuna cu abonatii si cu istoricul de vizionari. Contul de reclame de pe Facebook, cel de Google si cel de TikTok au fost gasite si legate de ea, iar cifrele de pe Instagram si Facebook se vad in backstage. Nu are abonament, deci accesul e dat manual - cand intra abonamentul, totul se sincronizeaza singur.
Artist nou intrat in retea. I s-a facut profil pe site (pagina publica /artist/gigi-finta/), cont legat de adresa lui de mail, si backstage propriu la /backstage/gigi-finta/. Canalul de YouTube a fost citit automat: 64 de abonati, doua clipuri, plus contul de Instagram si pagina de Facebook luate din descrierea canalului. Videoclipurile si lansarea recenta sunt deja in backstage. Conturi de reclame inca nu are pe nicio platforma - se leaga singure dupa nume in momentul in care apar. Chatul cu echipa ii este deschis.
ACM MEDIA - STUDIO avea canalul si poza altcuiva — reparat, cu conversatia pastrata. Cei 3 videografi sunt exclusi din lista publica dupa rol, dar isi pastreaza chatul si accesul.
Avatarele primesc versiune in adresa, deci la schimbarea canalului nu mai ramane poza veche in cache o saptamana. Valabil la toti artistii.
Canal @oqmusicproduction cu backstage, chat, videoclipuri si cont Meta de reclame. Abonamentul de pe acest cont va acoperi si Florena (acces cuplat).
Un hopa la ClickUp stergea lansarea din coada (se stergea la ORICE raspuns fara id). Acum se sterge doar la 404 real.
Coada tine ID-ul artistului, nu numele. „Maria" ≠ fisa „Maria Diana" rupea poza, mutarea si anularea lansarii.
PremiereDetector nu avea cron deloc. Acum ruleaza pe loturi si inchide singur lansarile trecute.
Unealta reschedule_launch — agentul muta lansarea notata in loc sa creeze una noua. Inainte, cancel_launch dadea eroare fatala si nu functionase niciodata.
Mesajul de premiera ajunge la toti artistii piesei. Reclamele nu se oglindesc niciodata intre ei.
Ultima postare YouTube/Instagram/TikTok + status pauza + istoric postari (coperta, data, vizualizari). Facebook indisponibil.
Cea mai virala (sunete TikTok + mentiuni Instagram) afisata extins, restul cu expand la click. Etichete de impact: Viral TikTok / Viral Insta / Buzz TikTok / Buzz Insta / Hit / Creste rapid. STARE FINALA VALIDATA — nu se mai atinge fara cerere.
Lista (titlu + eticheta + views + ritm/zi + an) la toti artistii, inclusiv cei cu YouTube conectat. Optimizat pe telefon: titlu pe primul rand, detaliile pe al doilea — nimic nu iese din ecran. STARE FINALA VALIDATA — nu se mai atinge fara cerere.
/artisti-backstage/ — toti artistii activi, stil Hall of Trend, link la backstage.
Sfat de viralitate + 3 sugestii per platforma + variante pre-lansare, din semnale reale, cu istoric (buton expand).
OAuth Google — artistul conecteaza canalul pentru statistici lunare reale per video.
Cand o lansare devine publica, se sincronizeaza pe loc ultimul videoclip.
Numarare clipuri/sunete TikTok pe piesa (Apify), lansari auto-detectate din premiere, UGC pre-lansare.
Raport/scor A&R per piesa la cerere + istoric, integrat in Backstage si pagini dedicate.
Profil privat /backstage/<slug> cu acces pe abonament (AccessGate); comp pentru cei fara plata.
44 bare full-width din istoricul real pe 90 zile, gradient silver-albastru.
Istoric + peak per artist pe profil, pagina publica /hall-of-trend/, panou admin.
Contul de Google Ads 544-555-8596 nu era in managerul nostru, asa ca nu ii puteam vedea sau administra campaniile. Cererea de legare a plecat din manager si asteapta acum acceptul. Spre deosebire de conturile legate saptamana trecuta, pe acesta nu avem drept de administrator, deci nu o putem accepta noi din spate - trebuie confirmata de proprietarul contului, din Google Ads, la Setari - Managerii contului, unde apare cererea de la Ionut Tatar Music Manager. Pana atunci cifrele contului raman invizibile pentru noi.
Schelet complet. Blocat pe aprobarea app-ului TikTok Marketing.
Iulia Ardelean: Meta s-a încheiat pe 7 sep, TikTok pe 11 sep, dar Google încă rula, așa că artista n-a primit nimic decât la finalul campaniei Google. Cauza: în tatarr-ads-sync.php anunțul de încheiere pleca doar când NU mai rula nicio altă campanie și nu exista restanță. Acum mesajul pleacă la fiecare campanie încheiată, indiferent de restul. În plus, auto-reparare la 15 min (tatarr_ads_sync_heal_finished): orice încheiere din ultimele 7 zile rămasă fără mesaj, la un artist care primise „a pornit” pe aceeași platformă, se trimite singură și se notează în jurnalul de audit. Recuperate pe loc 13 mesaje la 11 artiști. Backup: arhiva-mu-plugins/tatarr-ads-sync.php.bak-incheiat-20260911.
Toate reclamele de pe TikTok aratau buget 0, fiindca datele se cereau printr-un canal la care contul nostru nu are acces si care esua in tacere. Bugetul se ia acum din raportul care chiar raspunde: se vad sumele reale, de exemplu 50 de lei din 50 si 99,20 din 100.
Contul nu era legat de niciun manager si nu aveam niciun acces pe el (API raspundea 403 permisiune refuzata si la datele contului, si la lista de utilizatori). Cererea a plecat din managerul Ionut Tatar | Music Manager (167-199-3837) direct prin API, fara invitatie pe email: legatura customers/1671993837/customerClientLinks/9652489319~6659351962, status IN ASTEPTARE. Acceptarea nu o pot face eu, o confirma proprietarul contului din Google Ads -> Setari -> Managerii contului. Scripturi: /tmp/gads_diag_9652489319.php, gads_invite_, gads_check_.
Alerta venea in fiecare ora cu Mihaita Chis si Ramona Iliesi Dragan, desi trimiterea era in regula. Gardianul isi tinea propria copie a regulii: considera anuntul trimis doar daca se potrivea si SUMA, insa regula reala e un anunt la 7 zile per platforma, indiferent de sold. Cum Meta mai incaseaza singur de pe cardul atasat si datoria scade (74 -> 60 lei), cazul parea mereu neanuntat. In plus, rularea fortata verifica doar 12 artisti pe rand din ~70, deci putea sa-l rateze exact pe cel pentru care pornise. Acum gardianul foloseste aceeasi regula ca sistemul si forteaza verificarea tintit, pe artistul care asteapta. Fisiere: mu-plugins/tatarr-ads-debt-notice-guard.php + tatarr-ads-debt-notice.php.
Profilul 8536 se numea „Liviu de la Orboesti Oficial" desi el e canalul LIVE (@liviuorboiestilive, 28.600 abonati), iar oficial e „Liviu de la Orboiesti & Orient Orchestra" (@liviudelaorboiestisiorchestra). Redenumit peste tot (titlu + numele din portal) si aduse la zi handle-urile schimbate pe YouTube. Contul Meta era legat de amandoua profilurile, deci fiecare campanie aparea de doua ori — a ramas doar pe cel oficial, ca la Florena. Backup in tatarr_liviu_backup_20260906.
Panoul lua cifrele din snapshotul monitorului, care ramane cu zile in urma fiindca scanarea celor ~140 de conturi e taiata de limita de timp — la Teodora Suciu arata 0,14 lei pe Google si nimic pe Meta/TikTok, desi cheltuise ~158 lei pe patru campanii. Acum sumele vin din starea de sincronizare, refacuta la 15 minute, iar snapshotul ramane doar pentru poza si numele campaniei. Se afiseaza mereu suma, niciodata „N campanii", iar campania care nu cheltuie apare portocaliu cu „nu cheltuie". Reparata si alerta de 24 de ore: citea aceleasi date invechite si sarea peste tot TikTok-ul (unde bugetul e mereu 0). 23 de artisti in loc de 20, cu sume reale.
Panoul arata 34 de artisti cu reclame active, aproape toate incheiate, si scria „1 campanie" in loc de suma. Cauza: fixul de dimineata socotea o campanie pornita dupa statusul TikTok STATUS_DELIVERY_OK, care spune doar ca nimeni n-a oprit-o — il aveau si campanii din iunie 2025 cu 0 afisari, iar una care chiar rula nu-l avea. In TikTokAds/AdsClient.php „ruleaza" se decide iar pe cifre (cheltuiala sau afisari in ultimele 3 zile), statusul ramane doar intaritor. Curatate si urmele celor 35 de campanii fantoma din meta si din starea de sincronizare, ca sa nu plece mesaje false „reclama ta s-a incheiat". Rezultat: 19 artisti, toti cu suma in lei.
Cand un artist cerea doua reclame si pornea una singura, se bifau amandoua. Acum fiecare campanie acopera o singura cerere: a doua ramane de facut pana porneste si reclama ei. In dreptul fiecarei cereri scrie acum suma campaniei ei, nu a primei gasite.
TikTok raporteaza banii cheltuiti cu zile intarziere, iar sistemul socotea ca o reclama merge doar daca a cheltuit in ultimele trei zile. Asa, o reclama abia pornita era invizibila peste tot si artistul nu afla niciodata ca i-a pornit. Acum ne uitam la ce livreaza TikTok chiar in momentul asta: pe primele zece conturi verificate se vad 13 reclame, fata de 3 inainte.
Contul ei de Meta Ads era trecut in Ads Manager, dar sistemul nu reusea sa-l citeasca si nu-i vedea deloc pagina de Facebook si Instagram, asa ca in backstage nu avea cifre de audienta. Pagina intrase intr-un Business Manager mai nou decat ultima scanare a noastra. Am legat-o direct, fara sa rescanam toate cele peste patru sute de conturi, si acum se citesc toate trei platformele plus datele de pe Instagram si Facebook.
La Bianca Crenganis toate etichetele de pe mesaje erau trecute pe creata, dar in lista de conversatii ramanea +1 de facut. Numaratoarea spunea corect ca nu mai e nimic, insa un mecanism mai vechi tinea eticheta aprinsa si nimeni nu o mai stingea. Acum, cand nu mai e nimic de facut, eticheta chiar dispare. Verificat pe toti artistii: era singurul caz.
Ion Paladi ceruse taieri si reeluri pentru concertul lui, spunand ca le vrea ca sa poata sponsoriza si vinde bilete. Sistemul a citit cuvantul sponsorizare si a cerut o reclama care nu exista, iar in preview aparea o cerere fara acoperire. Acum, cand cuvantul apare doar ca explicatie a scopului si nu are nici buget, nici link de postare, nu se mai socoteste cerere. Regula a fost incercata intai pe toate cele 546 de cereri din baza: iese exact aceea a lui Ion Paladi, nicio cerere adevarata.
Raporta ca nefacute cereri de reclama care erau facute de zile intregi: se uita doar daca a bifat cineva casuta, niciodata daca reclama chiar rula. Acum confrunta fiecare cerere cu campaniile pornite dupa ea si spune limpede care lipseste si care e doar nebifata. Din cele 15 semnalari ale ultimului email au ramas 3, toate reale.
Trei cereri apropiate dadeau trei randuri diferite in email, ca erau comparate doua cate doua. Acum sunt stranse intr-un singur rand, cu toate numerele la vedere. In plus, doua postari diferite ale aceluiasi artist cu acelasi buget nu mai trec drept dublura.
Din 65 de campanii raportate ca active, doar 23 mai rulau: 40 se incheiasera si 3 erau aceeasi campanie numarata de doua ori, de pe profiluri dublate. Acum se afiseaza doar cele vii, pe platforme, cu titlul campaniei si bugetul consumat.
Sapte cereri de reclama stateau nebifate desi campaniile rulau de zile intregi. Au fost verificate una cate una fata de campaniile reale si bifate, cu dovada scrisa la fiecare (platforma, ora pornirii, suma cheltuita) si cu urma in ClickUp. Nu a ramas nicio cerere de reclama nebifata.
Cand porneste chiar reclama ceruta, cererea trece singura pe facut si eticheta scade fara sa mai apesi nimic. Scrie de fiecare data si de ce s-a bifat: platforma, ora pornirii si suma. Se uita strict la platforma ceruta - o cerere de Facebook nu se stinge fiindca a pornit ceva pe TikTok - iar cererile care nu spun platforma raman de bifat cu mana. Daca pui ceva inapoi pe de facut, nu se mai atinge de el.
Daca in momentul verificarii API-ul unei platforme nu raspunde, campaniile ei nu exista deloc pentru sistem in tura aceea, deci nu se anunta nimic. La Google se intampla des, pentru ca depasim cota si punem singuri o pauza. Daca reclama porneste fix atunci, artistul nu mai afla niciodata. Asa a patit Andreea Haisan: campanie Google reala, 97 lei cheltuiti din 500, zero mesaj. Reparat: retinem ce platforma nu s-a putut citi si un mecanism separat reia acei artisti imediat ce platforma redevine disponibila, in loturi mici, sarind Google cat timp e in pauza. Ce nu se repara in 24 de ore ajunge in jurnal. Andreea a primit mesajul.
Cand Google nu raspundea, calculul starii se oprea pe loc si raspundea „nu stiu", fara sa mai intrebe Meta si TikTok, desi acelea se citeau perfect. Iar bara de progres se deseneaza doar pe starea „ruleaza". Rezultat: cat timp cota Google era epuizata, artistii cu reclame active aparea fara nicio bara. In momentul descoperirii erau 32 de artisti blocati asa, fata de doar 6 corecti. Reparat: esecul Google nu mai opreste calculul, ci se retine, iar celelalte platforme sunt intrebate normal; raspunsul „nu stiu" ramane doar daca nimeni nu dovedeste o reclama activa. 26 de artisti si-au recapatat bara imediat. In plus, starile blocate se reimprospateaza automat la 15 minute, iar daca raman multe blocate se scrie in jurnal, fiindca inseamna o problema de fond.
Aceeasi intrebare se punea la Google din patru locuri diferite, iar cronurile se suprapuneau: bare la 10 minute, marcaje la 15, scanarea orara, supraveghetorul la 2 ore, toate pe aceiasi artisti. De acolo veneau blocajele care lasau artistii fara mesaj si fara bara. Reparat cu un cache pus in client, ca sa acopere toate locurile deodata: aceeasi intrebare pusa de mai multe ori intr-o fereastra scurta inseamna acum o singura cerere. Masurat: 6 artisti la rece au facut 10 cereri, aceiasi 6 imediat dupa au facut zero. In plus, cat timp Google e blocat, se foloseste ultimul raspuns bun in loc de „nu stiu". Si nu mai trec toti artistii la fiecare tura: cei care cer reclame in chat intra mereu, ceilalti o data la trei ore.
Bara afisata nu se citea din starea artistului, ci dintr-un cache separat scris prin rotatie, cate un lot mic la zece minute, dintr-o lista de sute de artisti. Asa se face ca la Andreea Haisan starea era demult corecta, dar in ecran ramanea ora intregi bara veche. Acum bara se rescrie pe loc ori de cate ori se recalculeaza starea artistului.
Trei artisti aveau campanii Google care rulau, dar care nu erau deloc in evidenta sistemului. Pe langa faptul ca ratasera anuntul de pornire, nici mesajul de incheiere nu ar fi venit vreodata. Au fost inregistrate acum, fara sa plece niciun anunt de pornire, asa cum a cerut Ionut, ca sa primeasca doar mesajul de la final. In plus, sistemul retine de acum cand a vazut prima data o campanie, ca sa poata judeca vechimea si la platformele care nu dau data de pornire.
Un artist care nu ceruse reclama in chat si nu avea nicio campanie memorata ramanea invizibil pentru sistem, oricat de mult ar fi cheltuit. Nu primea nici anuntul de pornire, dar nici pe cel de incheiere, pentru ca incheierea se observa comparand evidenta cu realitatea, iar acolo nu era nimic. Acum, la fiecare 15 minute, cine are reclama activa dar lipseste din evidenta este adaugat automat, in tacere, ca sa primeasca macar mesajul de la incheierea campaniei. Verificat de doua ori pe cazuri reale recreate: campaniile intra in evidenta, zero mesaje trimise.
Cand un artist cerea mai multe reclame, sistemul tinea minte o singura cerere, asa ca la marcarea primei parea ca s-au facut toate. La Giulia, care ceruse doua, apare doar reclama activa, fara niciun plus. Acum eticheta numara cate etichete De facut reclama au ramas nemarcate pe mesaje si arata plus N de facut. Nu dispare pana nu le marchezi pe toate. Eticheta principala acopera o cerere doar daca ea insasi e de facut.
Fara nicio limita in timp, eticheta aduna tot ce gasea in ultimele trei luni: la Ramona Iliesi Dragan ieseau paisprezece ramase, dintr-o gramada de cereri stranse pe opt zile, iar la Ioana Magherusan se numara si o cerere din 1 august. Acum se numara doar cererile de azi incolo, adica treaba zilei curente. Ziua se calculeaza la fiecare rulare, deci merge la fel si maine. Etichetele de pe mesajele vechi raman neatinse.
La verificarea finala s-a vazut ca sarcina care rescrie barele afisate alunecase pe o rulare zilnica, desi trebuia sa mearga la fiecare zece minute. De aceea datele erau corecte in sistem, dar in ecran ramaneau vechi ore in sir. Repusa pe zece minute. Verificate si celelalte sarcini automate: reparare reclame la un sfert de ora, scanare la ora, supraveghere trend la zece minute, verificare pozitii la ora fixa. Toate pornite.
Compara data cererii cu pornirea campaniei doar pe ZI, asa ca o campanie pornita dimineata parea ca acopera o cerere venita seara. Acum compara la secunda: o cerere de dupa campanie ramane corect «de facut» (Ramona Iliesi Dragan).
Cand artistul scrie suma intr-un mesaj („si inca 500 ron in asta") si trimite linkul separat, cererea nu primea eticheta pe niciunul din ele — desi era notata corect in tab. Acum suma singura conteaza ca o continuare a cererii, iar linkul din mesajul vecin primeste si el eticheta (Paul Ananie).
Cererea notata de agent si eticheta de pe mesaj sunt doua drumuri separate catre acelasi lucru. De acum se compara automat: daca o cerere de reclama nu are eticheta pe niciun mesaj din jurul ei, pleaca alerta — nu mai trebuie observat cu ochiul.
Artistul nu mai trebuie sa scrie cuvantul „reclama": orice mentiune de promovare SAU orice buget in lei (ex. „Am un buget de 300 de lei pentru piesa, pe yt") intra singura in lista de reclame — fiecare semn declanseaza de unul singur. Inainte, promovarea trebuia insotita OBLIGATORIU de buget, iar bugetul singur nu conta deloc. Fisier: mu-plugins/tatarr-ads-watcher.php → tatarr_aw_candidates().
Agentul cerea „linkul de YouTube" chiar si pentru un reel, care nu are asa ceva. Acum intreaba ce se promoveaza si pe ce platforma (Instagram / Facebook / TikTok / YouTube Short) si cere linkul postarii exact asa cum e publicata acolo; daca artistul a postat deja, nu-l mai pune sa posteze din nou. Corectate si cele 36 de mesaje vechi.
Cand artistul cere promovare ca sa-i creasca numarul de abonati pe canal, agentul nu mai trateaza cererea ca pe o reclama obisnuita: ii spune cald ca acest tip de campanie se configureaza direct cu Ionut, printr-o conexiune AnyDesk, pentru ca se face din contul lui. Nu confirma buget, nu cere linkul postarii (la abonati nu e nevoie de postare) si nu promite zi sau ora — doar noteaza cererea. Promovarea obisnuita de piesa, videoclip, reel sau short ramane neschimbata, inclusiv pe YouTube. Regula e in ambele prompturi: mu-plugins/tatarr-artist-chat.php si tatarr-taskbot.php.
Andreea Haisan a scris „Pun si 500 Ron pe Youtube" la 5 ore dupa prima cerere din aceeasi zi si mesajul a ramas FARA eticheta. Cauza: in tatarr-ads-done.php ramura pentru sume scrise separat cerea o cerere vecina la maximum 2 ore. Fereastra de timp a fost scoasa: orice suma clara in lei/ron/euro sau „buget" cu cifra aprinde eticheta de una singura, iar in loc de fereastra filtram banii care NU sunt reclama (plati, facturi, abonamente, restante, cadouri, buget deja cheltuit). Verificat pe toata baza: +33 etichete noi, toate cereri reale de buget, si -3 mesaje care doar intrebau de buget fara nicio cifra. In plus, mab.to / myairbridge trecute la transferuri de fisiere, ca sa nu mai fie luate drept link de postare.
Detectia se carpea tipar cu tipar dupa fiecare caz scapat (Paul Ananie dimineata, Andreea Haisan dupa-amiaza). Acum tatarr-ads-done.php are o plasa care nu depinde de formulare: agentul AI citeste conversatia si scrie cererea in tabelul tatarr_requests cu tipul Reclama, iar orice astfel de cerere PUNE eticheta pe mesajul artistului din jurul ei (fereastra de 45 de minute), impreuna cu linkul postarii din mesajul vecin. Pana acum cele doua drumuri erau doar comparate intr-o alerta; de acum al doilea il repara pe primul. Testat controlat: pe un mesaj fara niciun cuvant de reclama, eticheta apare doar din cererea agentului si dispare cand cererea e scoasa.
Regula pe abonati era scrisa fara platforma in formulari (vreau mai multi abonati, sa-mi crestem canalul), asa ca agentul o extindea prin analogie si trimitea la AnyDesk si pentru urmaritori pe TikTok. Acum blocul se numeste REGULA CAMPANII PE ABONATI / URMARITORI si e impartit pe platforme: abonatii de YouTube raman singurul caz care nu se porneste din chat (doar cu Ionut prin AnyDesk, fara link de postare), iar urmaritorii de TikTok si de Instagram se fac normal de echipa, cu linkul unei postari de pe acea platforma plus buget, AnyDesk-ul fiind interzis explicit acolo. In plus, bugetul se cere MEREU, la orice campanie si pe orice platforma. Schimbat identic in tatarr-artist-chat.php si tatarr-taskbot.php. Testat pe model cu uneltele oprite: TikTok si Instagram cer link plus buget fara sa pomeneasca AnyDesk, iar YouTube trimite la AnyDesk si intreaba bugetul.
Exista o verificare care prinde campaniile carora nu le-a plecat niciodata mesajul „campania ta a pornit" si il trimite ulterior. Ea se baza pe data de pornire a campaniei — iar TikTok nu o da niciodata (vine goala, la fel ca bugetul), asa ca pe TikTok verificarea nu se putea declansa in veci. Reparat: pe TikTok se sare peste data de pornire si ne bazam pe faptul ca lista contine oricum doar campanii care au cheltuit in ultimele 3 zile. Nu poate trimite mesaje vechi in valuri: fiecare anunt are o poarta proprie tinuta 90 de zile, iar la verificarea dinainte de punerea in functiune toate campaniile TikTok existente aveau deja poarta, deci zero mesaje retroactive. Descoperit pornind de la Paul Ananie, la care mesajul de TikTok a venit corect, dar cu intarziere.
„ 30 lei" si continuarea „Si aici 30" se recunosc ca cereri. Sumele se cauta dupa scoaterea linkurilor, ca cifrele din URL sa nu treaca drept buget.
Toti artistii cu conturile lor Meta / Google / TikTok, plus campul de conturi suplimentare (un ID pe linie).
Sistemul citea UN cont per platforma; artistii cu doua aveau al doilea complet invizibil. 35 de conturi legate (10 Google, 22 Meta, 3 TikTok), printre ele campania de 3000 lei a Alinei Dunca, cautata doua zile.
Tokenul tine 60 de zile si NU se reinnoieste singur. Pe 19 aug a expirat in tacere si Meta a intors 0 conturi pentru toti cei ~350 de artisti. Acum se prelungeste singur cu 10 zile inainte, cu alerta daca Facebook refuza.
La 30 min verifica daca Google/Meta/TikTok chiar raspund; la blocaj curata cache-ul, remapeaza conturile noi si alerteaza dupa doua rateuri. Log in tatarr_ads_autoheal_log.
Improspateaza LIVE datele artistilor cu eticheta nerezolvata (starea se rescria o data la 2h, deci deciziile se luau pe cifre vechi), curata marcajele „creata" moarte si raporteaza neconcordantele.
O platforma necitita nu mai trece drept „fara campanii": se cade pe ultimul snapshot in loc sa plece „s-a incheiat" sau „prelungita" pe nedrept.
Google a blocat versiunea veche si notificarile s-au oprit complet. Migrare pe v25 (campoare redenumite) + pauza automata la RESOURCE_EXHAUSTED, cu reluare dupa retryDelay.
Un singur cont fara acces facea sa pice tot lotul de 50 la /advertiser/info/. Acum conturile problema se scot singure si se tin minte.
Cand contul de reclame are restanta, reclama nu ruleaza. Artistul primeste mesaj + email cu link direct la facturarea platformei; bara arata „in pauza · neachitat".
O campanie rulata de pe contul altui artist se atribuie proprietarului real, dupa numele campaniei (tatarr-ads-owner).
Tine eticheta pana cand campania chiar porneste SI cheltuie. Reparat pe 19 aug: o campanie VECHE care inca cheltuia consuma marcajul instantaneu si eticheta sarea inapoi pe „de facut" (Camelia Florea).
Auto-mapare dupa nume + fix paginare Meta (200 → 444 conturi); +125 artisti.
Reclame nou create, in verificare (doar campanii active, fara fantome din campanii sterse).
Push + email la artist & admin: pornita / ruleaza (praguri) / probleme / buget. Cron orar.
„Activ" = cheltuiala in ultimele 3 zile, NU statusul. Pe toate platformele + ramura „probleme".
Notificarea arata cat a cheltuit reclama in total + ultimele 3 zile (nu doar azi).
GAQL/MCC: insights reale, campanii active vs finalizate (cheltuiala recenta), istoric.
Marketing API: insights 30 zile, lista reclame active + istoric paginat, ID cont, mapare cont-artist.
Filtrul anti-dublura inghitea alertele pe artist (venea doar lista) fiindca bloca 24h orice subiect identic, iar pozitiile oscileaza. Fereastra redusa la 10 minute; la duet vin emailuri de la ambii artisti, dar acelasi email nu mai vine de doua ori.
Semnal verde cand e liniste reala in clasament, alerta rosie daca verificarea nu mai ruleaza, si auto-reparare cu instiintare daca vin listele fara emailurile individuale.
Din 24 aug, artistii care intrau in trend apareau DOAR in raportul grupat („Trend #TATARR — N schimbari"), fara emailul individual cu cardul. Cauza in class-youtube.php (check_trending_ro): blocul care salveaza „ultima pozitie vazuta" (_tatarr_trend_lastpos_*) rula IN bucla de artisti, deci o intrare reala isi scria pozitia INAINTE sa plece alerta; send_trending_alert citea apoi lastpos = pozitia curenta, o lua drept „acelasi loc" si iesea fara email. Doar intrarile erau afectate (la urcare/coborare prev>0, deci ramura nu se atinge). Fix: blocul mutat DUPA trimiterea alertelor. Semnalat de Ionut la Roberta Selagea (Populare #185).
Verificati toti artistii aflati in trend, comparand pozitia curenta cu ultima pozitie anuntata pe email. Doi ramasesera fara emailul de intrare, ambii pe colaborarea „Habar n-ai tu ce mult pot eu sa te iubesc" #185: Roberta Selagea si Blaga de la Oradea. Ambii au primit acum emailul corect, cu cardul de trend atasat, cu copie la admin.
Verificarea de la finalul rularii orare (artist in chart dar fara emailul lui individual) exista din 24 august, dar era ea insasi oarba: trimitea prin acelasi mecanism care, la un artist ramas pe acelasi loc, considera ca nu e nimic nou si iesea fara email. Adica exact situatia pe care trebuia sa o repare nu se repara niciodata singura. Acum plasa trimite intr-un mod special care sare peste filtrul de „acelasi loc", pastrand in schimb filtrul pe fluxul normal, ca sa nu reapara falsele anunturi de intrare cand lista YouTube are pauze. Are si prag propriu: daca ar trebui sa repare mai mult de 5 artisti deodata, nu trimite nimic si semnaleaza, fiindca inseamna defect de date.
La fiecare 10 minute se verifica daca a ramas vreun artist in trend fara emailul lui individual. Daca da, i se trimite pe loc; daca tot nu reuseste, pleaca alerta „Trend: verificare esuata" catre admin si problema apare pe pagina de monitorizare. Verificarea asteapta 15 minute dupa rularea orara, ca sa nu se suprapuna peste ea. Testat pe viu cu trimiterea blocata: defectul a fost detectat, reparat automat si starea restaurata.
Trend doar de pe canalul artistului (anti fals-pozitiv la nume comune).
~35 piete (2x/zi) + Trend Muzica Moldova. Carduri + email + push country-aware cu steag.
Chart muzical RO orar, atribuire la artisti (canal + nume), notificari intrare/urcare.
Card vizual cu pozitia, generat mereu si atasat in email.
tatarr-push (VAPID): trenduri per-artist, legatura user-artist automata.
SPF + DKIM 2048 + DMARC — rezolva imagini blocate si spam.
Template modern unificat; viral pe 48h/7z/30z; mereu la artist + admin.
Pozele din email servite de pe ionuttatar.ro (Gmail blocheaza i.ytimg.com).
Sugestiile AI trimise pe email la artist + admin, stil card.
Abonamentul #2567 (60 RON/luna) avea 9 comenzi neplatite (pending/failed) din iulie 2025 pana in septembrie 2026. Cele 8 de pana in 7 august 2026 (#4101, #6211, #6212, #7854, #9007, #10077, #10586, #10631) au fost trecute pe statusul Cadou, deci restantele din itc_tatarr_subscription_debts au trecut automat pe gift prin gift-sync: de la 540 RON la 60 RON. Comanda din 7 septembrie (#10762) a ramas intentionat in asteptare. Artista a primit cate un email de luna cadou pentru fiecare din cele 8. Cauza reinnoirilor esuate: 0 tokenuri de card salvate si _stripe_source_id gol, deci i s-a generat link direct Stripe de adaugare card (mod setup, zero lei incasati), care leaga automat cardul la abonament.
Cele 5 comenzi ramase Anulate la Ancuta si Grigore Pop (user 262, abonament 3311) au fost trecute pe statusul Cadou, la cerere, fara niciun email catre client: #4357 (aug 2025), #8892 (oct 2025), #8893 (nov 2025), #8894 (dec 2025) si #9835 (iun 2026, comanda de plata restanta anulata anti-duplicat). Emailul a fost suprimat cu _tatarr_gift_no_email pe fiecare comanda inainte de schimbarea statusului; statusul vechi e pastrat in _tatarr_gift_prev_status, deci e reversibil. Cele 5 luni au fost trecute si in jurnalul de Cadouri. Abonamentul a ramas activ cu reinnoirea pe 4 octombrie, restanta 0.
Avea treisprezece comenzi ramase neplatite - una esuata, doua anulate si zece in asteptare, adunate din iunie 2024 pana in august 2026, adica 780 de euro. Toate au fost trecute pe cadou, asa ca nu mai apar ca datorie nicaieri si nu se scade nimic din incasari. Restanta ei este acum zero, iar abonamentul ramane activ cu urmatoarea plata pe 1 octombrie. A primit un singur email de instiintare, nu treisprezece.
A achitat prin transfer bancar toate lunile ramase in urma, din octombrie 2025 pana in august 2026 - 660 de euro. Toate comenzile sunt acum finalizate si trecute pe transfer bancar, restanta a picat la zero si abonamentul a pornit singur la loc, cu urmatoarea plata pe 30 septembrie. Pentru luna august sistemul generase din greseala doua comenzi identice in aceeasi secunda; a doua a fost stearsa, altfel ar fi aparut 720 de euro incasati in loc de 660.
Dupa ce si-au achitat toate lunile ramase in urma, colaborarea s-a incheiat: abonamentul a fost anulat si profilul lor a fost scos de peste tot. Lucian, Sebastian si Ianis foloseau acelasi profil, asa ca toti trei au ramas fara acces la chat si la backstage si nu mai primesc nicio instiintare. Profilul nu mai apare nici in lista publica de artisti. Totul e reversibil: starea dinainte e salvata, iar la nevoie se pune totul la loc.
Data la care se reinnoieste un abonament se aseaza singura pe ziua cea mai des intalnita in platile vechi, ca sa nu alunece cand o luna se plateste cu intarziere. Problema aparea cand ziua trebuia schimbata intentionat: la urmatoarea plata istoricul o tragea inapoi. Acum se poate fixa o zi anume pe un abonament, iar aceasta bate calculul automat, cu aceleasi masuri de siguranta: niciodata o data din trecut, niciodata la mai putin de cinci zile de ultima plata, iar in lunile scurte se coboara pe ultima zi. Fara o zi fixata, nimic nu se schimba pentru restul abonamentelor. Prima folosire: Violeta Gherman, mutata pe ziua 4.
Cand cineva incepe plata, nu o duce la capat si apoi revine si plateste, cosul vechi se inchide acum ca Anulat, in liniste. Inainte era marcat Esuat si pleca alerta pe mail catre echipa, desi banii intrasera. In plus comanda veche nu mai poate fi platita din linkul primit atunci, deci nimeni nu ajunge din greseala cu doua abonamente.
Cand reinnoirea era incasata mai devreme in cursul zilei, data urmatoarei plati ramanea neschimbata si sistemul mai taxa o data cardul cateva ore mai tarziu: plata pica, abonamentul trecea pe asteptare si aparea o restanta falsa, desi artistul platise (Giulia Pop, 27.08). Acum data se muta automat la incasare. Scanate toate abonamentele: un singur caz real, reparat.
Doua restante erau agatate de o comanda deja platita, asa ca luna aparea incurcata in dashboard. Fiecare are acum comanda ei vizibila pe luna corecta, cu suma datorata neschimbata.
Emailul de restanta pleaca doar cand abonamentul trece din activ in plata neachitata, asa ca cine era oprit de luni de zile nu mai primea nimic. Acum reamintirea se retrimite din 7 in 7 zile, pana cand suma e achitata, si se opreste singura la plata. Merge doar catre artistii care au scris macar o data in chat; ceilalti nu sunt contactati. Textul si subiectul raman cele stiute, cu o copie la adresa de contact.
Prima rulare a auto-repararii a creat 89 de comenzi lipsa (iulie + august 2026, 5.340 lei, 56 artisti, toate pe abonamente on-hold, zero emailuri trimise) — corecte ca date, dar generate fara sa fie cerute. Acum are doua franturi: fereastra de 62 de zile in interogare si un guard care sare peste orice luna dinaintea ULTIMEI PLATI de pe abonament, plus maximum 10 comenzi pe rulare. Lunile vechi, reglate manual, nu mai pot fi atinse niciodata de automat. Fisier: mu-plugins/tatarr-debt-orders-autoheal.php.
Raportul „0 emailuri trimise" se baza pe o interogare care esua in tacere (coloana to_mail nu exista in itc_wpml_mails — corect e receiver), iar rezultatul gol era citit ca zero. Verificarea refacuta corect a confirmat ca intre 10:02 si 11:38 nu a plecat niciun email, deci operatia chiar a fost tacuta. De acum orice batch pe restante se verifica pe numele bun al coloanei.
Metodele Link inchise dadeau „eroare de conectare" si treceau abonamentele pe asteptare. Se detecteaza dupa tipul token-ului si se curata fara sa strice abonamentele cu Link functional.
Cron orar care repara cele doua desincronizari recurente, in loc sa fie raportate manual de fiecare data.
Trecerea manuala pe „Finalizata" stingea restante si reactiva abonamentul, deci Analytics raporta bani neincasati (Denisa Rolnic: 420 € pentru 300 € neincasati). Garda: fara ID de tranzactie nu se stinge nimic; portita _tsd_incasat_manual pentru transfer bancar.
La o singura plata esuata plecau 4-5 emailuri. Textele nu mai spun „abonament" cand e vorba de o comanda; emailul fals „Abonament anulat" venea din curatenia anti-duplicat.
Dupa ce conversatia se incheie (liniste >24h), artistii cu restante primesc un mesaj prietenos cu suma si linkul. Max o data la 7 zile per artist.
Se pierdea la fiecare editare a fisierului de interfata. Acum e independent, cu REST + fallback.
Fiecare click pe „Achita restanta" crea o comanda noua, iar cele vechi se anulau automat — 4 comenzi in 10 minute la Ioana Magherusan, cu 3 emailuri de anulare. Acum se refoloseste si ramane Esuata pana e platita.
8.196 € contorizati de doua ori in wc_order_stats. Atentie la statusurile excluse din Analytics.
Muta urmatoarea plata fara refund; email in formatul comenzilor; Jurnal cadouri.
Formularul de card Stripe pe tema site-ului.
Urmeaza statusul comenzii; email cu total+luni+buton; plata reactiveaza abonamentul.
tatarr-invoice a inlocuit YITH: generare auto + atasare email + panou admin.
Reparat fatal psr/http-message in mPDF.
Refund real Stripe + anulare abonament + email neutru + copie contact@.
Mutare de pe Apify pe Meta Graph API (System User din BM — mai rapid + insights). De adaugat scope instagram_basic + instagram_manage_insights.
Followers + postari Instagram / TikTok / Facebook via Apify, cache + cron.
YouTube Music / Apple / Deezer / Shazam / Amazon cu iconite pe profil.
Canal cu 2 artisti => 2 profile, social/video filtrate dupa numele din titlu.
Coperti TikTok/IG descarcate local permanent (expirau si lasau carduri goale).
La artistii ale caror lansari vin din premiere DEJA create (nu din coada de cereri — ex. Laurentiu Craciun), ✕-ul de pe eticheta nu are ce anula si nu face nimic, desi butonul arata activ. De facut: fie sa anuleze premiera programata, fie sa fie ascuns acolo.
Nadia a cerut sa mai promoveze o piesa doar cu titlul, iar agentul i-a raspuns ca linkul il are deja din catalog si a cerut doar bugetul - Ionut a trebuit sa intervina manual, a treia oara pe aceeasi problema. Cauza: regula care ii interzice sa ceara linkuri la piesele proprii (le stie din catalog) nu avea nicio exceptie pentru reclame, iar linkul vechi din campania din august trecea drept link valabil. Acum are o regula separata: la orice promovare cere linkul exact al postarii sau clipului daca nu e in cererea de acum, indiferent ca piesa e in catalog sau a mai fost promovata; ii e interzis sa spuna ca il are deja. Verificat pe artistul de test in trei situatii.
navzar.ro@gmail.com a primit acces complet de videograf, ca la ceilalti: profil 10766 + cont 29638, canal YouTube @navzarvideography legat si sincronizat, acces la chat, ascuns din lista publica de artisti. Agentul il trateaza ca videograf (intreaba doar pentru ce artist e materialul), nu ca artist.
Profilul de videograf 10444 nu avea niciun canal YouTube legat. Legat @boroscristian si sincronizat (avatar, abonati, clipuri). In plus, memoria agentului il descria ca artist cu distributie muzicala in curs, pentru ca luase in serios o gluma din chat; rescrisa ca videograf, ca sa nu-l mai intrebe de lansari sau abonament.
La Ionut Chis si la Ana-Maria Rosiu artistii au trimis linkul si bugetul, iar agentul a confirmat pe loc ca pornim campania - fara sa intrebe deloc pe cate zile o vrea. Regula exista in creierul agentului, dar era o singura propozitie pierduta la mijlocul unei fraze uriase, in timp ce in alte patru locuri scria apasat ca o cerere e completa cu link si buget. Peste toate, o regula scrisa cu majuscule spunea ca durata o hotaraste echipa - pusa cand agentul dadea 14-15 zile la toata lumea - iar agentul a inteles din ea ca nu are voie sa deschida subiectul. Acum lucrurile sunt separate clar: el tot nu propune cifre de la el, dar intreaba de fiecare data daca artistul are o preferinta de perioada sau lasa echipa sa aleaga, iar perioada a fost trecuta in toate listele de ce lipseste, alaturi de link si buget. Cand artistul spune el singur durata, agentul nu mai reintreaba, ci o noteaza in task. Verificat pe cele trei situatii.
Regula pusa ieri nu se mai bazeaza pe faptul ca ne aducem noi aminte de ea. Un gardian nou face trei lucruri singur, in fiecare zi. Intai citeste ce a scris agentul artistilor in ultimele doua zile: daca a vorbit despre trend si a folosit „organic”, „fara promovare”, „doar din puterea piesei” sau ceva asemanator unui artist care are campanii in sistem, ne trimite citatul exact, cu numele artistului si ora. Apoi verifica daca regula mai e la locul ei in creierul agentului - se intampla sa lucram la fisierul de chat si sa se piarda bucati. Si, cel mai important, are o plasa: daca regula chiar a disparut, o repune el pe loc, asa ca agentul ramane acoperit chiar si atunci cand ceva s-a suprascris. Ne anunta cel mult o data la 12 ore, ca sa nu ne inece in mesaje. La prima rulare a si prins o abatere reala din 5 septembrie.
Agentul le spunea unor artisti ca piesa a urcat in trend organic, desi in spate le rulasera reclame platite. Motivul: in tot ce stia agentul despre artist — trend, lansare, catalog, memorie — nu exista nicio informatie despre reclame, asa ca umplea golul din burta. Acum primeste lista reala de campanii, active si incheiate, pe Facebook/Instagram, Google/YouTube si TikTok, plus o regula clara: daca exista macar o campanie, nu are voie sa spuna „organic”, „fara promovare” sau „doar din puterea piesei” — ii explica sincer artistului ca meritul e impartit intre piesa si reclama. Cand chiar nu am promovat noi, spune „din partea noastra nu a rulat nicio reclama”, ca sa nu-i taie meritul daca a promovat singur.
Pana acum, oprirea unui artist taia doar mesajele automate din chat si notificarile de pe telefon - emailurile plecau mai departe, fiindca aproape niciun sistem nu se uita la comutatorul de oprire. De acum nu-i mai pleaca nimic: nici sugestii, nici trend, nici rapoarte. Daca un email ne era adresat si noua, si lui, pleaca doar catre noi. Adresele noastre nu pot fi blocate niciodata, oricum ar ajunge pe lista.
Agentul intreba «refrenul, o strofa, sau lasam echipa sa aleaga?» si primea raspunsuri imposibil de folosit (Maria Tucan: «partea unde cant eu, atunci eram mai mica»; Ion Paladi: «voi stiti mai bine cum sa taiati» pentru 4 piese dintr-un concert intreg) — echipa pierdea ore cautand prin video. Acum promptul cere OBLIGATORIU minutul si secunda de inceput si de final (un interval pentru fiecare reel), la concerte minut start+final pentru fiecare piesa, refuza cald descrierile in cuvinte si nu mai propune varianta «alegem noi cadrele». Minutele intra in detaliile task-ului. Fisier: mu-plugins/tatarr-artist-chat.php.
Instiintarea „reclama ta a pornit" pleca doar cand se vedeau bani cheltuiti - ceea ce pe TikTok se intampla dupa zile. Acum pleaca de cand reclama chiar livreaza. Reclamele vechi, iesite dintr-o data la iveala, au fost inregistrate in tacere, ca sa nu primeasca nimeni instiintari pentru campanii de acum o luna.
Cand artistul trimite un link de TikTok/Instagram/Facebook/YouTube/Spotify, platforma reclamei se citeste din link si se scrie singura in task („📍 Platforma: TikTok") — agentul nu mai intreaba «pe ce platforma vrei reclama?» cand raspunsul e chiar in linkul primit.
Agentul trata orice link non-YouTube ca „material primit": la un simplu link de TikTok cerea „videoclipul original fara compresie" si presupunea singur ca e vorba de reeluri, apoi intreba pe ce platforma vrea reclama desi linkul era de TikTok. Acum linkurile de TikTok/Instagram/Facebook/Spotify/Apple sunt marcate ca LINK DE POSTARE: agentul nu mai presupune ce vrea artistul, nu mai cere fisierul original si deduce platforma reclamei din link.
Sistemul ofera o reducere mare daca teancul de instructiuni trimis agentului este identic cu cel de dinainte. Noi nu il prindeam niciodata, fiindca la inceputul teancului scriam ora curenta, care se schimba in fiecare minut, asa ca de fiecare data se rescria tot, la pret dublu. Acum regulile generale, aceleasi pentru toti artistii, stau la inceput, iar ce se schimba de la un artist la altul sau de la un minut la altul a fost mutat la coada. Agentul primeste exact aceleasi informatii, cuvant cu cuvant, doar in alta ordine. Masurat pe teste reale: primul mesaj dintr-o ora costa ca inainte, iar toate celelalte din acea ora costa a zecea parte.
Avea doua fise in sistem, iar mesajele despre premiera live ajunsesera pe cea gresita. Contul e legat acum la ambele profiluri, mesajele au fost mutate unde trebuie si lansarea dublata a fost inchisa.
Cand artistul scria ca trimite materialul „pana maine", sistemul citea acel „maine" ca pe inca o zi de lansare si punea a doua eticheta pe conversatie. La Florena aparea 2 septembrie langa lansarea reala de 11 septembrie. Acum orice data care vine dupa cuvantul „pana" e citita ca termen de livrare, nu ca lansare, si ramane o singura eticheta - cea adevarata.
Toate orele erau cu trei ore in fata - o cerere venita la 14:32 aparea ca 17:32. Reparat peste tot in tab: data cererii, ora bifarii si eticheta din conversatie.
Eticheta cu numarul de cereri parea ca dispare din lista. De fapt aparea si disparea: lista de conversatii se reface singura la cateva secunde si sterge etichetele, iar ele erau puse la loc doar dupa o verificare la server, care se abandona daca nu trecusera zece secunde de la precedenta. Asa se pierdea tura si eticheta lipsea zeci de secunde. Acum etichetele se pun inapoi imediat, din ce se stie deja, fara sa mai astepte serverul, iar verificarea ramane doar pentru date proaspete. Masurat inainte si dupa: din palpait la fiecare cateva secunde, la afisare constanta.
Bara dintre lista de conversatii si mesajul deschis se poate acum trage cu mouse-ul, ca sa largesti sau sa ingustezi lista dupa cum ai nevoie. Latimea aleasa se tine minte pe calculatorul fiecaruia, iar dublu-clic pe bara o aduce inapoi la marimea initiala. Merge intre 240 si 720 de pixeli si doar pe ecran mare, fiindca pe telefon lista si conversatia stau oricum una sub alta. Tot acum, numele lungi de artisti nu mai trec pe doua randuri in lista, ci se taie frumos la capat.
Raspunsurile uzuale (multumiri, start lansare, TuneCore, drepturi, revendicari) vin instant din biblioteca, fara model. Restul se ruteaza pe 3 modele dupa cat de greu e mesajul: Opus la poze/capturi, reclame, buget in lei, drepturi si lansari cu detalii; Haiku la mesaje simple. Cache-ul de prompt tinut 1 ora. ~55% mai putine credite.
Agentul stie acum cele 4 obligatorii: fisier audio, poza de coperta, titlul exact si data lansarii (fara data nu se poate trimite). Spune 1-2 zile doar ca reper, fara sa promita; piesele detectate ca generate cu AI intra in verificare suplimentara.
Cand apasai eticheta de pe un mesaj care nu contine link, marcajul intra in baza de date, dar nu se schimba nimic in capul conversatiei si nici in previzualizare. Motivul: fara link, sistemul incerca sa afle artistul cautand un text tehnic prin mesaje, ceea ce nu se potrivea niciodata, si atunci se pierdeau ambele efecte ale apasarii. Asa au patit Ioana Magherusan si Bogdan Gabudean. Acum artistul se afla direct dupa mesaj. Etichetele lor au fost si reparate manual, o singura data, pentru ca apasarile vechi se pierdusera.
Lista mesajelor in care artistul cere reclama se cerea o singura data, la deschiderea conversatiei. Daca artistul scria cat stateai in chat, mesajul nou nu mai primea eticheta niciodata, inclusiv cele in care spunea o suma in lei. Detectia functiona corect pe server, doar afisarea ramanea in urma. Acum lista se reia si cand apare un mesaj nou, cu o franare de zece secunde ca sa nu incarce serverul.
La Nicoleta Ghelase, oricat apasai pe X, eticheta reaparea. Motivul: eticheta nu era salvata nicaieri, se recalcula de fiecare data din conversatie, iar X-ul incerca sa anuleze o lansare din coada de lucru, pe care ea nu o avea. Practic nu exista unde sa se noteze stergerea. Acum stergerea se retine si eticheta ramane stearsa. Reapare doar daca artistul cere din nou o lansare, ceea ce e corect, fiindca atunci e ceva nou.
Eticheta verde ramanea agatata de artist saptamani intregi dupa ce piesa iesise, desi treaba era demult inchisa, si aglomera randul de etichete. Acum se stinge singura la trei zile dupa premiera. Se aplica doar pe trimise, fiindca cerute inseamna ca mai e ceva de facut. Daca nu se stie data premierei, eticheta ramane. Pragul de zile se poate schimba fara sa umblam in cod.
In capul conversatiei statea singura pe un rand deasupra celorlalte; acum intra in acelasi rand, imediat dupa eticheta de reclama. In lista de conversatii, unde randul nu se rupe, nu se mai adauga a treia eticheta care iesea taiata — numarul ramane pe pastila tabului Cereri.
Cand un artist avea doua sau mai multe cereri deschise, apasarea pe eticheta doar deschidea tabul Cereri, asa ca nu se putea bifa nimic din conversatie. Acum un click le trece pe toate pe facut, si din capul conversatiei si din lista de mesaje, iar al doilea click le pune inapoi. Ramane si urma in ClickUp.
Se schimba doar culoarea fara text, starea sarea inapoi dupa apasare, iar textul se dubla in aceeasi pilula („1 cerere1 cerere1 cerere"). Eticheta se reconstruieste acum de la zero la fiecare afisare, se pastreaza una singura pe rand si doua improspatari nu mai pornesc in paralel.
Cand artistul scrie in conversatie alta zi sau alta ora, lansarea se muta, dar eticheta ramanea pe data veche — prinsa dintr-un mesaj oarecare, de multe ori un termen pentru reeluri. Acum eticheta urmeaza lansarea confirmata (Giulia Pop: mutata pe 29 august ora 12:00).
„Mi-ar trebui pe 28 august" pentru reeluri era citit ca data de lansare si acoperea lansarea reala. Verificarea se face acum si pe data care ajunge efectiv in eticheta, si recunoaste si formulari fara cuvantul reel: montaj, editare, sa le am, gata pana, termen. Testat pe 15 formulari, fara nicio greseala.
Cand bifai pe un mesaj ca reclama e creata, in lista de conversatii scria mai departe „de facut reclama". Acum cele doua merg impreuna (Andreea Haisan).
Mesajul de premiera PROGRAMATA si cel de LIVE pleaca prin aceeasi functie, cu acelasi sender_name, iar dedup-ul de 4 zile il inghitea pe al doilea: in 30 de zile, 129 lansari inchise dar doar 42 anunturi trimise. Acum dedup-ul numara doar mesajele de live. Fisier: mu-plugins/tatarr-premiere-notify.php → tatarr_premiere_recently_sent().
Helperul tatarr_premiere_e_de_azi() (fusul site-ului) e folosit in toate cele 3 cai care anunta: tatarr_premiere_check_run(), tatarr_premiere_scan_channels() si tatarr-premiere-watchdog.php. Ce nu e de azi se marcheaza tacut ca trimis, ca sa nu iasa niciodata cu intarziere. Lansarile vechi nu se recupereaza — decizia lui Ionut: nu mai trimitem la cei carora nu li s-a trimis si a trecut.
Artistul cu doua premiere (Nicoleta Ghelase: 30 sept. si 10 oct.) vedea o singura eticheta, cu datele lipite. Acum fiecare lansare are eticheta proprie — cu ora, culoarea si ✕-ul ei — atat in lista de conversatii, cat si in headerul conversatiei deschise, langa eticheta de reclama. ✕ scoate DOAR lansarea apasata, cautata pe ora exacta. Editarea manuala (🏷 Eticheta → LANSARE) si detectarea automata convietuiesc. Fisiere: mu-plugins/tatarr-artist-chat.php + tatarr-artist-chat-ui.php.
Cand artistul da data bucatit („ziua: duminica" / „ora: 13" / „yes"), in mesajele LUI nu exista nicio data intreaga si eticheta ramanea „de programat". Acum, daca mesajele artistului nu dau nimic, se citeste recapitularea agentului („Am notat: duminica, 30 august, ora 13:00"). Termenele de reeluri („pana pe 8 septembrie") sunt excluse, ca sa nu apara ca lansari.
Agentul promitea „verificam noi cine detine drepturile si iti transmitem contactul". Regula rescrisa in ambele prompturi (chat + taskbot): NU cerem drepturi, NU cerem acorduri in locul artistului, NU facem acorduri sau contracte. Discutia o poarta artistul, direct cu detinatorul drepturilor; noi il ajutam doar cu informatii despre cine le detine. Corectate si cele 10 mesaje deja trimise.
Cand stergeai eticheta „reeluri cerute" de pe o conversatie, ea reaparea imediat, oricat de des dadeai pe X. Cauza: orele mesajelor din chat sunt salvate in ora Romaniei, dar serverul socoteste in ora universala, deci fiecare mesaj parea ca a venit cu 3 ore mai tarziu decat in realitate. Sistemul concluziona atunci ca „a venit un mesaj nou dupa stergerea ta" si punea eticheta la loc. Practic stergerea nu putea sa tina niciodata daca artistul scrisese despre reeluri in ultimele 3 ore. Reparat: se foloseste acum aceeasi conversie de ora ca la etichetele de reclama, care erau corecte. Semnalat de Ionut pe conversatia FLORENA, unde reelul fusese cerut doar ca test.
tatarr-ads-done: mesajul care poarta linkul si suma primeste eticheta in dreapta bulei. Recunoaste si tiparul scurt „ 30 lei", fara cuvantul promovare (Bianca Mitroi, 4 mesaje ratate la rand).
Regula „bani" pasa tot catre echipa, deci artistii asteptau degeaba (Andra Munteanu a cerut de 5 ori). Acum linkul pleaca imediat; echipa ramane doar pe card, facturi si rambursari.
Cere postarea pe pagina de Facebook a artistului, LINKUL acelei postari (fara el nu stim ce promovam) si bugetul in LEI, niciodata convertit de noi.
Nu mai depinde de ClickUp. Capcane rezolvate: fusul orar (18:00 aparea 21:00), „maine" socotit fata de ziua MESAJULUI, „3-4 reels" citit ca 3 aprilie, data trecuta = cerere onorata.
Bara de filtre cu numar pe fiecare (reclame / reeluri / lansari). Filtrare in pagina — /threads intoarce lista intreaga, deci apasarea e instantanee si nu bate serverul.
✕ pe fiecare eticheta si meniu de creare. Stergerea e permisa DOAR contului lui Ionut; colegii vad etichetele, nu le pot scoate.
Din clipa in care artistul cere, fara sa astepte cronul de 2h sau lansarea. Prinde si suma fara moneda („promovare pe insta de 50") si „100 de lei" cu „de" intre cifra si moneda.
Taburi de comutare intre fise (cookie tac_artist) + rolul de manager de continut care vede toate conversatiile.
Linie in istoric, fara notificare, doar daca ultimul mesaj nu e de la artist. Se reseteaza cand scrie din nou.
Reclama (ceruta / de facut / creata / activa / terminata), reeluri (cerute / trimise) si lansare (de programat / premiera pusa / lansat), calculate live din chat + API, cu cache de 10 s.
Piesa pleaca la distributie odata cu premiera; validarea dureaza cateva zile; NOI nu putem vedea termenul pentru ca platformele nu ofera asta. Text aprobat, nu se rescrie.
PWA-ul instalat nu se reincarca niciodata, deci /send primea 403 si mesajele picau TACIT (Maria Tucan). Acum se ia nonce nou si se reia cererea o singura data.
Filtru pe tatarr_taskbot_model, comutator „🤖 Model" doar pentru admin. Folosit la artistii care ard credite (ex. Mihaela Stupariu pe Haiku 4.5).
post_meta tatarr_artist_memory, construita din conversatii (cron 15 min, Opus, 5 artisti/rulare) ca agentul sa nu ceara de doua ori aceleasi lucruri.
create_task / create_launch / update_task / reschedule_launch. Cererea intra in ClickUp cu toate linkurile si termenul cerut, ca echipa sa nu redeschida chatul.
Firul din /chat/ semnat mereu „Echipa #TATARR"; echipa raspunde din inbox-ul /taskbot/, iar intern se vede cine a raspuns. Poze, linkuri, confirmare de livrare, notificare pe telefon.
Raspunde in conversatiile nepreluate (sweep la 2 min, max 6/rulare) si trimite incheierea daca echipa iese fara raspuns. Preluare manuala oricand; „pauza" per artist opreste tot ce pleaca automat.
In logul serverului apar repetat erori de conexiune la baza de date pe interogari WooCommerce / Action Scheduler, cu load average ~32. Nu vin din codul nostru si privilegiile MySQL sunt intacte, dar e acelasi tipar care a mai daramat site-ul. De investigat de unde vin si ce le declanseaza.
Un singur ecran cu tot ce conteaza: lansarile care vin, cererile artistilor, trendul, reclamele care chiar ruleaza si jurnalul zilei. Se deschide la /jarvis/ si e vizibil doar pentru administratori. Datele se citesc direct din site la fiecare incarcare, deci sunt mereu proaspete.
Fiecare cerere are poza canalului, eticheta de tip si o bifa. Bifarea si schimbarea etichetei se scriu in acelasi loc cu taskbotul, deci ce faci intr-o parte se vede in cealalta. Cererile se tin la vedere 36 de ore, ca cele intrate seara sa nu dispara la miezul noptii.
Panoul anunta ca 46 de sarcini au trecut de ora, desi toate erau la zi. Compara ora Romaniei cu marcajele sarcinilor, care sunt in ora universala, si vedea ca intarziat tot ce urma in urmatoarele trei ore. Acum numara corect si spune si cate sarcini distincte sunt in urma.
Cand chiar ramane ceva in urma, apare in bara de jos un buton care deblocheaza coada si trimite pe loc sarcinile scadente, apoi raporteaza cate au plecat si cate mai raman. Inainte, o coada blocata trebuia desfacuta de mana din server.
Pana acum panoul se deschidea doar pentru administratori. Acum il vede toata echipa, pe aceeasi lista ca la taskbot, deci nu exista doua liste de tinut minte: cine intra in echipa primeste automat si panoul. Fiecare poate bifa cererile artistilor si le poate schimba eticheta, exact ca in taskbot. Butonul de retrimitere a sarcinilor de server ramane doar la administratori.
Randul cu titlurile de la baza panoului ramasese inghetat: textul era strivit la latimea ecranului, asa ca miscarea lui era de cativa pixeli si parea oprit. Acum curge continuu si se opreste cat tii cursorul pe el, ca sa poti citi un titlu anume.
Scria „Lansari 6 lansari”, acelasi cuvant de doua ori, si nu se intelegea la ce tab esti. Acum scrie „6 programate”, „3 de programat” sau „12 publicate”, dupa tabul deschis. La fel si cand nu e nimic acolo.
Butonul Jarvis din bara taskbotului deschidea o fila noua, ceea ce te scotea din aplicatia instalata. Acum panoul se deschide peste taskbot, in aceeasi fereastra, si se inchide cu X sau cu tasta Esc. Se incarca abia la prima apasare, ca sa nu incetineasca intrarea in taskbot.
Pana acum nu se vedea nicaieri cat consuma agentul, se afla doar cand se golea contul. Acum exista un tab Credite in taskbot care arata suma in dolari, cu numarul de tokeni scris mic langa, pe azi, pe sapte zile, pe treizeci sau pe tot, cu grafic pe zile, defalcare pe modele si pe ce anume se duc banii. Mai jos e lista cu fiecare artist in parte, ordonata descrescator. Suma apare si in previzualizarea din lista de conversatii, si in capul conversatiei cu artistul, si exista si o pagina in administrare. Costul nu e estimat, ci calculat exact din ce raporteaza serviciul la fiecare raspuns. Numaratoarea porneste de la 31 august, consumul de dinainte nu era salvat nicaieri.
Masurarea exacta pornise cu doua ore inainte, asa ca in lista aparea consum doar la artistii care scrisesera intre timp. Consumul mai vechi nu era salvat nicaieri, deci a fost reconstituit din mesajele reale ale agentului: pentru fiecare mesaj s-a socotit promptul cu regulile, istoricul trimis, lungimea raspunsului si daca promptul a fost citit din memorie sau rescris. Au iesit 4209 mesaje pe 167 de artisti, din 3 iulie pana acum. Sumele reconstituite sunt marcate cu tilda si explicate in subsol, ca sa nu fie confundate cu cele masurate exact.
Pe langa chatul cu artistii au fost reconstituite si celelalte lucruri care consuma: memoria artistilor, sfaturile din backstage, taskbotul echipei. Istoricul incepe acum de la 19 iunie, prima urma de activitate din tot sistemul, si insumeaza 6211 raspunsuri, adica in jur de 388 de dolari, cu un ritm de aproximativ 162 pe luna. Graficul pe zile arata acum toata perioada, nu doar ultimele treizeci de zile. Cea mai mare parte se duce pe chatul cu artistii, urmata de memoria artistilor.
Toate paginile cu PHP cadeau, doar cache-ul mai raspundea. Contul era curat (CPU 6%, 4 procese) — vinovat era nodul, cu load 582. Escaladat la Hostinger cu datele tehnice; serverul a fost repornit si totul a revenit.
Pana acum nimeni nu observa daca o sarcina automata aluneca pe alt ritm. Asa s-a intamplat cu barele de progres, care ajunsesera sa se rescrie o data pe zi in loc de la zece minute, si de aceea ramaneau vechi ore in sir desi datele erau corecte. Verificarea nu se uita doar daca sarcina e programata, ci si cat de des ruleaza, comparand cu ce scrie in cod. Ce lipseste se pune la loc, ce a alunecat se reprogrameaza. Ruleaza la zece minute si apare in pagina de monitorizare. Verificate 25 de sarcini, toate corecte.
Sarcina care porneste ceasul WordPress avea calea scrisa gresit si era respinsa la fiecare ora, iar alta chema un fisier dintr-un folder sters. Prima a fost rescrisa corect si ruleaza din ora in ora, a doua a fost stearsa. Au ramas trei sarcini, toate functionale. Trendingul nu a fost atins — el ruleaza din site.
elementor_active_kit e tinut pe 0 dinadins (kitul aplica tipografie globala si strica h1-ul din hero), dar Elementor verifica strict false/null si ajungea la get_post(0)->post_title, deci scotea avertisment la fiecare comanda. Mu-plugin nou tatarr-elementor-kit-warning.php filtreaza optiunea si intoarce false cand e goala; valoarea din baza de date ramane 0 si kitul ramane dezactivat.
Verifica la 10 minute toate mu-pluginurile cu php -l, urmareste logul de erori al serverului pentru fatale si erori de baza de date, si testeaza ca site-ul raspunde. Daca un mu-plugin are eroare de sintaxa, il inlocuieste singur cu ultimul backup bun (rename atomic) si noteaza ce a facut. Tacut — fara emailuri. Manual: /wp-admin/?tatarr_errwatch=1.
Copierea peste un fisier care se executa (223 KB) a dat „eroare critica" pe site: o cerere a citit fisierul scris pe jumatate. De acum fisierul se scrie ca temporar in acelasi director, se verifica cu php -l si abia apoi se muta cu rename (o singura operatie), plus invalidare opcache.
Sarcina Cron din hPanel la fiecare 10 minute (*/10 * * * *) ruleaza /usr/bin/php /home/u124828836/tatarr-guard.php, in afara WordPress-ului — asa merge si atunci cand un mu-plugin stricat opreste WordPress complet si cronul lui nu mai porneste. Are si semn de viata in ~/tatarr-guard-ultima-rulare.txt, rescris la fiecare rulare, ca sa se poata verifica oricand ca chiar merge (logul propriu-zis scrie doar cand gaseste probleme). Confirmat pe viu: a pornit singur la 09:00:01, 123 mu-pluginuri verificate, 0 stricate, site 200.
In wp-content/mu-plugins se adunasera 523 de backupuri .bak (40,4 MB, cel mai vechi din 18 iunie) — doar la tatarr-artist-chat.php erau 159. Au fost MUTATE, nu sterse, in ~/arhiva-mu-plugins/: 429 fisiere, 37,7 MB. In mu-plugins raman cele mai noi 3 backupuri pentru fiecare plugin, ca gardianul sa aiba din ce repara. Verificat inainte ca niciun backup sa nu se termine in .php — altfel WordPress l-ar incarca ca plugin si ar da functii duplicate.
Al doilea email identic in 24h e blocat, indiferent din ce cale vine (cron orar, reconciliere, rulare manuala).
Pe Hostinger nu exista cron de sistem si WP-Cron porneste doar pe trafic — de aceea cronurile se duplicau sau nu rulau deloc.
Verificare la 3 min; alerta la 504, timeout sau bucla de redirect.
Hostinger revoca privilegiile MySQL la incarcare mare si site-ul ramane pe GRANT USAGE: chatul se goleste, taskbotul nu mai incarca artistii. Gardianul verifica la 3 min, curata cache-urile care ar servi liste GOALE, opreste cronurile grele si anunta o singura data.
No-cache pe profil + Hall of Trend + auto-purge la trend.
Cron hPanel la 5 min (WP-Cron rula doar pe trafic).
sw.js Network-First cu timeout marit + retry.
Build log #TATARR · vizibil doar pentru admin · actualizat manual