bemade-addons/portal_planning/todo.md
2025-06-19 11:31:33 -04:00

9.7 KiB

Todo List - Module Portal Planning

1. Configuration initiale

  • 1.1 Créer la structure de base du module

    • Créer le fichier __manifest__.py avec les dépendances (planning, portal, timesheet)
    • Créer les dossiers de base (models, controllers, views, security, static)
    • Créer le fichier __init__.py à la racine
    • Observation: La structure de base est déjà en place avec les dépendances nécessaires.
  • 1.2 Configurer les fichiers de sécurité

    • Créer le fichier security/portal_planning_security.xml pour les groupes de sécurité
    • Créer le fichier security/ir.model.access.csv pour les droits d'accès
    • Définir les règles de sécurité pour les utilisateurs du portail
    • Observation: Les règles de sécurité de base sont en place, permettant aux utilisateurs du portail d'accéder à leurs propres créneaux de planning.
  • 1.3 Configurer les paramètres du module

    • Créer le fichier data/portal_planning_data.xml pour les paramètres par défaut
    • Observation: Les paramètres par défaut ont été configurés, incluant les options d'approbation automatique et de génération de feuilles de temps.

2. Extensions de modèles

  • 2.1 Étendre le modèle planning.slot

    • Ajouter les champs pour la modification via le portail
    • Ajouter les champs pour la création via le portail
    • Implémenter les méthodes de validation des modifications/créations
    • Observation: Le modèle a été étendu avec tous les champs nécessaires et les méthodes pour gérer les modifications et confirmations via le portail.
  • 2.2 Étendre le modèle resource.resource

    • Ajouter les champs pour l'approbation automatique
    • Observation: Le modèle a été étendu pour permettre la configuration de l'approbation automatique au niveau de la ressource.
  • 2.3 Étendre le modèle account.analytic.line (timesheet)

    • Ajouter les champs pour lier les entrées timesheet aux créneaux de planning
    • Observation: Le modèle a été étendu pour lier les feuilles de temps aux créneaux de planning et gérer leur création automatique.

3. Nouveaux modèles

  • 3.1 Créer le modèle portal.planning.request

    • Définir les champs pour les demandes de planning
    • Implémenter les méthodes de validation/refus
    • Observation: Un modèle portal.planning.request a été créé à la place des modèles portal.planning.modification et portal.planning.creation initialement prévus. Ce modèle gère les demandes de création de créneaux de planning par les utilisateurs du portail.
  • 3.2 Créer le modèle portal.planning.exchange

    • Définir les champs pour les demandes d'échange
    • Implémenter les méthodes de validation/refus
    • Observation: Le modèle a été créé avec tous les champs nécessaires et les méthodes pour gérer les demandes d'échange entre créneaux.

4. Contrôleurs

  • 4.1 Étendre le contrôleur portal.CustomerPortal

    • Implémenter la route /my/planning pour afficher la liste des demandes de planning
    • Implémenter la route /my/planning/<int:planning_id> pour afficher le détail d'une demande
    • Implémenter la route /my/planning/create pour créer une nouvelle demande
    • Implémenter la route /my/planning/submit/<int:planning_id> pour soumettre une demande
    • Implémenter la route /my/planning/cancel/<int:planning_id> pour annuler une demande
    • Observation: Le contrôleur de base est implémenté pour gérer les demandes de planning, mais il manque les routes pour la gestion directe des créneaux de planning.
  • 4.2 Ajouter les routes pour la gestion des créneaux de planning

    • Implémenter la route /my/planning/slot/<int:slot_id> pour afficher un créneau
    • Implémenter la route /my/planning/slot/<int:slot_id>/confirm pour confirmer un créneau
    • Implémenter la route /my/planning/slot/<int:slot_id>/modify pour modifier un créneau
    • Implémenter la route /my/planning/slot/<int:slot_id>/exchange pour échanger un créneau
    • Observation: Les routes pour la gestion des créneaux ont été implémentées dans le fichier controllers/planning_slot.py.
  • 4.3 Créer le contrôleur pour l'API JSON

    • Implémenter l'endpoint /planning/slot/update pour mettre à jour un créneau
    • Implémenter l'endpoint /planning/slot/confirm pour confirmer un créneau
    • Implémenter l'endpoint /planning/slot/exchange/request pour demander un échange
    • Observation: Les endpoints JSON ont été implémentés dans le fichier controllers/api.py pour permettre les interactions AJAX avec les créneaux de planning.

