# Cahier des charges (v0) du projet d'adaptation mobile


Cahier des charges rassemblant les fonctionnalités à implémenter pour la version mobile de ScoDoc.

## Fonctionnalités

### Login (/ScoDoc)

Page de login inspirée de la version web actuelle (Avertissements...)

Login par département.

### Acceuil / Choix du département (/Scodoc)

Page d'acceuil, liste les départements auquels l'utilisateur est membre.

Liens vers:
- `Scolarité`

### Scolarité / Semestres (ScoDoc/DEPT/Scolarite)

Consultation des semestres et sessions en cours.

Liens vers:
- `Gestion Semestre`

### Gestion Semestre (ScoDoc/DEPT/Scolarite/Notes/formsemestre_status?formsemestre_id=ID_SEM)

Accès au tableau de bord des formations.

Depuis ce tableau de bord:
- Affichage des infos de la formations
- Affichage sous forme de liste des enseignants
- Affichage des étudiants inscrits (Redirection vers `Page étudiant`) (+ SearchBar)
    - Listes et exportation
    - Photos

Liens vers:
- `Profil étudiant`


### Profil étudiant (ScoDoc/RT/Scolarite/ficheEtud?etudid=ETUD_ID)

Affichage des informations de l'étudiant.

Liens vers:
- `Gestion/Saisie des absences` (Ajout, Suppression, Justification)
- `Bulletin de notes`

(Joindre `Saisie des absences` et `Bulletin de notes` a cette page ?)

### Saisie des absences (Page a définir)

Utilisation d'un dropdown pour le choix du groupe.

Affichage d'un tableau (Absences matin/après-midi séparées)
- A la semaine
- Sur un jour précis

### Bulletin de notes (Page a définir)

Affiche le bulletin de note d'un élève

### Paramètres (Page à définir | Probablement accessible depuis une sidebar)

Gestion de certains paramètres (A définir) du département

Potentiellement plusieurs pages (Paramètres de departement, de compte...)

## Besoins dans l'API (Source: [Documentation de l'API](https://scodoc.org/ScoDocAPI))

| Old API | New API | Remarque |
|---------|---------|----------|
| Login | | |
| `doLogin` | | Connexion avec identifiants |
| Acceuil / Choix DEPT | | |
| `index_dept` | | ??? |
| `list_depts` | | Liste les départements disponibles |
| `DeptId` (?) | | Récupère les identifiants de départements |
| Scolarité / Semestres | | |
| `formsemestre_list` | | Liste des semestres |
| Gestion Semestre | | |
| `formation_table_recap` (?) | | Affichage des infos de la formation |
| `do_ens_list` | | Liste des enseignants |
| `search_etud_by_name` | | Recherche d'étudiant par nom |
| `search_etud_in_dept` | | Recherche d'étudiant dans le departement|
| `trombino` (?) | | Affichage des photos des étudiants|
| Profil étudiant | | |
| `etud_info` | | Recuperation des informations d'un étudiant |
| Saisie des absences | | |
| `TODO` (Fonctions a fitrer)| | |
| Bulletin de notes | | |
| `formsemestre_bulletinetud` | | Recuperation d'un bulletin de notes |

## Choix des outils (Framework JS)

### Solutions "modernes"

Les solutions retenues ici sont récentes et mises a jour, et probablement plus durables.

#### ReactJS (Choix final)

ReactJS utilise une syntaxe JSX crée en 2013 et développée par Facebook (et sa communauté).

#### Vue JS

VueJS est un Framework OpenSource crée par Evan You en 2013

#### Choix

Les deux framework ont leurs avantages, mais malgré sa difficulté a prendre en main, 
React est plus adapté aux projets de cette envergure. 
React est également plutot orienté mobile (iOS/Android)

Les deux framework sont bien documentés et très complets.


### Autres solutions étudiées

Ces solutions n'ont pas été retenues car inadaptés au projet

#### Angular

Utilise des TypeScript, difficile a prendre en main, d'autres solutions sont plus complètes.

#### EmberJS

Très difficile a prendre en main, Framework plutot "lourd" vu l'ampleur du projet.

#### Svelte

Interessant mais très recent, donc a une marge d'évolution et pour le moment assez incomplet.

