Odznaky (badges)
Jak se odznaky získávají, z jakých dat se počítají a jakými postupy chráníme jejich integritu proti manipulaci.
Přehled
Odznaky oceňují reálnou aktivitu, výkonnost a vliv uživatelů v aplikaci. Každý odznak má jednoznačnou podmínku, měřitelný důkaz (evidence) uložený v databázi a pravidla pro revokaci. Žádný odznak se neuděluje manuálně bez záznamu v audit logu.
Odznaky se dělí do pěti kategorií: Výkonnost, Obsah, Komunita, Konzistence a Speciální. Každý odznak spadá do jedné kategorie a do jednoho tieru (bronze → platinum).
Cílem systému je nemotivovat k manipulaci — proto každá výkonnostní badge vyžaduje minimální track record, evidenci z pečetěných snapshotů a (pro gold+) ověřený broker import.
Tiery odznaků
Tier určuje náročnost získání a exkluzivitu odznaku. Vyšší tier = vyšší laťka i vyšší požadavek na ověření.
expiresAt nebo unikátní lifetime gate.Výkonnost portfolia
Výkonnostní odznaky počítají z pečetěných denních snapshotů (PortfolioSnapshot.sealed = true). Historie starší než Portfolio.trackingStartedAt se do výpočtu nezapočítává — zpětně doplněný import neumožní získat výkonnostní odznak.
Formule
TWR (Time-Weighted Return) neutralizuje vklady a výběry, takže nelze "nafouknout" výkonnost načasováním cash flow.
Obsah a analýzy
Obsahové odznaky počítají publikované příspěvky a analýzy s vnitřními metrikami kvality (Wilson score, feedScore). Smazané příspěvky se odečítají — badge 10 analýz vyžaduje 10 stále existujících analýz.
Komunita a vliv
Komunitní odznaky měří reálný vliv uživatele: počet followerů, kvalitu komentářů a mentorování. Každý odznak odolává botnetům a "follow for follow" taktikám.
Konzistence a streaky
Speciální a časové odznaky
Curator-awarded nebo event-bound odznaky. Tyto se neudělují automaticky — admin je přiděluje přes admin panel s auditním záznamem.
Ochrana proti manipulaci
Systém používá vrstvenou obranu — žádné opatření samo o sobě neodvrátí všechny útoky, ale kombinace činí manipulaci nákladnou a detekovatelnou.
1. Immutable tracking start
Portfolio.trackingStartedAt se nastaví při prvním snapshotu a už nejde upravit. Historie před tímto datem (rekonstruovaná z importu) se do výkonnostních výpočtů nezapočítává.
2. Sealed snapshoty
Denní PortfolioSnapshot se 24 h po vzniku označí sealed=true. ORM guard v prisma middlewareodmítá update na sealed řádku. Editace historické hodnoty portfolia je tak technicky nemožná.
3. Account-level dedup
Výkonnostní odznak je vázaný na userId, ne portfolioId. Při více portfoliích se počítá medián (ne maximum) — cherry-picking nejvýkonnějšího portfolia nefunguje.
4. Cooldown po revoku
Pokud se odznak revokuje (smazané zdrojové portfolio, failed recompute, admin rozhodnutí), účet má 90denní cooldownpro opětovné získání stejného odznaku. Cykly "delete → recreate → earn" jsou nevýhodné.
5. Ex-ante lock evidence
Badge typu Price Target Hit uzamyká cenový target v okamžiku publikace. API PATCH /api/community/content/[id]odmítá přepsat priceTargets po zveřejnění. Evidence obsahuje priceAtPublish — retroaktivní snížení targetu pro snadnější trefu nelze.
6. Provenance gate pro gold+
Performance odznaky tier gold a platinum vyžadují Portfolio.importProvenance se zdrojem ze známého brokera a hashem původního importního souboru. Manuálně zadané portfolio získá max. silver s viditelným chipem "unverified".
7. Percentile thresholds
Top N % odznaky používají percentil vůči všem kvalifikovaným účtům, ne absolutní hodnotu. Býčí trh nezpůsobí, že 50 % uživatelů získá gold odznak.
8. Shadow recompute
Nightly cron verify-badges přepočítá evidence z raw dat (transakce + OHLC + StockCache). Pokud computed_value ≠ stored_evidence nad threshold, badge se flaguje a automaticky revokuje. Rozdíly >5 % spouštějí alert adminovi.
9. Bot a botnet heuristika
Followers se kvalifikují jen pokud splní: verified email + účet ≥30 dní + alespoň 1 aktivita. IP-based clustering (víc než 5 účtů ze stejné /24) flaguje podezřelou síť pro manuální review. Bulk follows jsou rate-limited (max 50/den).
10. Audit log
Každé udělení, revokace a shadow-recompute se zapisuje do BadgeAuditLog se všemi vstupními daty. Spory lze později dohledat a přepočítat.
→
trackingStartedAt = 2026-04-01. Badge Top 10 % 1Y vyžaduje ≥365 dní trackingu → nesplněno. BadgeAuditLog zaznamenaná → anomálie detekována, manuální review. PATCH priceTargets po publish.Revokace odznaků
Odznaky nejsou udělovány napořád. Mohou být revokovány za jasně definovaných podmínek:
- Smazání zdrojového portfolia / obsahu — badge přejde do stavu
ORPHANEDa po 24 h se revokuje. - Failed shadow recompute — rozdíl mezi uloženým evidence a aktuálním přepočtem >5 % →
REVOKED. - Porušení pravidel komunity — ban nebo violation vede k revokaci community badges.
- Vypršení platnosti —
UserBadge.expiresAtpro časově omezené odznaky (Autor týdne = 7 dní). - Manuální admin rozhodnutí — s povinným důvodem v
revokedReasona auditním záznamem.
Revokovaný odznak zůstává v DB pro transparentnost (status = REVOKED), ale nezobrazuje se v UI a neovlivňuje avatar ring.
Omezení a transparentnost
- Odznaky nejsou investiční doporučení ani doklad kvality. Vysoké TWR v minulosti negarantuje budoucí výkonnost.
- Manuálně zadaná portfolia lze dopočítávat zpětně jen omezeně — proto jsou výkonnostní odznaky gold+ vázané na broker import.
- Každý odznak má v profilu kliknutelnou evidenci s metodikou výpočtu a datem udělení — uživatelé i čtenáři si mohou ověřit korektnost.
- Seznam všech odznaků, jejich pravidel a aktuálně udělených počtů je veřejný (endpoint
/api/badges/public-stats).
