LS Liam Schott
Étude de cas · Alternance · Dwarf Animation Studio

DeadlineTray

Une interface system tray qui donne aux artistes un suivi personnel et épuré de leurs rendus Deadline — sans le bruit de l'interface complète. Paquet interne dw_deadline_tray.

Rôle
Développeur alternant R&D
Année
2025
Stack
Python · PySide6
Contexte
Outil interne studio
dw_deadline_tray
Python PySide6 Deadline API System Tray
01

Vue d'ensemble

Chez Dwarf Animation Studio, les rendus sont traités par Deadline. Son interface est puissante mais dense — les artistes s'y noient pour suivre un simple job.

dw_deadline_tray fournit une interface spécialisée et personnelle : chaque utilisateur suit uniquement ses jobs, sans information superflue. Besoin de plus de détails ? Un clic copie l'ID du job pour le retrouver dans Deadline. L'objectif : faire gagner du temps, de l'exécution jusqu'au visionnage des fichiers.

Problème résolu

L'interface Deadline est surchargée pour un suivi simple. Ici : une vue personnelle, épurée, avec notifications temps réel pour suivre ses jobs sans friction.

Approche adoptée

Architecture orientée événements : un service de monitoring dans un thread séparé interroge l'API Deadline et notifie à chaque changement de statut.

02

Le fonctionnement

De la barre système à la notification, le cycle de surveillance tourne en continu :

Étape 01
Application installée dans le system tray
Étape 02
Service de monitoring en thread séparé
Étape 03
Lecture de l'API REST Deadline
Étape 04
Filtrage des jobs de l'utilisateur courant
Étape 05
Actualisation de l'affichage sans rechargement
Étape 06
Notification système au changement d'état
03

Fonctionnalités

Notifications temps réel

Alerte système dès qu'un job change d'état — démarrage, complétion, erreur — sans surveiller Deadline manuellement. Compatible notifications natives Windows et macOS via Plyer.

Filtrage par utilisateur

Seuls les jobs soumis par l'utilisateur courant sont affichés, éliminant le bruit des rendus des autres équipes du studio.

Appels API

Lecture, suspension, suppression et re-queue des jobs depuis le tray.

Monitoring en fond

Un thread interroge l'API à intervalle régulier sans bloquer l'UI.

Copie d'ID de job

Identifiant Deadline copiable en un clic pour basculer vers l'interface complète.

Nettoyage des logs

Un service purge automatiquement les fichiers de logs anciens.

04

Stack technique

Backend

Python Plyer Deadline REST API Threading Services en fond

Interface & méthodo

PySide6 Qt Signaux / Slots Tests fonctionnels
05

Comment c'est construit

L'application PySide6 s'installe dans la barre système au démarrage. Une icône permet d'ouvrir le panneau de suivi, mettre en pause le monitoring ou quitter proprement.

Un thread de monitoring tourne en arrière-plan, interroge l'API REST Deadline à intervalles réguliers et compare les statuts à l'état connu pour détecter les changements.

L'API Deadline est interrogée pour récupérer les jobs actifs. Un filtre par nom d'utilisateur extrait uniquement les jobs pertinents.

À chaque changement d'état, une notification système est déclenchée via Plyer (Windows / macOS natif).

Les actions de gestion (suspension, suppression, re-queue) envoient la requête à l'API et actualisent l'affichage sans rechargement complet.

Un service de nettoyage des logs supprime périodiquement les fichiers dépassant un seuil d'ancienneté configurable.

07

Apprentissages

Architecture multi-thread

Séparer le thread de monitoring de l'UI Qt impose une communication inter-thread propre via signaux et slots PySide6, pour éviter tout blocage de l'interface.

UX pour non-développeurs

Concevoir pour des artistes 3D signifie masquer la complexité des appels API derrière une interface immédiatement lisible, accessible depuis la barre système.

Intégration d'API métier

Consommer l'API Deadline en conditions réelles — erreurs réseau, états transitoires, droits par utilisateur — m'a appris à traiter des APIs peu documentées avec rigueur.

Projet suivant
Stage — Automatisation LookDev