5. Vues et templates

  • 5.1 Créer les templates du portail pour les demandes de planning

    • Intégrer le planning dans le portail (menu et breadcrumbs)
    • Créer la vue d'ensemble des demandes de planning
    • Créer la vue détaillée d'une demande de planning
    • Créer le formulaire de création d'une demande
    • Observation: Les templates de base pour la gestion des demandes de planning sont en place.
  • 5.2 Créer les templates pour la gestion des créneaux de planning

    • Créer la vue d'ensemble des créneaux de planning
    • Créer la vue détaillée d'un créneau
    • Créer le formulaire de modification d'un créneau
    • Créer l'interface pour les échanges de créneaux
    • Observation: Les templates pour la gestion des créneaux ont été créés dans les fichiers views/portal_planning_slot_templates.xml et views/portal_planning_exchange_templates.xml.
  • 5.3 Créer les vues backend

    • Créer les vues pour le modèle portal.planning.request
    • Observation: Les vues backend pour le modèle portal.planning.request sont en place.
  • 5.4 Compléter les vues backend

    • Étendre les vues du modèle planning.slot pour intégrer les fonctionnalités du portail
    • Créer les vues pour le modèle portal.planning.exchange
    • Créer les vues pour le modèle portal.planning.modification
    • Observation: Toutes les vues backend ont été créées pour les modèles du module.

6. Fonctionnalités de confirmation et timesheet

  • 6.1 Implémenter la confirmation des créneaux

    • Développer la logique de confirmation
    • Ajouter les notifications de confirmation
    • Observation: La logique de confirmation des créneaux a été implémentée dans le modèle planning.slot.
  • 6.2 Implémenter la génération automatique des timesheets

    • Développer la logique de vérification des entrées existantes
    • Implémenter la création des entrées pour les périodes non couvertes
    • Lier les entrées timesheet aux créneaux de planning
    • Observation: La génération automatique des feuilles de temps a été implémentée dans le modèle planning.slot.

7. Fonctionnalités de modification

  • 7.1 Implémenter la modification des créneaux
    • Développer la logique de validation des modifications
    • Implémenter le processus d'approbation
    • Ajouter les notifications de modification
    • Observation: La logique de modification des créneaux a été implémentée dans le modèle planning.slot et portal.planning.modification.

8. Fonctionnalités d'échange

  • 8.1 Implémenter l'échange de créneaux
    • Développer la logique de demande d'échange
    • Implémenter le processus d'approbation
    • Ajouter les notifications d'échange
    • Observation: La logique d'échange des créneaux a été implémentée dans le modèle portal.planning.exchange.

9. Interface utilisateur et expérience

  • 9.1 Développer les assets frontend

    • Créer les fichiers CSS pour le style du planning dans le portail
    • Créer les fichiers JavaScript pour les interactions dynamiques
    • Observation: Les assets frontend ont été développés pour améliorer l'expérience utilisateur dans le portail.
  • 9.2 Implémenter la vue calendrier

    • Intégrer une bibliothèque de calendrier (FullCalendar.js)
    • Développer les interactions avec le calendrier
    • Observation: La vue calendrier a été implémentée avec FullCalendar.js, permettant aux utilisateurs du portail de visualiser leur planning sous forme de calendrier interactif. Un endpoint API /planning/api/slots a été créé pour alimenter le calendrier avec les données des créneaux de planning.

10. Tests

  • 10.1 Écrire les tests unitaires

    • Tests pour les modèles
    • Tests pour les contrôleurs
    • Observation: Les tests unitaires ont été implémentés pour les principaux modèles du module (portal.planning.request, portal.planning.exchange, planning.slot). Ces tests vérifient le bon fonctionnement des méthodes et des contraintes de validation.
  • 10.2 Écrire les tests d'intégration

    • Tests pour les workflows complets
    • Tests pour les interactions entre modules
    • Observation: Les tests d'intégration ont été implémentés pour vérifier les workflows complets (création, soumission, approbation) et les interactions entre les différents modules (planning, timesheet, mail, portal).

11. Documentation

  • 11.1 Écrire la documentation technique

    • Documentation des modèles et API
    • Documentation des workflows
  • 11.2 Écrire la documentation utilisateur

    • Guide d'utilisation du portail planning
    • Guide d'administration et configuration

12. Déploiement

  • 12.1 Préparer le module pour le déploiement

    • Vérifier les dépendances
    • Tester l'installation sur un environnement propre
  • 12.2 Créer les scripts de migration

    • Script de migration pour les données existantes