Ceci est une ancienne révision du document !
Projet Increase - fonctionnalités à implémenter
-- Models
- Générer les modèles
- Vous ajouterez les relations qui seront nécessaires par la suite au fur et à mesure de vos besoins
-- Liste des projets d'un client
A l'adresse user/projects/:idUser, on souhaite afficher la liste des projets d'un client tel que celui-ci pourra la consulter (ce sera ensuite le client connecté).
-- Avancement
L'avancement est calculé de la façon suivante :
Soit le projet composé des uses cases suivants :
| use case | poids | Avancement |
|---|---|---|
| UC-1 | 20 | 50% |
| UC-2 | 10 | 100% |
| UC-1 | 20 | 0% |
On exprime le poids de chaque UC en % du total
| use case | poids en % | Avancement |
|---|---|---|
| UC-1 | 40% | 50% |
| UC-2 | 20% | 100% |
| UC-1 | 40% | 0% |
- UC-1, qui représente 40% du projet ayant un avancement de 50% ⇒ il a contribué à l'avancement du projet de 40*50% soit 20%
- UC-2, qui représente 20% du projet ayant un avancement de 100% ⇒ il a contribué à l'avancement du projet de 20*100% soit 20%
- UC-1, qui représente 40% du projet ayant un avancement de 0% ⇒ il a contribué à l'avancement du projet de 40*0% soit 0%
L'avancement du projet est de 40%,
Avancement projet = somme sur les uc des (poids relatif*avancement)
-- Visualisation des retards
On considère qu'il y a retard dans l'avancement d'un projet si le pourcentage d'avancement est inférieur au pourcentage de temps écoulé.
Pour apprécier les éventuels retards ou avances dans l'avancement, on utilise les codes couleur suivants sur la progressBar d'avancement :
| Couleur /classe | Signification |
|---|---|
| <fc #5CB85C>Vert/success</fc> | % d'avancement>= % Temps écoulé |
| <fc #F0AD4E>Orange/warning</fc> | % d'avancement< % Temps écoulé |
| <fc #D9534F>Rouge/danger</fc> | dateFinPrevue dépassée |
-- Ouverture de projet
L'ouverture d'un projet par le click sur l'un des boutons Ouvrir doit se faire en Ajax.
-- Projet d'un client
A l'adresse user/project/:id, on souhaite afficher le projet dont l'id est passé en paramètre, conséquence de l'ouverture mentionnée précédemment. Toutes les informations affichées sont en lecture.
-- Equipe
La zone Equipe sera chargée en Ajax au chargement de la page dans une div #detailProject, à partir de l'adresse project/equipe/:id ou id est l'identifiant du projet.
Elle contient la liste des développeurs affectés au projet (par des cas d'utilisation). Le renseignement poids désigne le poids en % que représente l'intervention du dévelopeur dans le cadre du projet, compte tenu des uses cases dans lesquels il intervient, et du poids de ceux-ci.
Exemple sur un projet :
| use case | poids | Développeur |
|---|---|---|
| UC-1 | 20 | John DOE |
| UC-2 | 10 | John DOE |
| UC-1 | 20 | Martin SMITH |
John DOE intervient sur UC-1 et UC-2 qui pésent (20+10)/(20+10+20) = 30/50 = 60%
Son poids dans le projet est de 60%, 40% pour SMITH.
-- Message
La zone message devient visible sur click du bouton #btnMessages, et affiche les messages liés au projet : project/messages/:id
-- Retour
Un bouton doit permettre de fermer le projet, et de retourner à la liste des projets du client (en ajax/Jquery)
-- Liste des projets d'un "Author"
On désigne par “Author” les membres d'une équipe de développement.
A l'adresse author/projects/:idUser, on souhaite afficher la liste des projets auquels participe un “author”, et tel qu'il pourra la consulter (ce sera ensuite l'author connecté).
Cette liste est identique à celle visualisée par le client, à deux exceptions près :
- Les données sont différentes, il s'agit des projets où l'author intervient, par le biais des cas d'utilisation du projet
- Les liens Ouvrir (avec ajax) doivent pointer sur une adresse author/project/:id
-- Projet client vu par un author
A l'adresse author/project/:id, on souhaite afficher le projet dont l'id est passé en paramètre. Toutes les informations affichées sont en lecture.
La seule partie modifiée par rapport à ce que voit le client est la zone Equipe, remplacée par la zone Mes uses cases :
La zone Mes uses cases sera chargée en Ajax au chargement de la page dans la div #detailProject, à partir de l'adresse project/author/:idProject/:idAutor.
-- Liste des tâches
Les tâches apparaîssent dans la zone #divUseCase-n (n étant l'id du use case) à partir de l'adresse usecase/taches
-- Modification/ajout de tâche
La modification est obtenue sur click du bouton Modifier… lorsqu'une tâche est active, par appel de l'url tache/update/:id, id étant l'id de la tâche à modifier,
l'ajout par un click sur le bouton Ajouter une tâche, par appel de l'url tache/insert.
Sur validation, la zone correspondant au use case doit être mise à jour :
- Calcul du nouvel avancement du projet
- Affichage de la liste des tâches modifiée
- Affichage du nombre de tâches dans le cas (éventuellement mis à jour)
-- Connexion/droits
On pourra utiliser dans cette partie le projet Invo pour sa partie connexion (Contrôleur SessionController), et la gestion des ACL (SecurityPlugin).