diff --git a/src/main/kotlin/edu/ntnu/idi/idatt/backend/bootstrap/tasks/DenSosialeMarkedsplassenTaskSeeds.kt b/src/main/kotlin/edu/ntnu/idi/idatt/backend/bootstrap/tasks/DenSosialeMarkedsplassenTaskSeeds.kt index 1feeb282..7c2febd7 100644 --- a/src/main/kotlin/edu/ntnu/idi/idatt/backend/bootstrap/tasks/DenSosialeMarkedsplassenTaskSeeds.kt +++ b/src/main/kotlin/edu/ntnu/idi/idatt/backend/bootstrap/tasks/DenSosialeMarkedsplassenTaskSeeds.kt @@ -2,11 +2,12 @@ package edu.ntnu.idi.idatt.backend.bootstrap.tasks import edu.ntnu.idi.idatt.backend.game.tasks.domain.TaskType +private const val SCENARIO_ITEM_ORDER = 1 + internal fun denSosialeMarkedsplassenTaskSeeds(): List = listOf( - binaryChoiceTask( + socialScenarioTask( difficultyLevel = 1, - taskType = TaskType.SOCIAL_SCENARIO, title = localized( "Den sosiale markedsplassen 1: Tenk før du deler", @@ -22,28 +23,44 @@ internal fun denSosialeMarkedsplassenTaskSeeds(): List = "Hva er smartest å gjøre før du deler en dramatisk melding videre?", "What is smartest to do before sharing a dramatic message?", ), - correctOption = - explainedOption( - 1, - "Sjekke hvor meldingen kommer fra og om andre kilder sier det samme.", - "Check where the message comes from and whether other sources say the same thing.", - true, - "Det hjelper deg å stoppe rykter før de sprer seg.", - "That helps you stop rumors before they spread.", - ), - incorrectOption = - explainedOption( - 2, - "Dele den raskt fordi mange andre allerede har gjort det.", - "Share it quickly because many others have already done it.", - false, - "At mange deler noe, betyr ikke at det er sant.", - "Just because many people share something does not make it true.", + options = + listOf( + explainedOption( + 1, + "Dele videre med én gang.", + "Share immediately.", + false, + "Det kan spre feilinformasjon.", + "That can spread misinformation.", + ), + explainedOption( + 2, + "Vente og se om flere deler.", + "Wait and see if more people share.", + false, + "Det er bedre å sjekke først.", + "It is better to check first.", + ), + explainedOption( + 3, + "Sjekke kilder eller spørre en voksen.", + "Check sources or ask an adult.", + true, + "Riktig! Da unngår du å spre rykter.", + "Correct! You avoid spreading rumors.", + ), + explainedOption( + 4, + "Ignorere meldingen.", + "Ignore the message.", + false, + "Det kan være lurt å sjekke først, særlig hvis meldingen kan påvirke andre.", + "It can be smart to check first, especially if the message may affect others.", + ), ), ), - binaryChoiceTask( + socialScenarioTask( difficultyLevel = 2, - taskType = TaskType.SOCIAL_SCENARIO, title = localized( "Den sosiale markedsplassen 2: Følelser kan lure", @@ -59,28 +76,44 @@ internal fun denSosialeMarkedsplassenTaskSeeds(): List = "Hvilken melding prøver mest å manipulere følelsene dine?", "Which message tries hardest to manipulate your feelings?", ), - correctOption = - explainedOption( - 1, - "Hvis du bryr deg om vennene dine, må du dele dette akkurat nå!", - "If you care about your friends, you must share this right now!", - true, - "Den bruker skyldfølelse og hastverk for å presse deg.", - "It uses guilt and urgency to pressure you.", - ), - incorrectOption = - explainedOption( - 2, - "Se denne informasjonen og tenk over om den virker troverdig.", - "Look at this information and think about whether it seems trustworthy.", - false, - "Den prøver ikke å presse deg følelsesmessig.", - "It does not try to pressure you emotionally.", + options = + listOf( + explainedOption( + 1, + "Hvis du bryr deg om vennene dine, må du dele dette akkurat nå!", + "If you care about your friends, you must share this right now!", + true, + "Den bruker skyldfølelse og hastverk for å presse deg.", + "It uses guilt and urgency to pressure you.", + ), + explainedOption( + 2, + "Her er en kilde. Les selv og tenk over om det virker troverdig.", + "Here is a source. Read it yourself and think about whether it seems trustworthy.", + false, + "Denne meldingen prøver ikke å presse deg følelsesmessig.", + "This message does not try to pressure you emotionally.", + ), + explainedOption( + 3, + "Jeg er usikker på om dette stemmer. Kan noen sjekke?", + "I am unsure whether this is true. Can someone check?", + false, + "Denne meldingen oppfordrer til å undersøke, ikke til panikk.", + "This message encourages checking, not panic.", + ), + explainedOption( + 4, + "Dette kan være viktig, men vi bør vente på mer informasjon.", + "This may be important, but we should wait for more information.", + false, + "Denne meldingen demper hastverk i stedet for å skape press.", + "This message reduces urgency instead of creating pressure.", + ), ), ), - binaryChoiceTask( + socialScenarioTask( difficultyLevel = 3, - taskType = TaskType.SOCIAL_SCENARIO, title = localized( "Den sosiale markedsplassen 3: Stå imot gruppepress", @@ -96,23 +129,91 @@ internal fun denSosialeMarkedsplassenTaskSeeds(): List = "Hva er den beste reaksjonen når alle andre sier at et rykte må være sant?", "What is the best response when everyone else says a rumor must be true?", ), - correctOption = - explainedOption( - 1, - "Be om kilde og vente med å dele til du vet mer.", - "Ask for a source and wait to share until you know more.", - true, - "Du trenger ikke følge gruppa når informasjonen er usikker.", - "You do not have to follow the group when the information is uncertain.", - ), - incorrectOption = - explainedOption( - 2, - "Stole på ryktet fordi så mange mener det samme.", - "Trust the rumor because so many people agree.", - false, - "Mange like meninger er ikke det samme som bevis.", - "Many matching opinions are not the same as evidence.", + options = + listOf( + explainedOption( + 1, + "Be om kilde og vente med å dele til du vet mer.", + "Ask for a source and wait to share until you know more.", + true, + "Du trenger ikke følge gruppa når informasjonen er usikker.", + "You do not have to follow the group when the information is uncertain.", + ), + explainedOption( + 2, + "Stole på ryktet fordi så mange mener det samme.", + "Trust the rumor because so many people agree.", + false, + "Mange like meninger er ikke det samme som bevis.", + "Many matching opinions are not the same as evidence.", + ), + explainedOption( + 3, + "Dele ryktet, men skrive at du ikke vet om det stemmer.", + "Share the rumor, but write that you do not know if it is true.", + false, + "Da sprer du fortsatt usikker informasjon videre.", + "Then you are still spreading uncertain information.", + ), + explainedOption( + 4, + "Trykke liker, men ikke si noe.", + "Like the post, but say nothing.", + false, + "Å like kan også bidra til at ryktet spres mer.", + "Liking can also help the rumor spread further.", + ), ), ), ) + +private fun socialScenarioTask( + difficultyLevel: Int, + title: LocalizedText, + introText: LocalizedOptionalText?, + promptText: LocalizedText, + options: List, +): SeedTask = + SeedTask( + difficultyLevel = difficultyLevel, + taskType = TaskType.SOCIAL_SCENARIO, + title = title, + introText = introText, + items = + listOf( + SeedItem( + itemOrder = SCENARIO_ITEM_ORDER, + promptText = promptText, + metadataJson = + """ + { + "role": "socialScenarioChoice", + "actions": [ + { + "order": 1, + "label": { + "nb": "Del", + "en": "Share" + } + }, + { + "order": 2, + "label": { + "nb": "Kommenter", + "en": "Comment" + } + }, + { + "order": 3, + "label": { + "nb": "Sjekk kilder", + "en": "Check sources" + } + } + ] + } + """.trimIndent(), + options = options, + ), + ), + )