-
Notifications
You must be signed in to change notification settings - Fork 0
Description
BACKEND
Web scraper in Python: l'obiettivo di questo scraper è estrarre i dati degli anni 2021/2022, 2022/2023, 2023/2024, 2024/2025.
I dati estratti dovranno essere scritti in formato SQL compatibile con la struttura del database corrente, ovvero https://github.com/UNICT-DMI/opis-manager-core/tree/dev/dumps
Il codice sarà sviluppato nella repository opis-manager-scraper in una cartella apposita per la nuova versione dello scraper in python (https://github.com/UNICT-DMI/opis-manager-scraper).
Questionari OPIS dall'anno 2012/2013 all'anno 2024/2025: https://www.unict.it/it/didattica/valutazione-didattica-opinione-studenti
Ecco alcune mappature (parziali) delle API OPIS per il db corrente
getDepartments json -> table dipartimento
- id autoincrement
- nome = name
- unict_id = code
- anno_accademico = anno selezionato
getCourses json -> table corso_di_studi
- id autoincrement
- unict_id = ??? (dal 2021 in poi non c'è apparentemente)
- anno_accademico = anno selezionato
- nome,classe = name (es. "Informatica L-31" -> nome: "Informatica", classe: "L-31")
-
- nota: negli anni precedenti probabilmente non era un'unica stringa nome+classe ma erano due campi separati
- id_dipartimento = dipartimento.id, selezionato un dipartimento, si ottiene l'id dell'anno_accademico selezionato
getActivities json -> table insegnamento
- id autoincrement
- codice_gomp = activityCode
- id_cds = corso_di_studi.id, verifica come effettuare questa corrispondenza in maniera univoca
- anno_accademico = anno selezionato
- nome = activityName
- docente = professorLastName + professorName
- canale = "no" se non ci sono altri canali (o poli), altrimenti se è il primo canale usa "1" o "2" per il secondo e così via.
-
- esempio: 2 per "PROGRAMMAZIONE I E LABORATORIO" anno 2021/2022
-
- Problema: ci sono due parti di programmazione 1, ("PROGRAMMAZIONE I" e "LABORATORIO"), lo stesso dovrebbe essere per RETI DI CALCOLATORI, alternativamente vanno considerati come due corsi separati
-
- Problema 2: i canali prima erano segnati con "A-L" o "M-Z", questo potrebbe causare problemi nel frontend per incoerenza di nome del canale, bisognerebbe pensare ad una soluzione di come interpretare questi dati e comprendere se il corso con un nome di canale diverso è sempre lo stesso
- ssd = INF/01
getQuestions json -> table schede_opis
- id autoincrement
- anno_accademico = anno selezionato
- id_insegnamento = insegnamento.id, verifica come effettuare questa corrispondenza in maniera univoca
- domande = array di 60 valori, ovvero 5 valori consecutivi per domanda (decisamente no, più no che si, più si che no, Decisamente si, Non so) -> 5x12=60. Questi dati si dovrebbero poter estrarre da clusterData -> questions o counter.
- totale_schede = il numero di schede compilate
- eta = si dovrebbe poter estrarre da "ageClass"
In schede_opis ci sono molti dati, forse non tutti sono "retro compatibili", ma un buon 80% dovrebbero corrispondere.
Purtroppo il formato dei dati è cambiato negli anni, nell'opis manager si è cercato di adattare la struttura a ciò che restituivano le vecchie interfacce web, purtroppo le API adesso hanno una struttura totalmente diversa.
FRONTEND
repo: https://github.com/UNICT-DMI/OPIS-Manager
- aggiornare Angular alla versione 20 (o possibilmente 21)
- migrare tslint ad eslint
- migrare da karma a vitest https://angular.dev/guide/testing/migrating-to-vitest
- CI & CD
-
- creare un file workflow per il lint
-
- creare un file workflow per i test
-
- creare un file workflow per il build
-
- aggiornare la versione di nodejs nella pipeline main.yml e rinominare main.yml in deploy.yml
- eliminare e2e/ (protractor è stato deprecato da tempo)
- aggiornare o sostituire @m0t0r/ngx-slider Migrate ng5-slider to ngx-slider UNICT-DMI/OPIS-Manager#38
- scrivere unit tests coprendo il 75% di:
-
- academic-year.component.ts
-
- cds.component.ts
-
- home.component.ts
-
- teaching.component.ts
(opzionali) idealmente sarebbe ottimo:
- migrare inputs/outputs a signals (la maggior parte si possono migrare automaticamente https://angular.dev/reference/migrations/signal-inputs , inoltre, con vscode si possono utilizzare utilizzare delle hotkeys per migrare singoli inputs/outputs con pochi click)
- convertire tutti i componenti in standalone components
- impostare tutti i componenti OnPush
- convertire tutti gli import dei servizi usando inject() e non il costruttore
- dividere i componenti in più componenti
Studenti coinvolti @FilippoMarletta, @ChiaraZuccaro