MocodoScripts/mcd_mocodo.py
Djalim Simaila 064753b94d ♻️ refactor(mcd_mocodo.py): extract text generation logic into a separate function for better code organization and reusability
 feat(mocodo_notebook.ipynb): add functions to generate types and MLD from a domain expressed in MCD mocodo for enhanced functionality
2024-03-26 10:40:09 +01:00

131 lines
4.1 KiB
Python

"""
Domaines de l'application exprimés en MCD mocodo
"""
apprenant = "apprenant:id_apprenant,nom,prenom,date_de_naissance,classe,reponses_questionnaire\n"
compte = "compte:login,email,password,état,date_de_derniere_co,nom,prenom,mobile,date_de_création,moyen_paiement,est_connecté\n"
auth = f"""
{compte}
{apprenant}
licence:clé,date_utilisation
promotion:code, date_de_création,durée_reduction,reduction,conditions
abonnement:nom_abonnement,prix,date_de_début,date_de_fin
droit:id_droit,niveau_d_access,nb_profil_crée,nb_user_invite,peut_modifier_profil,peut_supprimer_profil, peut_faire_activité, peut_faire_test, peut_consulter_hist_activité, peut_consulter_hist_test
questionnaire: id_questionnaire,forme_rappel, disponibilité,reponses_questionnaire
probleme_signalé:id_prob,version de l'application,support,date du signalement,commentaire
question_posée:id_quest,question
anonyme:id,email
inviter,0N compte,0N compte,0N apprenant,0N droit,0N licence: date invitation,
utiliser,01 compte,0N licence
repondre, 01 compte, 0N questionnaire
créer, 0N compte,0N apprenant
acheter, 0N compte, 0N promotion, 0N licence, 0N abonnement : date d'achat
assigner, 11 abonnement, 0N droit
poser, 11 question_posée, 0N anonyme
poser1, 11 question_posée, 0N compte
signaler, 11 probleme_signalé, 0N anonyme
signaler1, 11 probleme_signalé, 0N compte
"""
fiche_activite = "fiche_activité:id_fiche,comp_travaillé,pourquoi_travailler_comp,variantes\n"
activite = "activité: id_activité, caracteristiques ia\n"
activites = f"""
{apprenant}
{compte}
{activite}
{fiche_activite}
activité_ajoutee: titre, caracteristiques ia
historique_activité: id, durée, date de réalisation, note difficulté,note plaisir,note concentration, note durée, activité proposée par algo
réaliser, 0N compte, 0N activité, 11 historique_activite, 0N apprenant : points accordés
ajouter, 0N compte,0N activité_ajoutee, 11 historique_activité , 0N apprenant
posséser, 11 historique_activité, 0N apprenant
decrire, 0N fiche_activite, 11 activité
"""
recompenses = f"""
{apprenant}
{compte}
palier:id_palier,nombre de points
defi:id_defi,nom,objectif,date limite
badge: id_badge,nom,description,image
{activite}
atteindre, 0N apprenant, 0N palier
réaliser, 0N compte, 0N activité, 0N apprenant : points accordés
réaliser3, 0N apprenant, 0N defi
debloquer, 0N defi, 11 badge
debloquer1, 0N palier, 11 badge
"""
#la relation réaliser est dupliquée entre des deux domaines, je garde un version sans pour la concatenation finale
recompenses_nr = f"""
{apprenant}
{compte}
palier:id_palier,nombre de points
defi:id_defi,nom,objectif,date limite
badge: id_badge,nom,description,image
{activite}
atteindre, 0N apprenant, 0N palier
réaliser3, 0N apprenant, 0N defi
debloquer, 0N defi, 11 badge
debloquer1, 0N palier, 11 badge
"""
ressources = f"""
mot_clé: mot
Ressource:id_ress,titre,description,date_de_publication,type,niveau_d_access
vidéo:id_video,lien_vers_site_externe
article:id_article,lien_vers_site_externe
{fiche_activite}
contenir,0N mot_clé,0N Ressource
etre1, 0N Ressource, 11 vidéo
etre2, 0N Ressource, 11 article
etre3, 0N Ressource, 11 fiche_activité
"""
test =f"""
test_de_positionnement: id_testpos, consigne, caracteristiques ia
test_de_progression: id_testpro, consigne
historique_test: id_entree, durée, score, temps de réaction moyen, date de réalisation
{apprenant}
{compte}
réaliser1, 0N compte,0N test_de_progression, 11 historique_test, 0N apprenant
réaliser2, 0N compte,0N test_de_positionnement, 11 historique test, 0N apprenant
posséser1, 11 historique_test, 0N apprenant
"""
entités = [
apprenant,
compte,
fiche_activite,
activite,
]
domaines = [
auth,
activites,
recompenses_nr,
ressources,
test,
]
def generer_texte_complet(domaines, entités):
texte_complet = ""
for domaine in domaines:
for entite in entités:
if entite in domaine:
domaine = domaine.replace(entite, "")
texte_complet += domaine
for entite in entités:
texte_complet += entite
return texte_complet
texte_complet = generer_texte_complet(domaines, entités)