diff --git a/config.toml b/config.toml index e5fac44..1bcda1e 100644 --- a/config.toml +++ b/config.toml @@ -4,27 +4,27 @@ DefaultContentLanguage = "fr" # theme theme = "kiboko" # site title -title = "Accueil - Kiboko" +title = "Kiboko" # disable language disableLanguages = [] # google analytics googleAnalytics = "" # paste your analytics ID here. (Ex: UA-123-45) [[menu.main]] -name = "Contactez-nous" -url = "http://kiboko.fr/fr/contactez-nous/" +name = "Kibokast" +url = "/kibokast" weight = 1 [[menu.main]] -name = "Kibokasts" -url = "/kibokasts" +name = "Contactez-nous" +url = "http://kiboko.fr/fr/contactez-nous/" weight = 2 [params] logo = "images/logo.png" logo_white = "images/logo.png" primary_color = "#22014f" -light_color = "#fe8507" +light_color = "#ddd" dark_color = "#22014f" body_color = "#ddd" text_color = "#666" @@ -56,3 +56,21 @@ title = "Vous n'avez pas trouvé une réponse ?" enable = true label = "Contactez-nous" link = "http://kiboko.fr/fr/contactez-nous/" + + +############################## social links ############################## +[[params.social]] +icon = "ti-twitter-alt" # themify icon pack : https://themify.me/themify-icons +link = "https://twitter.com/kibokolabs" + +[[params.social]] +icon = "ti-github" # themify icon pack : https://themify.me/themify-icons +link = "https://github.com/kiboko-labs" + +[[params.social]] +icon = "ti-linkedin" # themify icon pack : https://themify.me/themify-icons +link = "https://www.linkedin.com/company/kiboko-sas" + +[[params.social]] +icon = "ti-wordpress" # themify icon pack : https://themify.me/themify-icons +link = "http://kiboko.fr/fr/" \ No newline at end of file diff --git a/content/kibokasts/_index.fr.md b/content/kibokasts/_index.fr.md new file mode 100644 index 0000000..97972f0 --- /dev/null +++ b/content/kibokasts/_index.fr.md @@ -0,0 +1,7 @@ +--- +title: "Kibokast" +date: 2020-08-04 +icon: "ti-light-bulb" +description: "Les Kibokast sont des mini-formations effectués par un membre de Kiboko pour le reste de l'équipe." +type : "docs" +--- diff --git a/content/kibokasts/code-review/_index.fr.md b/content/kibokasts/code-review/_index.fr.md new file mode 100644 index 0000000..ba81e04 --- /dev/null +++ b/content/kibokasts/code-review/_index.fr.md @@ -0,0 +1,37 @@ +--- +title: "Code review" +date: 2020-05-05 +type : "docs" +--- + +## 1. Cycle de vie des PRs +- Pour la création des PRs, se reporter à la [procédure décrite dans les usages Github](usage.md#3-pull-request-pr) +- **Pas plus de 2 PRs ouvertes par personne** : tant que j'ai encore une PR non mergée, je n'entame pas de nouvelle tâche. +- **Tout le monde relit les PRs** de tout le monde +- Afin de fluidifier les développements, **il est important de relire les PRs plusieurs fois par jour** (ex : le matin en arrivant, puis après la pause déjeuner. Possibilité de relire à 2 si besoin) +- **Tout le monde peut merger** les PRs en respectant les règles de validité ci-dessous + +## 2. Règles de validité d'une PR +### Prérequis +- Chaque branche doit contenir un numéro de ticket : `feature/XXX-new-feature` +- **Chaque commentaire de commit doit contenir un numéro de ticket** : `#XXX : Add new feature` +- Les tests unitaires doivent passer +- La PR doit avoir le libellé "GTM" +- La PR doit avoir une taille raisonnable +- Les commits doivent être bien découpés (pas de "fix, re-re-fix, wip") + +### Règles de merge +Je merge une PR si elle respecte les critères suivants : +- Respect des prérequis décrits ci-dessus +- Déjà **2 autres personnes** ont approuvé la PR **dont un dev expérimenté** +- **Toutes les discussions sont marquées comme résolues** +- ⚠️ **Elle pointe sur la branche develop** ⚠️ +- Je vérifie que le milestone est le bon pour faciliter la rédaction des notes de version + +### Approbation et correction +#### En tant que relecteur +- Lorsque j'ai une question ou un retour à faire sur une PR, **je mets un commentaire** sur la ligne concernée (en restant courtois dans mes insultes) +- Lorsque je n'ai plus de retours à faire, **j'approuve la PR**. Si elle respecte les règles de validité, **je la merge sur develop**. + +#### En tant que développeur +- Lorsque je corrige ma PR, **je réponds** au commentaire (en restant courtois dans mes insultes) et **je marque la discussion comme résolue** \ No newline at end of file diff --git a/content/kibokasts/collections-doctrine/_index.fr.md b/content/kibokasts/collections-doctrine/_index.fr.md new file mode 100644 index 0000000..3f47b06 --- /dev/null +++ b/content/kibokasts/collections-doctrine/_index.fr.md @@ -0,0 +1,75 @@ +--- +title: "Collections Doctrine" +date: 2020-04-01 +type : "docs" +--- + +* [Documentation](https://www.doctrine-project.org/projects/doctrine-collections/en/1.6/index.html) +* [Github](https://github.com/doctrine/collections/) + +La collection sert à adresser le besoin de fournir des listes d'objets. Doctrine fournit une implémentation utilisée dans son ORM et ses ODM. + +La collection permet de gérer une liste d'objets du même type, pour : + +* filtrer +* trier +* appliquer un traitement (map) +* calculer un résultat d'après le contenu de la liste (reduce) + +L'interface `Collection` +--- + +Il s'agit du contrat "Collection" de Doctrine, toute collection devra implémenter cette interface. + +Cette interface implémente elle-même les contrats suivants : + +* [`\Countable`](https://www.php.net/manual/fr/class.countable.php) : la collection pourra être utilisée avec la fonction `count()`, ce qui permettra de connaitre le nombre d'éléments contenus par la collection. +* [`\IteratorAggregate`](https://www.php.net/manual/fr/class.iteratoraggregate.php) : la collection pourra être parcourue dans une structure `foreach` +* [`\ArrayAccess`](https://www.php.net/manual/fr/class.arrayaccess.php) : la collection pourra être utilisée avec les opérateurs `[]`, de la même manière qu'on le fait avec un tableau + +Les méthodes +--- + +### `map` + +La méthode `map( callable $callback )` va appliquer la fonction de rappel passée en argument sur chaque +élément qu'elle contient et retournera une copie de la collection. Dans cette copie +chaque élément aura été remplacé avec le résultat de cette fonction. + +```php +map(function(string $value): Product { + return new Product($value); +}); // Retournera : [object (Product) { $sku = 'SKU001' }, object (Product) { $sku = 'SKU002' }, object (Product) { $sku = 'SKU003' }] +``` + +### `filter` + +La méthode `filter( callable $callback )` va appliquer la fonction de rappel passée en argument sur chaque +élément qu'elle contient et retournera une copie de la collection. Dans cette copie, ne +restera que les éléments pour lesquels la fonction de rappel a renvoyé `true` + +```php +filter(function(Product $value): bool { + return in_array($value->sku, ['SKU001', 'SKU003', 'SKU005']); +}); // Retournera : [object (Product) { $sku = 'SKU001' }, object (Product) { $sku = 'SKU003' }] +``` + +### `slice` + +La méthode `slice( int $start, null|int $length )` va retourner une nouvelle copie de la collection contenant +uniquement les éléments commençant à la position `$start`, avec au maximum `$length` éléments à partir +de ce point si ce paramètre est fourni. + +```php +slice(2, 3); +// Retournera : [object (Product) { $sku = 'SKU002' }, object (Product) { $sku = 'SKU003' }, object (Product) { $sku = 'SKU004' }] +``` \ No newline at end of file diff --git a/content/kibokasts/commandes-debug/_index.fr.md b/content/kibokasts/commandes-debug/_index.fr.md new file mode 100644 index 0000000..08647ff --- /dev/null +++ b/content/kibokasts/commandes-debug/_index.fr.md @@ -0,0 +1,112 @@ +--- +title: "Commandes Debug" +date: 2020-04-07 +type : "docs" +--- + +# Commandes Symfony + +Articles officiels présentants certaines fonctionnalités : + +- https://symfony.com/blog/new-in-symfony-3-4-debug-autowiring-command +- https://symfony.com/blog/new-in-symfony-3-4-debug-form-command + +Pour avoir la liste complete : +`bin/console list debug` + +### Debug Router + +Doc officiel : https://symfony.com/doc/3.4/routing/debug.html + +Pour avoir l'ensemble des routes avec leur nom et les URLs qui correspondent + +`bin/console debug:router` + +Exemple pour rechercher une route "produit" dans des controllers : + +`bin/console debug:router --show-controllers | grep /product` + +### Debug Container + +Doc officiel : https://symfony.com/doc/3.4/service_container/debug.html + +Pour avoir l'ensemble des services publiques + +`bin/console debug:container` + +- Pour rechercher un service par son nom : `bin/console debug:container validator` +- Pour rechercher un service par tag : `bin/console debug:container --tag=form.type` +- Pour rechercher un service par parametre : `bin/console debug:container --parameter=kernel.debug` + +### Debug Config + +Doc officiel : https://symfony.com/doc/3.4/reference/configuration/debug.html + +Pour avoir l'ensemble des configuration + +`bin/console debug:config` + +- Pour rechercher pour un bundle : `bin/console debug:config AppBundle` + +### Debug Twig + +Pour avoir l'ensemble des fonctions des filtres, des tests et des globales disponibles ainsi que les chemins chargés par l'application + +`bin/console debug:twig` + +### Debug Swiftmailer + +Doc officiel : https://symfony.com/doc/3.4/reference/configuration/swiftmailer.html + +Pour avoir les mailers disponibles + +`bin/console debug:swiftmailer` + +### Debug Autowiring + +Doc officiel : https://symfony.com/doc/3.4/service_container/debug.html + +Pour avoir l'ensemble des services déclarés en auto-wiring : + +`bin/console debug:autowiring` + +### Debug Forms + +Pour avoir l'ensemble des formulaires (Type, Extension, Type Guessers) disponibles : + +`bin/console debug:form` + +### Debug Translations + +Pour avoir l'ensemble des traductions par locale ou bundle : + +`bin/console debug:translation` + +### Debug routes JS + +`bin/console fos:js-routing:debug` + + +# Commandes Oro + +### Entity config Oro + +Permet de récupérer la configuration d'une entité : + +`bin/console oro:entity-config:debug AppBundle\\Entity\\Norm` + +Permet de récupérer la configuration d'un champ d'une entité : + +`bin/console oro:entity-config:debug AppBundle\\Entity\\Norm code` + +### Layout + +_à compléter_ + +`bin/console oro:debug:layout` + +### Workflow + +_à compléter_ + +`bin/console oro:debug:workflow:definitions` \ No newline at end of file diff --git a/content/kibokasts/migrations-oro/_index.fr.md b/content/kibokasts/migrations-oro/_index.fr.md new file mode 100644 index 0000000..7710a87 --- /dev/null +++ b/content/kibokasts/migrations-oro/_index.fr.md @@ -0,0 +1,97 @@ +--- +title: "Migrations Oro" +date: 2020-02-21 +type : "docs" +--- + +Il y a 2 types de migrations dans Oro : +1. Migrations Schema +2. Migrations Data + +Doc. Oro : https://github.com/oroinc/platform/tree/master/src/Oro/Bundle/MigrationBundle + +Cours "Entities" de Yevhen (=> drive Kiboko)) + +## 1. Migrations Schema + +Modification de schéma Doctrine => DBAL + +- Pas d'utilisation d'entité/ORM dans le schéma + +#### 1.1. implémentation de l'interface `Installation` + +utilise des numéros de versions (=> `getVersion()`) + +/!\ regroupement de l'ensemble des migrations pour créer le schéma + +=> cf Schéma de Yevhen + +#### 1.2. implémentation de l'interface `Migration` + +/!\ quand on ajoute une Migration, il faut systématiquement : +- ajouter la migration dans l'installation en adaptant le schéma désiré +- changer le numéro de version + +#### 1.3. Cas spécifiques : champs non null + +utilisation des "OrderedMigration" => `getOrder():int` + +Ex : ajout champ UNIQUE + NOT NULL +> migration A avec `up()` methode `alterTable()` avec ajout de la colonne déclarée en `NULL` => ajout addPostQuery() +> migration B avec `up()` methode `alterTable()` avec ajout de la colonne `NOTNULL` + +#### 1.4. Cas spécifiques : modification de colonne existante + +utilisation de requêtes .SQL avec la méthode `addPostQuery()` + +#### 1.5. Cas spécifiques : Oro options + +Utilisation de "Oro_Options" + +#### 1.6. Cas spécifiques : OroConfigField + +OroConfigField uniquement pour les entités crées par ce bundle + +#### 1.7. Cas spécifiques : entity extend + +Implements : ExtendExtensionInterface + + +#### 1.8. Cas spécifiques : dépendance des migrations + +utilisation des "DependentMigration" + + +## 2. Migrations Data + +Migration pour créer de la donnée. + +Exécuter après les migrations de schéma => ORM + +Usage : initialiser une environnement avec des données + +/!\ Si Schema est mis a jour, il faut impacter les migrations de data + +## 3. Nomenclature des migrations + +#### 3.1. Installer + +Format : `{nom_du_bundle}Installer` + +ex : KibokoBarcodeBundleInstaller + +#### 3.2. Migration + +Le nom de la migration doit correspondre au fonctionnel de la migration. +Si le domaine est différent, on créé des fichiers différents par domaine. + +ex : AddBudgetMigration ou FixProductsNorms + + +## 4. Tests pour vérifier la migration + +- `bin/console oro:platform:update --force` +- `bin/console oro:migration:load` (si fixture en plus de `main`) +- `bin/console oro:entity-extend:cache:clear` => si erreur, PR refusée + +(prochainement ajouté à la CI) \ No newline at end of file diff --git a/content/kibokasts/principes-solid/_index.fr.md b/content/kibokasts/principes-solid/_index.fr.md new file mode 100644 index 0000000..72344ed --- /dev/null +++ b/content/kibokasts/principes-solid/_index.fr.md @@ -0,0 +1,159 @@ +--- +title: "Principes SOLID" +date: 2020-03-26 +type : "docs" +--- + +* Single responsibility principle +* Open/closed principle +* Liskov substitution principle +* Interface segregation principle +* Dependency inversion principle + + +Single responsibility principle +--- + +```php +setProduct($this); + $url->setPath(...); + $om->persist($url); + $om->flush(); + } +// ... +} +``` + +Open/closed principle +--- + +```php +repository->load(72) + return new URL($path); + } +} +``` + +```php +persist(...); + $em->flush(); + } + + public function ipsum(ArrayCollection $list) + { + return count($list) > 10; + } +} +``` + +```php +persist(...); + $om->flush(); + } + + public function ipsum(\Countable $list) + { + return count($list) > 10; + } +} +``` \ No newline at end of file diff --git a/content/kibokasts/usage-github/_index.fr.md b/content/kibokasts/usage-github/_index.fr.md new file mode 100644 index 0000000..9441481 --- /dev/null +++ b/content/kibokasts/usage-github/_index.fr.md @@ -0,0 +1,81 @@ +--- +title: "Usage Github" +date: 2020-02-07 +type : "docs" +--- + +## 1. Vue Kanban + +Dans cette vue Kanban d'un projet github, il y a : +- des tickets +- des PR +- des notes + +## 2. Tickets + +**2.1 Création** + +Lors de la création d'un ticket : + +- Choisir le projet correspondant +- Choisir le milestone +- Ajouter les labels/libellés + +**2.2 Sous-tâches** + +Penser à ajouter des sous-taches dans le ticket tel que + +`- [ ] Sous-tache` + +(barre d'avancement sur le ticket) + +Si la sous tâche est importante possiblité de créer un nouveau ticket et de faire référence dans le ticket parent tel que : + +`- [ ] Sous-tache #123` + +**3.3 Commentaires** + +Usage du développeur : +- remonter toutes les informations dans le tickets : bug, solution à un bug... +- identifier les utilisateurs github avec `@user` + +## 3. Pull Request (PR) + +Lors d'une nouvelle tache, on créé une nouvelle branche git +Dès le 1er commit push, on créé une nouvelle PR associé au projet et on ajoute le libellé `WIP` + +Dès que la tache côté développeur est finie, on peut retirer le libellé `WIP` et renseigner un reviewer. + +Les taches du release manager : +- échanger dans la PR avec le développeur +- fusionner les PR +- tester `develop/staging/master` (vérifier que les fusions de branches fonctionnent normalement) +- livrer sur l'environnement correspondant en utilisant une release (version Github) + +## 4. Releases + +Création via l'UI de github (tag .git + commentaire) + +![40% center](release-form.png) + +Convention de nommage des tags : `vyyyy.mm.x` + +> Exemple : +> +> `v2020.02.1` +> +> si c'est la 1ère livraison du mois + +**Pre-release** + +Pour usage sur la branch `develop` + +Convention de nommage des pre-release : `vyyyy.mm.xRCx` + +> Exemple : +> +> `v2020.02.1RC1` +> +> si c'est la 1ère livraison du mois + +![40% center](pre-release.png) \ No newline at end of file diff --git a/content/kibokasts/usage-github/pre-release.png b/content/kibokasts/usage-github/pre-release.png new file mode 100644 index 0000000..c81260b Binary files /dev/null and b/content/kibokasts/usage-github/pre-release.png differ diff --git a/content/kibokasts/usage-github/release-form.png b/content/kibokasts/usage-github/release-form.png new file mode 100644 index 0000000..0ceb4cb Binary files /dev/null and b/content/kibokasts/usage-github/release-form.png differ diff --git a/content/kibokasts/utilisation-des-commandes-kloud/_index.fr.md b/content/kibokasts/utilisation-des-commandes-kloud/_index.fr.md new file mode 100644 index 0000000..7a5a074 --- /dev/null +++ b/content/kibokasts/utilisation-des-commandes-kloud/_index.fr.md @@ -0,0 +1,54 @@ +--- +title: "Utilisation des commandes Kloud" +date: 2020-03-24 +type : "docs" +--- + +https://github.com/kiboko-labs/docker-images + +Commandes de gestion des images Docker +--- + +- `kloud images:test` + +Pour vérifier que les images soient conformes aux exigences (vérifie les pré-requis) + +- `kloud images:pull` + +Pour mettre à jour les images docker + +- `kloud images:tree` + +Pour afficher l'arbre de dépendances des images Docker + + +Commandes de manipulation des stacks Docker +--- + +> Initialize the Docker stack ion a project without Docker Stack + +- `kloud stack:init` + +Identifie le meilleur choix de stack en posant jusqu'à une dizaine de questions interactivement. Initialise cette stack d'après les réponses et crée un fichier `.kloud.yaml` à la racine du projet pour les prochaines utilisations de la commande. + +- `kloud stack:upgrade` + +Met à jour la stack Docker d'après les contraintes listées dans le fichier `.kloud.yaml` + +Utilisation en local +--- + +### Utilisation à travers Docker (préférable sous Mac) + +Créer un fichier `/usr/local/bin/kloud`, avec le contenu suivant : + +``` +#!/usr/bin/env sh +docker run --rm -ti -v '/var/run/docker.sock:/var/run/docker.sock' -v $PWD:/app kiboko/kloud $@ +``` + +Puis rendre le fichier exécutable avec `chmod +x /usr/local/bin/kloud` + +### Utilisation du fichier Phar (préférable sous Linux) + +Télécharger la dernière version publiée de l'utilitaire au format Phar : https://github.com/kiboko-labs/docker-images/releases \ No newline at end of file diff --git a/content/kibokasts/utilisation-stack-docker-kiboko/_index.fr.md b/content/kibokasts/utilisation-stack-docker-kiboko/_index.fr.md new file mode 100644 index 0000000..f5d27a0 --- /dev/null +++ b/content/kibokasts/utilisation-stack-docker-kiboko/_index.fr.md @@ -0,0 +1,88 @@ +--- +title: "Utilisation stack Docker Kiboko" +date: 2020-01-24 +type : "docs" +--- + +## 1. Initialisation d’un projet sur dev0 avec cette stack + +### 1.1. Initialisation du projet + +- cloner le projet application en local `git clone git@github.com:kiboko-labs/{nom-du-projet}.git` +- connexion ssh sur dev0 +> `ssh kiboko@dev0.kiboko.io` +- se rendre dans le répertoire `www/` +> cd www/ +- cloner le projet dans un répertoire nominatif tel que : +> `git clone git@github.com:kiboko-labs/{nom-du-projet}.git {nom-du-projet}-{NOM-DU-DEV}` +- se rendre dans le répertoire créé +> cd {nom-du-projet}-{NOM-DU-DEV} +- créer ma configuration phpstorm pour le déploiement sur dev0 (remote host) + - dans l'onglet `Mapping`, dans le champs `Deployment path`, mettre un `/` + - définir le remote en sftp et `par défaut` +> si vous aviez déjà au moins 1 remote paramétré et `par defaut`, il faut forcer le remote dev0 `par defaut` car c'est le remote `par defaut` qui sera automatiquement synchronisé depuis votre local +> DANGER : si `par defaut` est une prod + +- activer le déploiement automatique : `Tools/Déployment/Automatic upload` (les modif. locales à l’enregistrement seront deployées automatiquement) + +- creation du fichier .env à partir du fichier .env.dist + - avec des ports uniques (published port) + - ajout du token Github + - ajout des tokens Blackfire ou supprimer les valeurs + +#### 1.1.1. Installation vierge + +- `make start` (lance tous les services sauf WS et MQ) +- `make install` (ne pas remplir le parameters.yml à la main attendre que l’installeur le demande) + +#### 1.1.2. Installation avec un dump + +- `make start` +- importer son dump dans le service sql +- `make vendor platform-update` + +### 1.2. Lancement du MQ et WS avant exploitation + +- `make start-{mq,ws}` + + +### 1.3.Exploitation + +- voir la consommation des messages : docker-compose logs -f amqp` +- accès à RabbitMQManagement ex : http://dev0.kiboko.io:10006/ +- accès au mailcatcher ex : http://dev0.kiboko.io:10004/ +- accès à ElasticSearch via DejaVu ex : http://dev0.kiboko.io:10009/ + +Pratique : quand vous n’utilisez plus l’environnement, make stop + +### 1.4. Vider le cache + +- `make cache-clear` pour le cache de l'envirnonnement `prod` +- `make cache-clear-dev` pour le cache de l'environnement `dev` + +### 1.5 Changer de branche + +Il est impératif de faire changer de branche sur l'environnement local *et* l'environnement distant. L'environnement distant réclamera d'être committé ou remis à l'état original. + +**⚠️ Aucun commit ne doit être fait depuis l'environnement distant** + +* Pour remettre les fichiers à leur état original : `git reset --hard` +* Pour checkout la nouvelle version de travail : `git checkout ` + +## 2. Usages particuliers + +- utilisation xdebug via le service DBGp (à venir) + + +## 3. Ressources tiers + +- extension navigateur qui permet de switcher en mode dev, prod et debug: +https://github.com/kiboko-labs/kiboko-symfony-env + +> sur Chrome : +> - ajout extensions [chrome://extensions/](chrome://extensions/) +> - activer le mode développeur +> - charger l'extension non empaquetée + +- images docker : +https://github.com/kiboko-labs/docker-images \ No newline at end of file diff --git a/content/kibokasts/utilisation-tmetric/_index.fr.md b/content/kibokasts/utilisation-tmetric/_index.fr.md new file mode 100644 index 0000000..4076877 --- /dev/null +++ b/content/kibokasts/utilisation-tmetric/_index.fr.md @@ -0,0 +1,65 @@ +--- +title: "Utilisation Tmetric" +date: 2020-03-06 +type : "docs" +--- + +Support officiel : https://tmetric.com/support/ + +## 1. Outils + +- web app : https://app.tmetric.com/ + +- extension navigateur (indispensable) + +Google Chrome : https://chrome.google.com/webstore/detail/tmetric-%E2%80%93-time-tracker-pr/ffijoclmniipjbhecddgkfpdafpbdnen + +Mozilla Firefox : https://addons.mozilla.org/fr/firefox/addon/tmetric-extension/ + +=> permet d'ajouter un bouton "start timer" sur le ticket (Jira/Github) + +- desktop app : https://tmetric.com/download + + +## 2. Saisie de temps + +#### 2.1. Depuis un ticket + +Dès que lon commence une tache, on déclenche l'enregistrement du temps via le bouton "Start timer" présent sur le ticket (ou la PR), une modal s'ouvre : + +- **task** : correspond au nom du ticket (avec son numéro) +- **notes** : surcharge le nom du ticket si modifié +- **project** : :warning: bien vérifier que le projet dans la liste déourlante est bien le bon :warning: +- **tags** : non utilisé dans Tmetric, il est préférable de les retirer à ce jour + +(changement à prévoir lors de l'utilisation de la version ) + +#### 2.2. Tache interne + +Si la tache effectuée n'a pas de ticket, c'est une tache interne (sinon on créé le ticket manquant sur le projet) + +On peut donc ajouter un "Time entry" depuis l'application web https://app.tmetric.com/ ou desktop. + +Dans la description, utiliser l'auto-complete si la mission existe déjà et ajouter dans Project "Kiboko interne". + +Sinon on peut renseigner l'information. + + +## 3. Autres vues + +### 3.1. Vue "My time" + +=> https://app.tmetric.com/ + +Sur cette vue, on peut suivre et vérifier sa saisie de temps et la modifier simplement si il y a des erreurs. + + +### 3.2. Vue "Projects" + +Liste les différents projets disponibles, si il en manque merci de prévenir Xavier (admin) ou Dimitri (owner). + + +### 3.3. Vue "Reports" + +Permet d'analyser le temps saisie par projet, tache ou équipe. +Cette fonctionnalité permet d'exporter les données de l'équipe au format .csv afin de créer les CRA par client. \ No newline at end of file