RT-medaljer

Vi har et medaljesystem for RT. Du finner det på https://rt.samfundet.no/medalje.

Generell virkemåte

En cronjobb i /etc/cron.d/medalje på cassarossa kjører hvert n-te minutt skriptet /var/www/samfundet.no/rt/medalje/bin/check_medals.pl. Dette skriptet går gjennom alle (eller oppgitte) registrerte køer og deretter gjennom alle (eller oppgitte) tilknyttede registrerte brukere. Deretter gjennomgås alle medaljer som er aktivert for køen, og tilhørende perl-modul kjøres på alle RT-transaksjoner siden siste sjekkpunkt. Hver perl-modul har to funksjoner, get_points og goal_points, som sammen definerer om brukeren skal få medaljen. I så fall registreres tildelingen av medaljen i databasen. Dette oppdager itkbot, og med mindre brukeren har reservert seg blir tildelingen rapportert på #itk.

Sjekkpunkter

For å unngå at medaljeevalueringen blir for ressurskrevende benyttes et checkpoint-system. Første gang en brukes registreres evalueres alle medaljer for alle transaksjoner gjennomført av personen. Dette kan ta lang tid, ettersom enkelte medaljer kan medføre en fæl kompleksitet. Løsningen på dette er at systemet husker hvor langt den evaluerte historien sist, slik at etter en initiell historisk kjøring blir bare de nyeste transaksjonene evaluert.

Registrere ny bruker

For å motta medaljer må man registreres i systemet. Dette gjøres fra admingrensesnittet. Dersom du allerede har lang fartstid i ITK vil du nok i første omgang skru av IRC-varslinger, slik at ikke #itk spammes ned. Du kan så følge med i oversikten, hvor en oransje poengbar betyr at historien din evalueres. Når baren har blitt blå er skriptet ferdig, og du kan skru på IRC-varslinger igjen.

(Harde) retningslinjer for medaljer

RT-medaljesystemet er laget på en veldig spesifikk måte. Derfor må visse retningslinjer følges.

Lage ny medalje

Vi har foreløpig ingen støtte for lokale utviklingsinstanser av RT-medaljer, så man må fort hacke i prod. Det er da lurt å følge en strukturert fremgangsmåte, slik at det ikke blir tull. Dersom du skal benytte deg av eksisterende medaljer og bare endre på poenggrenser, gå rett til punkt (b).

(a) Først lager vi spørringen og wrapper den i en funksjon:

  1. Begynn i skallet med psql rt4 og set search_path to medalje;.
  2. Skriv en spørring som oppnår ønsket effekt, og som filtrerer på <bruker>, <kø> og <tid>. Baser deg veldig gjerne på en tidligere medaljespørring i lib/ITK/Medalje/Medaljer.pm.
  3. Skru av cron-jobben i /etc/cron.d/medalje på cassarossa før neste punkt.
  4. Skriv en funksjon i lib/ITK/Medalje/Medaljer.pm som tar inn <bruker>, <kø>, <tid> og eventuelt andre parametre og utfører spørringen.

(b) Deretter vil vi klargjøre det spesifikke medaljeobjektet:

  1. Kopier en tidligere medalje i lib/ITK/Medalje/Medaljer/ og tilpass til din medalje.
  2. Finn et ikon – last ned en fil, f.eks. png eller svg fra nett, og legg den i static/img/medals.

(c) Nå kan vi prodsette medaljen:

  1. Sjekk at cron-jobben i /etc/cron.d/medalje er av.
  2. Besøk admingrensesnittet og registrer medaljen din.
  3. Koble medaljen til bare køen rt-test.
  4. Kjør ./check_medals.pl --queue 13 i bin og sjekk at ting fungerer. Kø 13 er rt-test.
  5. Koble medaljen til køen itk.
  6. Kjør ./check_medals.pl --queue 4 i bin og sjekk at ting fungerer. Kø 4 er ITK. Sleng på --silentirc hvis du ikke vil skape IRC-varslinger for den initielle historiske kjøringen.
  7. Skru på cron-jobben i /etc/cron.d/medalje på cassarossa.

Ignorering

Hvis du ikke vil se itkbot sine medaljevarsler, ignorer "fikk en medalje:" fra itkbot.

Lenker: Start

Epost: itk@samfundet.no | Telefon: 992 15 925 | Sist endret: 2020-10-12 23:33 | Revisjon: 8 (historie, blame) | Totalt: 1886 kB | Rediger