Ultima actualizare: 19.05.2026.
Acest document explică modul în care este moderat conținutul generat de utilizatori (UGC) în OverTrail RO. Documentul există pentru a satisface cerința Google Play de a avea o politică publicată privind moderarea conținutului UGC și pentru a oferi utilizatorilor o imagine clară a ceea ce pot să se aștepte. O copie este găzduită public la https://overtrail.ro/moderation-ro (alături de politica de confidențialitate).
Dacă ai o întrebare despre o decizie specifică de moderare sau dorești să raportezi conținut pe care fluxul din aplicație nu îl acoperă, trimite email la contact@overtrail.ro.
Patru zone de funcționalitate acceptă conținut de la utilizatori:
| Funcție | Câmpuri text liber | Durată de viață |
|---|---|---|
| POI-uri comunitare (campare, izvoare, puncte de belvedere, refugii, vulcanizări) | nume (≤ 80 caractere), descriere (≤ 800 caractere) | Permanent până când este raportat / șters de creator |
| Rapoarte de obstacole (copaci căzuți, alunecări, etc.) | descriere (≤ 280 caractere, opțional) | TTL 4 ore, apoi șters automat |
| Alerte SOS | descriere (≤ 280 caractere, opțional), contact_hint (≤ 80 caractere, opțional) | TTL 24 ore, apoi rezolvat automat |
| Porecle convoi | poreclă (≤ 8 caractere, vizibilă doar membrilor convoiului) | 12 ore după ultima activitate |
Restul (trasee GPS, regiuni de hartă descărcate, intrări în calculatorul de presiune anvelope, etc.) este stocat doar pe dispozitivul utilizatorului.
contact_hint de pe alertele SOS poate conține informațiile de contact ale raportorului însuși (ex: propriul număr de telefon) dar nu ale altcuiva.OverTrail RO folosește trei straturi complementare de moderare. Modelul de cont este anonim (nu este necesar email/parolă); utilizatorii abuzivi pot crea conturi noi — de aceea controalele server-side domină în loc de aplicarea la nivel de cont.
Fiecare nume/descriere de POI, descriere de obstacol și descriere/contact-hint de SOS trece printr-un filtru de listă de cuvinte server-side înainte de inserare. Filtrul folosește potrivire pe cuvânt întreg cu reducerea diacriticelor române (ă/â/î/ș/ț → a/a/i/s/t) pentru a prinde încercări comune de evitare. Conținutul care se potrivește cu lista de cuvinte este respins cu eroarea content_blocked_profanity; utilizatorul vede un mesaj localizat care îi cere să reformuleze.
Implementare: trigger-uri BEFORE INSERT pe pois, reports, sos_alerts în supabase/migrations/0010_ugc_moderation.sql.
Lista de cuvinte este intenționat îngustă (insulte severe + vulgarități comune, ~25 termeni în română și engleză). Preferăm să lăsăm conținut la limită să treacă; calea raportare-și-ascundere-automată de mai jos este a doua linie de apărare.
Fiecare suprafață UGC are o acțiune "🚩 Raportează conținutul" vizibilă tuturor utilizatorilor cu excepția creatorului:
Rapoartele sunt imutabile și vizibile doar raportorului (un utilizator nu poate vedea cine altcineva a mai raportat un rând). Una raportare per utilizator per rând este impusă la nivelul bazei de date.
Când numărul de raportori distincți pentru un rând atinge 3:
is_hidden devine true; POI-ul dispare de pe hartă pentru toată lumea, cu excepția creatorului. O protecție de 24 de ore împotriva vechimii previne griefing-ul POI-urilor abia adăugate.status devine RESOLVED; markerul cade din interogările bbox iar UPDATE-ul Realtime îl elimină de pe hărțile clienților deschiși.resolved_at este marcat cu timpul curent; același efect de eliminare.Trigger-urile rulează ca funcții SECURITY DEFINER și marchează resolved_by_user_id = NULL astfel încât jurnalul de audit distinge rezolvarea-de-sistem de rezolvarea-umană.
Implementare: poi_auto_hide_on_reports, report_auto_resolve_on_reports, sos_auto_resolve_on_reports.
Chiar și conținutul pe care nimeni nu îl raportează nu trăiește la nesfârșit:
Rândurile expirate / rezolvate sunt curățate de joburi pg_cron la fiecare 15 minute până la 1 oră, în funcție de tabel.
Pentru conținut care ocolește straturile automate (o singură postare foarte toxică care nu declanșează lista de cuvinte și nu este văzută de încă 3 utilizatori), operatorul (Constantin, contact@overtrail.ro) își rezervă dreptul de a:
auth.users (revocă sesiunea anonimă și blochează recrearea de pe același dispozitiv prin token-ul FCM).Aceste acțiuni sunt luate ca răspuns la rapoarte prin email la contact@overtrail.ro sau prin observare proactivă de către operator. Acțiunile operatorului sunt înregistrate dar nu sunt vizibile public.
Tu poți:
contact@overtrail.ro cu ID-ul tău anonim (vizibil în Setări → Despre) și îl vom șterge în 30 de zile, împreună cu orice rând care îl referențiază. Un flux de ștergere cont în aplicație este planificat pentru o versiune viitoare.Dacă găsești conținut abuziv care nu a fost ascuns automat de acțiunea de raportare din aplicație:
contact@overtrail.ro direct, cu un screenshot. Ne angajăm la primul răspuns în 48 de ore și la eliminarea conținutului care încalcă clar regulile în 7 zile.Această politică se poate modifica pe măsură ce aplicația crește. Modificările materiale vor fi anunțate în notele de versiune ale aplicației și reflectate în data "ultima actualizare" de la începutul acestui document. Versiunea curentă trăiește mereu la https://overtrail.ro/moderation-ro.