@campus-labs/prisma-client 0.6.0 → 0.7.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@campus-labs/prisma-client",
3
- "version": "0.6.0",
3
+ "version": "0.7.0",
4
4
  "description": "",
5
5
  "license": "ISC",
6
6
  "author": "",
@@ -24,7 +24,7 @@
24
24
  "postinstall": "npx prisma@6.9.0 generate"
25
25
  },
26
26
  "prisma": {
27
- "seed": "ts-node prisma/seed2.ts"
27
+ "seed": "ts-node prisma/seed.ts"
28
28
  },
29
29
  "devDependencies": {
30
30
  "@types/node": "^24.0.1",
@@ -148,6 +148,8 @@ model initiatives {
148
148
  user_request_initiative user_request_initiative[]
149
149
  user_initiative user_initiative[]
150
150
  user_saved_initiatives user_saved_initiatives[]
151
+ user_initiative_openings user_initiative_openings[]
152
+
151
153
 
152
154
  @@index([start_date, end_date], map: "idx_initiatives_active")
153
155
  @@index([area_id], map: "idx_initiatives_area_active")
@@ -336,6 +338,7 @@ model users {
336
338
  role_platform_id Int @default(2)
337
339
  is_notifications_active Boolean @default(false)
338
340
  is_email_active Boolean @default(true)
341
+ is_global_ranking_active Boolean @default(false)
339
342
  created_at DateTime @default(now()) @db.Timestamp(6)
340
343
  updated_at DateTime @default(now()) @db.Timestamp(6)
341
344
  deleted_at DateTime? @db.Timestamp(6)
@@ -343,6 +346,9 @@ model users {
343
346
  points Int @default(0)
344
347
  ua_iupi String @unique @db.VarChar(50)
345
348
  last_notification_check DateTime @default(now()) @db.Timestamp(6)
349
+ language String @default("pt") @db.VarChar(10)
350
+ course String? @db.VarChar(100)
351
+ department String? @db.VarChar(100)
346
352
  badges_instances badges_instances[]
347
353
  evidences evidences[]
348
354
  initiative_invitations_initiative_invitations_invitee_idTousers initiative_invitations[] @relation("initiative_invitations_invitee_idTousers")
@@ -358,6 +364,7 @@ model users {
358
364
  sent_connection_requests user_to_user[] @relation("UserConnectionRequester")
359
365
  received_connection_requests user_to_user[] @relation("UserConnectionRequested")
360
366
  user_saved_initiatives user_saved_initiatives[]
367
+ user_initiative_openings user_initiative_openings[]
361
368
 
362
369
  @@index([role_platform_id], map: "idx_users_role")
363
370
  @@index([points(sort: Desc)], map: "idx_users_points")
@@ -382,17 +389,17 @@ model user_to_user {
382
389
  }
383
390
 
384
391
  model user_initiative {
385
- user_id String @default("1") @db.VarChar(50)
386
- initiative_id Int
387
- role_initiative_id Int @default(3)
388
- is_creator Boolean @default(false)
389
- created_at DateTime @default(now()) @db.Timestamp(6)
390
- updated_at DateTime @default(now()) @db.Timestamp(6)
391
- deleted_at DateTime? @db.Timestamp(6)
392
- initiatives initiatives @relation(fields: [initiative_id], references: [id], onDelete: Cascade, onUpdate: Cascade)
393
- roles_initiatives roles_initiatives @relation(fields: [role_initiative_id], references: [id], onDelete: Restrict, onUpdate: Cascade)
394
- users users @relation(fields: [user_id], references: [id], onDelete: Cascade, onUpdate: Cascade)
395
-
392
+ user_id String @default("1") @db.VarChar(50)
393
+ initiative_id Int
394
+ role_initiative_id Int @default(3)
395
+ is_creator Boolean @default(false)
396
+ is_initiative_ranking_active Boolean @default(false)
397
+ created_at DateTime @default(now()) @db.Timestamp(6)
398
+ updated_at DateTime @default(now()) @db.Timestamp(6)
399
+ deleted_at DateTime? @db.Timestamp(6)
400
+ initiatives initiatives @relation(fields: [initiative_id], references: [id], onDelete: Cascade, onUpdate: Cascade)
401
+ roles_initiatives roles_initiatives @relation(fields: [role_initiative_id], references: [id], onDelete: Restrict, onUpdate: Cascade)
402
+ users users @relation(fields: [user_id], references: [id], onDelete: Cascade, onUpdate: Cascade)
396
403
  @@id([user_id, initiative_id])
397
404
 
398
405
  @@index([user_id, role_initiative_id], map: "idx_user_initiative_user_role")
@@ -470,6 +477,7 @@ model notifications {
470
477
  origin String @default("Ser+") @db.VarChar(50)
471
478
  sent_at DateTime @default(now()) @db.Timestamp(6)
472
479
  url String? @db.VarChar(500)
480
+ img Json?
473
481
 
474
482
  sender users? @relation("NotificationSender", fields: [sender_id], references: [id], onDelete: SetNull)
475
483
  receiver users @relation("NotificationReceiver", fields: [receiver_id], references: [id], onDelete: Cascade)
@@ -490,3 +498,17 @@ model typologies {
490
498
  deleted_at DateTime? @db.Timestamp(6)
491
499
  initiatives initiatives[]
492
500
  }
501
+
502
+ model user_initiative_openings {
503
+ user_id String @db.VarChar(50)
504
+ initiative_id Int
505
+ created_at DateTime @default(now()) @db.Timestamp(6)
506
+ updated_at DateTime @default(now()) @db.Timestamp(6)
507
+ deleted_at DateTime? @db.Timestamp(6)
508
+ initiatives initiatives @relation(fields: [initiative_id], references: [id], onDelete: Cascade, onUpdate: Cascade)
509
+ users users @relation(fields: [user_id], references: [id], onDelete: Cascade, onUpdate: Cascade)
510
+
511
+ @@id([user_id, initiative_id])
512
+
513
+ @@index([user_id, created_at(sort: Desc)], map: "idx_user_initiative_openings")
514
+ }
package/prisma/seed2.ts CHANGED
@@ -559,27 +559,27 @@ async function main() {
559
559
  }),
560
560
  prisma.initiatives.create({
561
561
  data: {
562
- title: 'Pré-Piloto',
563
- description: 'Nesta iniciativa vais participar no teste do pré-piloto da aplicação Ser+. \
564
- O Ser+ é a marca agregadora do conjunto de iniciativas de reconhecido mérito em que os estudantes se envolvem, e contribuem para o seu desenvolvimento integral. Pretende-se que o Ser+ seja uma ambição incutida aos estudantes da Universidade de Aveiro desde o momento de acolhimento, acompanhando-os ao longo de todo o seu percurso académico. \
565
- O Ser+ integra diferentes vertentes e iniciativas promovidas por diversos promotores, desde que devidamente reconhecidas. Assenta ainda em princípios de gamificação, que incentivam a participação ativa dos estudantes em múltiplas dimensões da vida académica.',
562
+ title: 'O Caso da Aplicação Ser+',
563
+ description: 'Nesta iniciativa vais participar no teste do pré-piloto da Aplicação Ser+ Digital.\n\
564
+ O Ser+ é a marca agregadora do conjunto de iniciativas de reconhecido mérito em que os estudantes se envolvem, e contribuem para o seu desenvolvimento integral. Pretende-se que o Ser+ seja uma ambição incutida aos estudantes da Universidade de Aveiro desde o momento de acolhimento, acompanhando-os ao longo de todo o seu percurso académico.\n\
565
+ A Aplicação Ser+ Digital promove diferentes vertentes e iniciativas orientadas por diversos promotores, desde que devidamente reconhecidas. Assenta ainda em princípios de gamificação, que incentivam a participação ativa dos estudantes em múltiplas dimensões da vida académica. Através da dinâmica dos badges o utilizador pode ganhar pontos e usufruir de oportunidades únicas.',
566
566
  img: [
567
567
  {
568
- url: "",
569
- alt: ""
568
+ url: "https://576wibblum.ufs.sh/f/l7y45I6Co8dLmnzrES8JDov4Fbjd1Q9eyENf3ASwpzuW6CHT",
569
+ alt: "O Caso da Aplicação Ser+"
570
570
  },
571
571
  {
572
- url: "",
573
- alt: ""
572
+ url: "https://576wibblum.ufs.sh/f/l7y45I6Co8dLTcTZW4sYq8yQgrMwbSZimeCR6nW9UEpuJdhN",
573
+ alt: "O Caso da Aplicação Ser+"
574
574
  },
575
575
  {
576
- url: "",
577
- alt: ""
576
+ url: "https://576wibblum.ufs.sh/f/l7y45I6Co8dL82THh7yZKvOTjcD4SoXFYxUV8zhRi6nNLJuE",
577
+ alt: "O Caso da Aplicação Ser+"
578
578
  }
579
579
  ],
580
580
  inscription_deadline: new Date('2026-01-30T12:00:00'),
581
- start_date: new Date('2026-01-30T10:30:00'),
582
- end_date: new Date('2026-01-30T12:30:00'),
581
+ start_date: new Date('2026-01-30T10:00:00'),
582
+ end_date: new Date('2026-01-30T13:30:00'),
583
583
  is_private: false,
584
584
  is_draft: false,
585
585
  program_id: programs[0].id,
@@ -810,12 +810,19 @@ async function main() {
810
810
  prisma.moments.create({
811
811
  data: {
812
812
  title: 'Identidade e Primeiras Pistas',
813
- description: 'Uma carta misteriosa apareceu na secretária do Detetive Bigodes. Ele pegou nela, abriu-a e encontrou um convite intrigante: "Caro Detetive, O Ser + está em fase de testes na Universidade de Aveiro. Precisamos da tua ajuda e da tua equipa de investigadores. Cada pista, cada decisão e cada detalhe conta. Estás pronto para descobrir esta aplicação?" Bigodes sorriu. Algo dizia-lhe que este caso não seria como os outros… e que ele ia precisar de estratégia, paciência e atenção. As primeiras pistas estão nas próprias palavras escritas em cada momento. Cada ideia, cada curiosidade é uma peça do mistério.',
813
+ description: 'Uma mensagem misteriosa apareceu no telemóvel do Detetive Bigodes.\n\
814
+ “Caro Detetive,\n\
815
+ O Ser + está em fase de testes na Universidade de Aveiro.\n\
816
+ Precisamos da tua ajuda e da tua equipa de investigadores.\n\
817
+ Cada pista, cada decisão e cada detalhe conta.\n\
818
+ Estás pronto para descobrir esta aplicação?”\n\
819
+ Bigodes sorriu. Algo dizia-lhe que este caso não seria como os outros… e que ele ia precisar de estratégia, paciência e atenção.\n\
820
+ As primeiras pistas estão nas próprias palavras escritas em cada momento. Cada ideia, cada curiosidade é uma peça do mistério. ',
814
821
  short_description: 'Apresentação dos investigadores e primeiras pistas do caso.',
815
- img: { url: "", alt: "Identidade e Primeiras Pistas" },
822
+ img: { url: "https://576wibblum.ufs.sh/f/l7y45I6Co8dLKcNtVzEOPeckgJ2flhR5AqWw1yTD8LGo3QI9", alt: "Identidade e Primeiras Pistas" },
816
823
  order: 1,
817
- opened_at: new Date('2026-01-30T10:30:00'),
818
- closed_at: new Date('2026-01-30T11:00:00'),
824
+ opened_at: new Date('2026-01-30T13:00:00'),
825
+ closed_at: new Date('2026-01-30T13:30:00'),
819
826
  initiative_id: initiatives[7].id
820
827
  }
821
828
  }),
@@ -824,10 +831,10 @@ async function main() {
824
831
  title: 'A Investigação em Campo: Descoberta e Colaboração',
825
832
  description: 'A investigação entra agora no terreno. No início, foi apresentada a primeira visão do Ser+, uma definição base, um ponto de partida comum para todos os investigadores. Essa apresentação permitiu alinhar conceitos e criar uma base sólida para a investigação. Agora, é tempo de ir mais fundo.',
826
833
  short_description: 'Descoberta colaborativa e aprofundamento do conceito Ser+.',
827
- img: { url: "", alt: "A Investigação em Campo" },
834
+ img: { url: "https://576wibblum.ufs.sh/f/l7y45I6Co8dLnDuSAkIjB4deJoCcSX5rNl8KGp7IVzmb6i3F", alt: "A Investigação em Campo" },
828
835
  order: 2,
829
- opened_at: new Date('2026-01-30T11:00:00'),
830
- closed_at: new Date('2026-01-30T11:30:00'),
836
+ opened_at: new Date('2026-01-30T13:00:00'),
837
+ closed_at: new Date('2026-01-30T13:30:00'),
831
838
  initiative_id: initiatives[7].id
832
839
  }
833
840
  }),
@@ -836,10 +843,10 @@ async function main() {
836
843
  title: 'A Revelação: Reconhecimento e Fecho',
837
844
  description: 'O caso aproxima-se do fim. As pistas foram recolhidas, os enigmas resolvidos, e agora é hora de refletir e reconhecer os méritos. Bigodes observa atentamente quem se destacou: quem foi mais astuto, mais colaborativo e quem ajudou os colegas a "ser mais".',
838
845
  short_description: 'Reflexão final e reconhecimento dos méritos dos investigadores.',
839
- img: { url: "", alt: "A Revelação" },
846
+ img: { url: "https://576wibblum.ufs.sh/f/l7y45I6Co8dLGNBJL2Zp6VYc9NUJPRgt8bjnDx4FZzTaE5Cd", alt: "A Revelação" },
840
847
  order: 3,
841
- opened_at: new Date('2026-01-30T11:30:00'),
842
- closed_at: new Date('2026-01-30T12:30:00'),
848
+ opened_at: new Date('2026-01-30T13:00:00'),
849
+ closed_at: new Date('2026-01-30T13:30:00'),
843
850
  initiative_id: initiatives[7].id
844
851
  }
845
852
  }),
@@ -1896,9 +1903,9 @@ async function main() {
1896
1903
  // Badges gerais (sem momento associado)
1897
1904
  prisma.badges.create({
1898
1905
  data: {
1899
- title: 'O caso está oficialmente aberto',
1906
+ title: 'Caso oficialmente aberto',
1900
1907
  condition: 'Se estás a ler os arquivos iniciais desta investigação é porque entraste na aplicação com sucesso! Tens muitos outros badges para receber, basta abrires e verificares o que eles estão a pedir.',
1901
- img: { url: "", alt: "Caso aberto" },
1908
+ img: { url: "https://576wibblum.ufs.sh/f/l7y45I6Co8dLeEW0wYxaMNnUtBcsTrjJqdV7KAhOfQvGmzI6", alt: "Caso aberto" },
1902
1909
  points: 20,
1903
1910
  initiative_id: initiatives[7].id,
1904
1911
  type_id: badgeTypes[1].id,
@@ -1909,7 +1916,7 @@ async function main() {
1909
1916
  data: {
1910
1917
  title: 'Estratégia e paciência',
1911
1918
  condition: 'O detetive bigodes tem um Cubo Mágico na mão, ele diz que o ajuda a pensar enquanto está a resolver os seus casos. Num momento de pausa sem interromper nenhuma atividade encontra um cubo mágico e em dois minutos resolver um dos lados do cubo, se fores o primeiro este badge será apenas teu!',
1912
- img: { url: "", alt: "Cubo mágico" },
1919
+ img: { url: "https://576wibblum.ufs.sh/f/l7y45I6Co8dLKNQMASEOPeckgJ2flhR5AqWw1yTD8LGo3QI9", alt: "Cubo mágico" },
1913
1920
  points: 15,
1914
1921
  initiative_id: initiatives[7].id,
1915
1922
  type_id: badgeTypes[1].id,
@@ -1920,7 +1927,7 @@ async function main() {
1920
1927
  data: {
1921
1928
  title: 'Arquivos',
1922
1929
  condition: 'Existe uma informação essencial para esta investigação e precisamos de um investigador informado sobre quantos departamentos existem no Campus da Universidade de Aveiro? Insere esta informação dentro do contexto em que te encontras sem interromper a dinâmica. Sê o primeiro porque este desafio é só para um investigador!',
1923
- img: { url: "", alt: "Arquivos" },
1930
+ img: { url: "https://576wibblum.ufs.sh/f/l7y45I6Co8dLVTiMBrbQ7DFMBvhIWUKNJjcu2an0Z6edqwVO", alt: "Arquivos" },
1924
1931
  points: 15,
1925
1932
  initiative_id: initiatives[7].id,
1926
1933
  type_id: badgeTypes[1].id,
@@ -1931,7 +1938,7 @@ async function main() {
1931
1938
  data: {
1932
1939
  title: 'Hercule Poirot',
1933
1940
  condition: 'Entre vários investigadores, houve um ou mais que se destacou por ser particularmente astuto e por conseguir cumprir todos os desafios deixados pelo Detetive Bigodes. Parabéns! O(s) participante(s) com melhor pontuação ganha(m) este badge.',
1934
- img: { url: "", alt: "Hercule Poirot" },
1941
+ img: { url: "https://576wibblum.ufs.sh/f/l7y45I6Co8dLxhYgNiMATR9yGE3iIjrDsO7cStX01PfLx28C", alt: "Hercule Poirot" },
1935
1942
  points: 15,
1936
1943
  initiative_id: initiatives[7].id,
1937
1944
  type_id: badgeTypes[1].id,
@@ -1942,7 +1949,7 @@ async function main() {
1942
1949
  data: {
1943
1950
  title: 'Algo aqui não está bem',
1944
1951
  condition: 'Um bom investigador tem sempre papel e caneta à mão, pronto para registar todos os detalhes e pontos importantes observados durante a sua análise técnica. Escreve numa folha os erros encontrados e as melhorias que farias à aplicação e entrega-a a um voluntário no final da sessão.',
1945
- img: { url: "", alt: "Análise técnica" },
1952
+ img: { url: "https://576wibblum.ufs.sh/f/l7y45I6Co8dLZ6DqmkZXAUD369evJhHoyusWVqzr78a2dXiE", alt: "Análise técnica" },
1946
1953
  points: 15,
1947
1954
  initiative_id: initiatives[7].id,
1948
1955
  type_id: badgeTypes[1].id,
@@ -1955,7 +1962,7 @@ async function main() {
1955
1962
  data: {
1956
1963
  title: 'Todas as pessoas tem uma história',
1957
1964
  condition: 'Está na altura de te dares a conhecer ao Detetive Bigodes e de descobrires quem são os outros investigadores. Tens 30 segundos para te apresentares e falares um pouco sobre ti.',
1958
- img: { url: "", alt: "História pessoal" },
1965
+ img: { url: "https://576wibblum.ufs.sh/f/l7y45I6Co8dLyoVFyboDVhYgwvmbnDOCxdfIcs6jqEGe0oRk", alt: "História pessoal" },
1959
1966
  points: 20,
1960
1967
  initiative_id: initiatives[7].id,
1961
1968
  moment_id: moments[17].id,
@@ -1967,7 +1974,7 @@ async function main() {
1967
1974
  data: {
1968
1975
  title: 'British detective in the room',
1969
1976
  condition: 'Um bom detetive sabe observar quem o rodeia. Pela forma como a costura do chapéu foi feita e pelo estilo da gabardine, um dos participantes claramente não é de cá, é um detetive do Reino Unido. Se leres esta nota a tempo, deves fazer um dos restantes badges do primeiro momento em inglês.',
1970
- img: { url: "", alt: "British detective" },
1977
+ img: { url: "https://576wibblum.ufs.sh/f/l7y45I6Co8dLqSO54iNuL4WyIt5BVKN6dRwAflsQZTgH3Upb", alt: "British detective" },
1971
1978
  points: 15,
1972
1979
  initiative_id: initiatives[7].id,
1973
1980
  moment_id: moments[17].id,
@@ -1979,7 +1986,7 @@ async function main() {
1979
1986
  data: {
1980
1987
  title: 'Qual é o teu álibi?',
1981
1988
  condition: 'Suspeitas podem surgir a cada palavra que digas, mas é melhor esclarecer já o teu álibi. Durante a tua apresentação, partilha uma curiosidade sobre a tua semana.',
1982
- img: { url: "", alt: "Álibi" },
1989
+ img: { url: "https://576wibblum.ufs.sh/f/l7y45I6Co8dLqU3Gsc6NuL4WyIt5BVKN6dRwAflsQZTgH3Up", alt: "Álibi" },
1983
1990
  points: 15,
1984
1991
  initiative_id: initiatives[7].id,
1985
1992
  moment_id: moments[17].id,
@@ -1991,7 +1998,7 @@ async function main() {
1991
1998
  data: {
1992
1999
  title: 'Provas',
1993
2000
  condition: 'O Detetive Bigodes quer saber tudo sobre os participantes desta iniciativa. Ainda durante a tua apresentação, diz-lhe em que iniciativas gostas de participar nos teus tempos livres.',
1994
- img: { url: "", alt: "Provas" },
2001
+ img: { url: "https://576wibblum.ufs.sh/f/l7y45I6Co8dLxLazNPMATR9yGE3iIjrDsO7cStX01PfLx28C", alt: "Provas" },
1995
2002
  points: 20,
1996
2003
  initiative_id: initiatives[7].id,
1997
2004
  moment_id: moments[17].id,
@@ -2005,7 +2012,7 @@ async function main() {
2005
2012
  data: {
2006
2013
  title: 'Encontrámos algo',
2007
2014
  condition: 'A primeira grande descoberta! Aqui começas a desvendar o que é o Ser+, através de uma explicação clara e direta. O primeiro investigador a explicar o que é Ser+ ganha este badge.',
2008
- img: { url: "", alt: "Encontrámos algo" },
2015
+ img: { url: "https://576wibblum.ufs.sh/f/l7y45I6Co8dLDTehb91XR9cH1dInMmbWUty0lKqjVFBLNfho", alt: "Encontrámos algo" },
2009
2016
  points: 20,
2010
2017
  initiative_id: initiatives[7].id,
2011
2018
  moment_id: moments[18].id,
@@ -2017,7 +2024,7 @@ async function main() {
2017
2024
  data: {
2018
2025
  title: 'Novas descobertas',
2019
2026
  condition: 'Um bom investigador nunca se fica pela primeira pista. Neste momento, aprofundas o conceito Ser+, acrescenta evidências relevantes, reflexões e pontos de melhoria que ajudam a completar e fortalecer a sua definição.',
2020
- img: { url: "", alt: "Novas descobertas" },
2027
+ img: { url: "https://576wibblum.ufs.sh/f/l7y45I6Co8dLX5XTWNldvJGAK7hIXNtyoTEqgQ04UCcSeiLs", alt: "Novas descobertas" },
2021
2028
  points: 15,
2022
2029
  initiative_id: initiatives[7].id,
2023
2030
  moment_id: moments[18].id,
@@ -2029,7 +2036,7 @@ async function main() {
2029
2036
  data: {
2030
2037
  title: 'Interrogatórios',
2031
2038
  condition: 'Agora que já sabes o que estamos a investigar, é tempo de cruzar dados com a experiência real. Partilha a tua experiência pessoal em atividades que tenhas participado da Universidade de Aveiro, e contribui com testemunhos que enriquecem a investigação.',
2032
- img: { url: "", alt: "Interrogatórios" },
2039
+ img: { url: "https://576wibblum.ufs.sh/f/l7y45I6Co8dLrbJ4iyFI4qe5wVBnWKNb0kxZMSAcpLmuOgRy", alt: "Interrogatórios" },
2033
2040
  points: 15,
2034
2041
  initiative_id: initiatives[7].id,
2035
2042
  moment_id: moments[18].id,
@@ -2041,7 +2048,7 @@ async function main() {
2041
2048
  data: {
2042
2049
  title: 'Retratos falados',
2043
2050
  condition: 'O Ser+ tem um símbolo enigmático, é hora de o revelar. A tua missão é descobrir, desenhar e registar o logótipo do Ser+, num quadro ou numa folha do kit, cria uma prova visual da investigação até ao final do momento.',
2044
- img: { url: "", alt: "Retratos falados" },
2051
+ img: { url: "https://576wibblum.ufs.sh/f/l7y45I6Co8dLqH3jzANuL4WyIt5BVKN6dRwAflsQZTgH3Upb", alt: "Retratos falados" },
2045
2052
  points: 15,
2046
2053
  initiative_id: initiatives[7].id,
2047
2054
  moment_id: moments[18].id,
@@ -2055,7 +2062,7 @@ async function main() {
2055
2062
  data: {
2056
2063
  title: 'Medalha de mérito',
2057
2064
  condition: 'Está na altura de reconhecermos que as pessoas que trabalham contigo, existem valores que podem ser destacados e nomeados. Oferecer soft skills aos investigadores que participarem contigo nesta iniciativa.',
2058
- img: { url: "", alt: "Medalha de mérito" },
2065
+ img: { url: "https://576wibblum.ufs.sh/f/l7y45I6Co8dLxJs1L1MATR9yGE3iIjrDsO7cStX01PfLx28C", alt: "Medalha de mérito" },
2059
2066
  points: 20,
2060
2067
  initiative_id: initiatives[7].id,
2061
2068
  moment_id: moments[19].id,
@@ -2067,7 +2074,7 @@ async function main() {
2067
2074
  data: {
2068
2075
  title: 'Faro Apurado',
2069
2076
  condition: 'Hoje estiveste muito bem e os restantes investigadores destacaram qualidades em ti. Se recebeste uma soft skill, procura-a a partir do perfil.',
2070
- img: { url: "", alt: "Faro Apurado" },
2077
+ img: { url: "https://576wibblum.ufs.sh/f/l7y45I6Co8dLyor5QarDVhYgwvmbnDOCxdfIcs6jqEGe0oRk", alt: "Faro Apurado" },
2071
2078
  points: 20,
2072
2079
  initiative_id: initiatives[7].id,
2073
2080
  moment_id: moments[19].id,
@@ -2079,7 +2086,7 @@ async function main() {
2079
2086
  data: {
2080
2087
  title: 'Pista escondida',
2081
2088
  condition: 'Uma dica anónima foi recebida que existe um badge que podes recolher se leres um QR code, mas para isso precisas de o encontrar e ele está muito bem escondido. Encontrar um QR code escondido com o fim da iniciativa.',
2082
- img: { url: "", alt: "Pista escondida" },
2089
+ img: { url: "https://576wibblum.ufs.sh/f/l7y45I6Co8dLuJFTEJS3rREOWqaKkSP8VuDyAF5Zczps1v2n", alt: "Pista escondida" },
2083
2090
  points: 15,
2084
2091
  initiative_id: initiatives[7].id,
2085
2092
  moment_id: moments[19].id,
@@ -2091,7 +2098,7 @@ async function main() {
2091
2098
  data: {
2092
2099
  title: 'Recolha',
2093
2100
  condition: 'O Detetive Bigodes quer dar continuidade à investigação fora do terreno, mas para isso precisa da tua ajuda. No final da missão, é necessário recolher todos os papéis com informações sobre erros, melhorias e observações relacionadas com a aplicação. Cada contributo é uma peça essencial para que a investigação possa continuar e evoluir.',
2094
- img: { url: "", alt: "Recolha" },
2101
+ img: { url: "https://576wibblum.ufs.sh/f/l7y45I6Co8dLg9tuksvWic2V6dUlJseFtB7bnokO0jPm4vG3", alt: "Recolha" },
2095
2102
  points: 15,
2096
2103
  initiative_id: initiatives[7].id,
2097
2104
  moment_id: moments[19].id,
@@ -2101,7 +2108,7 @@ async function main() {
2101
2108
  }),
2102
2109
  prisma.badges.create({
2103
2110
  data: {
2104
- title: 'Certificado',
2111
+ title: 'Participação no Pré-Piloto',
2105
2112
  condition: 'Completaste o Pré-Piloto do Ser+! Este certificado reconhece o teu empenho e participação ativa nesta fase crucial do projeto. Obrigado por fazeres parte desta jornada connosco.',
2106
2113
  img: {"id":"c0229a89-f1d9-4ee8-adf7-a3324b939fac","url":"https://minio.sermaisapp-qa.ua.pt/badges/76/c0229a89-f1d9-4ee8-adf7-a3324b939fac.pdf","size":459032,"mimeType":"application/pdf","uploadedAt":"2026-01-28T15:16:11.178Z","originalName":"certificadosermais.pdf","thumbnailUrl":"https://minio.sermaisapp-qa.ua.pt/badges/76/c0229a89-f1d9-4ee8-adf7-a3324b939fac_thumb.jpg"},
2107
2114
  points: 50,
@@ -2109,7 +2116,21 @@ async function main() {
2109
2116
  type_id: badgeTypes[0].id,
2110
2117
  is_draft: false
2111
2118
  }
2112
- })
2119
+ }),
2120
+
2121
+ //Moment 1 initiative 8
2122
+ prisma.badges.create({
2123
+ data: {
2124
+ title: 'Kit de investigação',
2125
+ condition: 'Antes de os investigadores entrarem em ação, existe um grupo discreto, atento e essencial para o sucesso da operação: os Voluntários. Neste momento, os voluntários preparam e entregam o Kit de Investigação aos participantes e ficam com um para eles.',
2126
+ img: { url: "https://576wibblum.ufs.sh/f/l7y45I6Co8dLuWIjOzS3rREOWqaKkSP8VuDyAF5Zczps1v2n", alt: "Kit de investigação" },
2127
+ points: 15,
2128
+ initiative_id: initiatives[7].id,
2129
+ moment_id: moments[17].id,
2130
+ type_id: badgeTypes[1].id,
2131
+ is_draft: false
2132
+ }
2133
+ }),
2113
2134
  ]);
2114
2135
 
2115
2136
  console.log(`✅ Created ${badges.length} badges`);
@@ -2732,6 +2753,13 @@ async function main() {
2732
2753
  }),
2733
2754
 
2734
2755
  // === PRÉ-PILOTO MOMENTO 1 BADGES ===
2756
+ //Badge 104: "Kit de investigação" - VOLUNTEER only
2757
+ prisma.roles_initiatives_badges.create({
2758
+ data: {
2759
+ roles_initiatives_id: VOLUNTEERrole.id,
2760
+ badges_id: badges[104].id
2761
+ }
2762
+ }),
2735
2763
  // Badge 91: "Todas as pessoas tem uma história" - PARTICIPANT + VOLUNTEER
2736
2764
  prisma.roles_initiatives_badges.create({
2737
2765
  data: {