guidesoutenance

This commit is contained in:
2026-09-30 08:24:20 +02:00
parent 4de305bbf4
commit 07f88198c0
21 changed files with 1067 additions and 331 deletions

View File

@@ -2,37 +2,45 @@
Application mobile — profil étudiant 42 via l’**API Intra** (OAuth2).
> **Dépôt de rendu école** : ce dossier est conçu pour être la **racine** du dépôt Git déposé sur l’Intra. Il ne contient pas la documentation de travail (sujet traduit, guides) du dépôt perso.
> **Dépôt de rendu école** : ce dossier est la **racine** du dépôt Git Vogosphere. Pas de `docs/` ni de sujet traduit ici (dépôt perso séparé).
**État :** OAuth + vue recherche + vue profil (skills, projets). Prochaine étape : polish layout / tests device (dépôt de travail : `docs/pedagogie/00-reprise-et-etat.md`).
**État :** partie obligatoire + **bonus refresh token** (401 → refresh → retry API).
## Lancer le projet
```bash
cd swifty_companion
# Seul ce fichier compte pour Flutter (asset .env) :
# swifty_companion/.env
# Optionnel : copie de sauvegarde dans swiftyCompanion/.env — garder les deux identiques.
# Créer .env ici (voir .env.example à la racine du dépôt école)
flutter pub get
flutter run -d <device>
```
Écrans : **connexion OAuth 42** → **recherche par login** → **profil** (photo, champs, skills, projets validés / failed).
Le fichier **`.env`** doit être dans **`swifty_companion/.env`** (déclaré comme asset dans `pubspec.yaml`).
Vérifications :
```bash
flutter doctor
flutter devices
flutter analyze
flutter test
```
## Configuration (`.env`)
1. Créer une app OAuth : [profile.intra.42.fr/oauth/applications](https://profile.intra.42.fr/oauth/applications)
2. Copier `.env.example` → `.env` et renseigner `CLIENT_ID`, `CLIENT_SECRET`, `REDIRECT_URI`
3. Ne **jamais** pousser `.env` sur le dépôt école (déjà ignoré par `.gitignore`)
1. App OAuth : [profile.intra.42.fr/oauth/applications](https://profile.intra.42.fr/oauth/applications)
2. Scopes : **`public`** + **`projects`** (projets sur le profil)
3. Redirect URI (ex. téléphone) : `com.example.swiftycompanion://callback` — identique sur l’Intra et dans `.env`
4. Ne **jamais** committer `.env`
Documentation API : [api.intra.42.fr/apidoc](https://api.intra.42.fr/apidoc)
API : [api.intra.42.fr/apidoc](https://api.intra.42.fr/apidoc)
## Parcours app
1. **Se connecter avec 42** (token réutilisé pour toutes les requêtes)
2. **Rechercher** un login
3. **Profil** : photo, champs, skills (niveau + %), projets validés et failed
4. **Retour** → nouvelle recherche
## Partie obligatoire (rappel sujet v4)
@@ -41,28 +49,24 @@ Documentation API : [api.intra.42.fr/apidoc](https://api.intra.42.fr/apidoc)
| 1 | Au moins **2 vues** |
| 2 | **Toutes** les erreurs gérées (login inconnu, réseau, …) |
| 3 | Vue 2 : infos du login s’il **existe** |
| 4 | **≥ 4 détails** (login, email, mobile, level, location, wallet, evaluations, …) + **photo de profil** |
| 4 | **≥ 4 détails** + **photo de profil** |
| 5 | **Skills** : niveau + pourcentage |
| 6 | **Projets** réalisés, **y compris les failed** |
| 7 | Retour possible vers la **vue 1** |
| 8 | Layout **adaptatif** (tailles / plateformes) |
| 9 | **OAuth2 Intra** — **un token réutilisé**, pas un token par requête |
| 8 | Layout **adaptatif** |
| 9 | **OAuth2** — **un token** réutilisé |
Contraintes : dernière API 42 disponible ; secrets uniquement en local (`.env`).
Certaines données peuvent ne pas être affichées (confidentialité / réglementation).
Certaines données peuvent être masquées par l’API (confidentialité).
## Bonus
- Rafraîchissement du token à expiration ; l’application reste fonctionnelle.
*(Bonus évalué seulement si la partie obligatoire est parfaite.)*
- Refresh token : `IntraAuthService.refreshAccessToken()` + retry dans `intraApiGet` sur 401.
## Soutenance — checklist peer-eval
| # | Test | Démo |
|---|------|------|
| 1 | `flutter test` | Tests OK (si présents) |
| 1 | `flutter test` | Tests OK |
| 2 | `flutter run -d <device>` | Vue 1 → login valide → vue 2 |
| 3 | Profil | Photo + ≥ 4 champs + skills + projets (dont failed) |
| 4 | Login invalide | Message clair, pas de crash |
@@ -71,13 +75,13 @@ Certaines données peuvent ne pas être affichées (confidentialité / réglemen
| 7 | Petit écran / rotation | UI lisible |
| 8 | Bonus | Refresh token si implémenté |
**Ordre suggéré :** login valide → skills / projets → login faux → hors ligne → retour recherche.
**Ordre suggéré :** connexion → profil → login faux → hors ligne → retour → `flutter test`.
## Fichiers de ce dépôt
| Fichier | Rôle |
|---------|------|
| `README.md` | Ce document (correcteurs / peer-eval) |
| `.gitignore` | Règles Git pour le rendu école |
| `.env.example` | Modèle de variables (sans secrets) |
| `lib/`, `android/`, … | Code Flutter (après `flutter create` ou développement) |
| `README.md` | Ce document |
| `.gitignore` | Exclut `.env`, build, etc. |
| `.env.example` | Modèle sans secrets |
| `swifty_companion/` | Projet Flutter (`lib/`, `android/`, …) |