Fas 2 · Innan praktik · 2.10
LMS-integration och webhook-system
Tvåvägs synk mellan Prakto och skolans LMS (Canvas eller Moodle) för studenter, kurser, betyg och händelser, plus signerade webhooks för externa system.
· Q1 2025
LMS-integrationen gör att skolans befintliga lärplattform och Prakto är samma datakälla. Studenter, kursregistreringar och praktikbetyg synkas i båda riktningarna, och ett webhook-system gör att andra system (HR, ekonomi, CRM) kan reagera på samma händelser i realtid.
Plattformar och scope
Integrationen är byggd kring de två LMS som dominerar svensk yrkeshögskola och universitet, med tydligt definierade dataobjekt.
| Objekt | Riktning | Frekvens |
|---|---|---|
| Studenter | LMS till Prakto | Schemalagt + on demand |
| Kursregistreringar | LMS till Prakto | Schemalagt |
| Programstruktur | LMS till Prakto | Schemalagt |
| Praktikbetyg | Prakto till LMS | Vid godkännande |
| LIA-avklarat | Prakto till LMS | Vid avslut |
Stödda plattformar är Canvas och Moodle. Anslutningen sker via OAuth2 eller API-token och konfigureras per skola.
Fältmappning
Varje skola kan mappa sina egna LMS-fält mot Praktos fält. Det betyder att standardobjekt fungerar direkt, men att skolan kan beskriva sina egna anpassningar.
| Prakto-fält | LMS-fält (exempel Canvas) | Riktning |
|---|---|---|
| Student.email | sis_user_id | LMS → Prakto |
| Student.programId | enrollment.course_id | LMS → Prakto |
| Placement.grade | submission.grade | Prakto → LMS |
| Placement.completedAt | submission.submitted_at | Prakto → Prakto |
Mappningarna lagras strukturerat och kan justeras utan att integrationen behöver byggas om.
Synkjobb och historik
Varje synk är ett spårbart jobb med startid, sluttid, status och resultat. Jobb som misslyckas kan köras om, och varje jobb har en lista av poster som lyckades respektive misslyckades.
- Schemalagda jobb. Körs nattligen för fullständig synk.
- Inkrementella jobb. Körs var 15:e minut för förändringar.
- Manuella jobb. Triggas från admin när en specifik student eller kurs behöver synkas direkt.
- Återköp. Misslyckade poster läggs i kö och försöks igen med exponentiell backoff.
Webhook-system
Utöver LMS-synken finns ett generellt webhook-system där skolan eller företaget kan prenumerera på domänhändelser från Prakto. Det är mekanismen för att koppla in egna system utan att Prakto behöver bygga en specifik integration.
| Händelse | Triggas vid | Vanligt mottagarsystem |
|---|---|---|
| placement.created | Placering registrerad | HR, ekonomi |
| placement.approved | Placering godkänd | Avtalssystem |
| placement.completed | Placering avslutad | Diplomssystem |
| evaluation.submitted | Utvärdering inskickad | Kvalitetsuppföljning |
| company.activated | Företag aktiverat | CRM |
| company.deactivated | Företag avaktiverat | CRM |
Säkerhet och leverans
Webhooks är byggda för att vara verifierbara och pålitliga, inte bara enkla att skicka.
- HMAC-SHA256-signering. Varje payload signeras med en hemlighet per prenumeration. Mottagaren kan verifiera att anropet kommer från Prakto.
- whsec_-prefix. Hemligheterna är prefixade och 48 hex tecken långa, vilket gör dem lätta att känna igen och rotera.
- Återförsök. Misslyckade leveranser försöks på nytt med exponentiell backoff i upp till 24 timmar.
- Leveranslogg. Varje försök loggas med statuskod, svarstid och respons.
- Pausning. Endpoints som svarar med fel i mer än 24 timmar pausas automatiskt och flaggas till administratören.
Kanaler
Utöver klassiska webhooks går samma händelseström även att leverera till Slack och Microsoft Teams. Det gör att en koordinator kan få en kanalavisering varje gång en placering godkänns utan att skolan behöver bygga något själv.
Resultatet är att Prakto inte är en isolerad ö, utan en del av skolans befintliga systemlandskap, både för administrativ data via LMS och för automatisering via webhooks.
Dela avsnitt