o ""log" echashboard. -f logs/diltales logs : ier rif. Vé" 3ho rd" ec --dashboa : ./run.shc dashboard ave Lancer 2. echo " sh"n.n : ./rulicatioapper l' " 1. Lanccho :${NC}" epeschaines étaBLUE}Proe "${" echo - echo ""C}${N════╝═══════════════════════════════════════════════════════N}╚═EE -e "${GR{NC}" echo ║$ SIS TS RÉUSUS LES TES ✓ TO║ "${GREEN}" echo -e {NC}═══════╗$═══════════════════════════════════════════════════${GREEN}╔══o -e "ch"" e echo uvé" fion tro.py noard appDashb{NC} ED}✗$"${Ro -e eche fi elsk)"asl flinstallé (pip instalFlask nonOW}⚠${NC} "${YELL echo -e e els" éallask inst${NC} Fl${GREEN}✓cho -e " e then -eq 0 ]; if [ $?/dev/null2>rt flask" "impo-c ython3 plask pendances Fier les dé # Vérif " .py trouvéboard app${NC} DashN}✓${GREEho -e "en ecp.py" ]; thboard/apash"web_d-f " if [ hboard...as d duérification${NC} V[4/4]LUE}e "${Bncé echo -peut être laashboard le dfier que éri VTest 4: # fi 1 exitué" écho aConversion{NC} ED}✗$"${R echo -e elseectement" orrnne csion fonctio ConverEEN}✓${NC}-e "${GR echo 0 ]; then if [ $? -eqK") EOF le OPIL → tempfinumpy → rsion t("✓ Conveh) prinpat(tmp_.unlink osNettoyer) # sys.exit(1eated") e not crTemp fil print("✗ th):_pah.exists(tmpf not os.pater existe iue le fichier q# Vérifih) (tmp_patveil_image.saname ppath = tmp.: tmp_ tmpe) asalse=F deletng',='.pixaryFile(suffTempor.Named tempfilet withairemender temporaruveg # Sa ot)y(screenshage.fromarraage = ImPIL pil_imonvertir en it(1) # Cexys. sled")faiapture rint("✗ Cone: phot is Nens if screture()urer.caphot = captcreenspturer() s = ScreenCa capturer port os imepfiltemrt impoport Image PIL imturer from ScreenCap importcapturerreen_re.sccapturom core.) ft(0, '.'.path.inseryss st sy imporF'EO< '3 <" python PIL... numpy →onsi converst de la4]${NC} Te${BLUE}[3/echo -e " PIL mpy →ion nu convers Vérifier la Test 3:fi # exit 1 choué" a érereenCaptu}✗${NC} Scr${REDho -e " ece elsnt" temee correcfonctionnenCapturer C} Scre}✓${NGREEN"${ echo -ethen q 0 ]; $? -ef [ OF i Ehape}")reenshot.sOK: {sce (f"✓ Capturnt pri1) exit( sys.]}") ape[2ot.sh{screenshchannels: Wrong "✗ print(f 3: ape[2] !=reenshot.sh1) if sct(s.exi sy") nshot)} {type(screee:ng typ"✗ Wro print(frray): daot, np.ncreenshstance(ssint i if nos.exit(1) ) syure failed"✗ Capt print("t is None: hocreens if sapture()r.capturehot = ceens) scrurer(creenCaptcapturer = S as np pyport numapturer im ScreenCimporten_capturer ure.scre core.capt fromsert(0, '.').path.int sys sysimpor << 'EOF' python3..."aptureru ScreenC${NC} Test dLUE}[2/4]"${Be echo -e onnurer fonctiaptle ScreenCrifier que 2: Véest # T fi exit 1r.py" rchestratouvée dans onon tro Correction ✗${NC} "${RED}ho -e eclse pfile" etem → numpy → PIL conversion quée :n appliCorrectioEN}✓${NC} -e "${GREho ecy; then ator.pestrui/orchryFile" goraNamedTemp "tempfile.rep -q g.." ifstrator.py.ction orchea correon de lificatiVér1/4]${NC} "${BLUE}[e echo -ifiéodété mpy a tor.chestraorer le fichir quet 1: Vérifie}" # Tes-e "${NC╝" echo ════════════════════════════════════════════════════ "╚════════ echo ║" 3 ion VA VisRPions - rrect des Co Testcho "║ " e╗═════════════════════════════════════════════════════════╔═══" echo "e "${BLUE}ho -[0m' ec NC='\033[0;34m'\033E='m' BLU1;33'\033[W= YELLO033[0;31m'2m' RED='\'\033[0;3e GREEN= set -sug de b correctionse test desScript dbin/bash # #!/