---
# System prepended metadata

title: CAHIER DES CHARGES

---

**Scene Batcher**
**CAHIER DES CHARGES**
===

[TOC]

# LES BESOINS

Nous avons besoin d'un "batcheur" de scènes qui exécute un script sur un ensemble de scènes sélectionnées. Il doit être capable de modifier potentiellement des centaines voire des milliers de scènes.

### Pour cela, nous aurons besoin de : 
---
- [ ] Une section "**Filtres**" pour éviter d'afficher toutes les scenes de Karlab en même temps.
- [ ] Une section "**Recherche**" (par nom ou ID d'actif) qui accepte également les expressions régulières, et la prise en charge des majuscules.
- [ ] Une liste des **Scenes filtrés**.
- [ ] Une section "**Script**" pour utiliser des script :
    - [ ] importé 
    - [ ] écris dans un éditeur de texte dedié.
- [ ] Une section "**Log**" avec :
    - [ ] log : avancement du batcher 
    - [ ] log : un retour des logs maya.
---

# L'UI
{%figma https://www.figma.com/file/OXDPfLlzkeVVPS37GshtYh/Batch-Window?type=design&node-id=0-1&mode=design&t=wBqJwxMuSO9jD3Sp-0 %}

# 1 - Les Filtres

:::success
 :mega: Les filtres prennent effet dans l'ordre ci-dessous.
:::


### A - Sélecteur de Show
- [ ] Une liste de tous les shows dans le pipeline avec des radio button pour choisir le projet sur lequel travailler (les projets de la liste sont par ordre alphabetiques).
**Par Défaut** : projet en cours si maya est set sur un projet en particulier, sinon premier alphabetique

### B - Sélecteur de Date de création
- [ ] Choix de date de creation minimale des scenes (Si elle reste vide, cela signifie sans début)
- [ ] Choix de date de creation maximale des scenes (Si elle reste vide, cela signifie sans fin)
**Par Défaut** : "Pas de Début/Pas de Fin"

### C - Sélecteur de Département
- [ ] Liste de Case a cocher pour filtrer par départements (le premier Departement de la liste est "All Departments").
**Par Défaut** : "All Departments"

### D - Sélecteur par Artistes
- [ ] Liste de Case a cocher pour filtrer par artistes (le premier Artiste de la liste est "All Artists"). 
**Par Défaut** : "All Artists"
- Possibilité de changer l'ordre de cette liste par "First Name" ou "Second Name".
**Par Défaut** : "First Name"


# 2 - La Sélection des Scènes

### A - Zone de Recherche
Permet de rechercher une ou des scènes en particulier :
- [ ] Choix de recherche par noms ou IDs
- [ ] Possibilité de cocher la compatibilité/compréhension des REGEX
- [ ] Possibilité de cocher la Case Compatibility

### B - Choix des Scènes
Affichage des scènes triées par les filtres actifs (puis par la barre de recherche, si utilisée). Dans les scènes affichées, possibilité de sélectionner les scènes cibles via des cases à cocher.
- [ ] Une **Barre Superieure** ayant des *options d'affichages* pour la fenetre de choix des scenes : 
    - [ ] Des CheckBoxs pour afficher les scenes dans des **groupes** :
        - [ ] *Asset*
        - [ ] *Departement*
    - [ ] Des CheckBoxs pour afficher l'etats les assets selectionnes lors du batch précedents (grisé si aucun batch n'as été loadé) : 
        - [ ] *Errors*
        - [ ] *Warnings*
        - [ ] *Validated*
        - [ ] *No Statement*
    - [ ] Une CheckBox pour afficher **uniquement** les assets selectionnes

- [ ] Des CheckBoxs de selection pour pouvoir selectionner ou deselectionner un groupe et tout ce qu'il contient (Asset > Département > *Scènes*)
- [ ] Possibilité de Replier ou deplier les groupes (Asset > Département > *Scènes*)
- [ ] Des colonnes de tri (avec possibilite de faire un triage par en tete de colonne): 
    - Nom : Nom de la version de l'asset 
    - Date : Date de publish de la version de l'asset 
    - Artist : Nom de l'artiste ayant publish cette version
    - Notes : Notes effectue lors du publish de cette version (*option de triage inutile pour cette colonne*)

- [ ] Une barre qui dit combien de scenes sont selectionnes (a travers combien de show, de departement,  ou d'artistes) 


# 3 - Les Codes à Appliquer

### A - Load Script
- [ ] Un field pour coller le path d'un script a executer (*Facultatif si un script est present dans le champ "hard script"*).

### B - Hard Script
- [ ] Un editeur de texte ou il est possible de directement coller un script (*Facultatif si un script est present dans le champ "load script"*).

Si les deux sont utilisé ils s'execute dans cet ordre 

# 4 - Les Logs

### A - Batch Log
- [ ] Ajouter le log du Batcher referencant l'avancement du programme :
    - (1) Debut du programme sur Scene X
    - (2) Import du script 1
    - (2.1) Import du script 2
        ....
    - (3) Execution du texte Brut 
    - (4) Scene X > OK
    - (5) Switch sur scene Y retour >>> (1).
    
Log qui seras sauvegarde permettant en cas de probleme :
- D'avoir un historique
- De recuperer le travail deja effectue par le programme et relancer pour le finir
    
### B - Maya Log
- [ ] Une retour des logs Maya notifiant les erreurs et les manipulations effectue sur Maya.


# 5 - Bouton de Validation

### A - Save Maya Logs
- [ ] Check Box qui, si elle est coché permet de sauvegarder les logs maya pour y avoir acces au .

### B - Save file
- [ ]  Check Box qui, si elle est coché permet de sauvegarde chaque nouvelle scenes selon l'option choisi parmis :
    *(Pour les exemples ci dessous nous partons du principe que nous travaillons avec une scene v02 et que la derniere version publie de l'asset est la v04)*
    
    - **Latest Version** (Un increment en +1 de la derniere version publiee de l'asset (*en etant sur la v02, la derniere version publie etant la v04, on creeras la v05*))
    - **Version + 1 (potentiel DANGER)** (Un increment, ou un ecrasement de la sauvegarde +1 de celle utilise (*en travaillant sur la v02 on creeras, ou ecraseras la v03*))
    - **Ecrasement (DANGER)** (Ecrase la sauvegarde actuellemewnt utilise (*en etant sur la v02, on ecrase la v02 avec cette nouvelle version*)
    - **Ecrasement du dernier publish (DANGER)** (Ecrase la derniere version publie (*en etant sur la v02, la derniere version publie etant la v04, on ecraseras la v04*))

:::warning
:warning: Rajouter peut etre une fenetre pop-up a l'execution si un choix "(**DANGER**)" a été sélectionné.
:::

**Si la checkBox n'est pas cochée :**
Le script s'éxécute faisant remonter toutes les erreurs possibles lors de l'execution mais aucune scenes ne seras sauvegardées (pratique pour effectuer un test avant de reellement executer les script sur des scenes sauvées)

### C - Continue if errors
- [ ] Une checkBox qui, si elle est coché, permet en cas d'erreur, de continuer d'executer le script sur les scenes suivantes. (l'erreur resteras tout de meme referencé dans le log du batcher et le log maya)

### D - Le Bouton Batch 
- [ ] Bouton qui execute le programme
    - [ ] Start du Batch Log
    - [ ] Start du Maya Log
    - Pour chaques scenes selectionnées:
        - [ ] Import de tout les script present dans les Load Script s'il y en as.
        - [ ] Execution des lignes de codes presente dans le field Brut Script s'il y a.


# Annexe 1 - Fenetre Pop-Up De Notes d'Update

Si : 
- **Save file** est coché (*peut importe l'option selectionne*)
- On clique sur le bouton Batch

Alors : 
- [ ] Une **fenetre pop-up** apparait demandant obligatoirement de remplir un champs stipulant les nouvelles modification du rig.
    
# Annexe 2 - Loader des Batchs Precedents

A la base de l'interface (en haut a gauche) un encart facultatif permet de loader la selection d'un batch precedent
- [ ] un field permet d'uploader un precedent Batch afin d'en recuperer la list de scenes 
- [ ] checkBox qui ignore les scenes validées lors du batch precedents a l'import de la selection.
- [ ] Un bouton "Load" pour lancer la selection du batch selectionné

# Annexe 3 - parallelisation des taches

Ca serait bien de pouvoir paralleliser les taches afin de pouvoir les dispatcher sur une render farm à terme .

