From 29cac6224d00dd06242b5b44d60ba1809652d00e Mon Sep 17 00:00:00 2001 From: VOUDON Laurent Date: Tue, 26 May 2026 13:05:27 -0400 Subject: [PATCH 1/3] =?UTF-8?q?Mise=20=C3=A0=20jour=20de=20fichiers=20dans?= =?UTF-8?q?=20/app/static?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Corrections de largeur d'affichage, bug au chargement des acteurs pour la déclaration des capacités --- app/static/css/scribe.css | 4 ++-- app/static/index.html | 25 +++++++++++++++++-------- app/static/js/scribe.js | 5 +++-- 3 files changed, 22 insertions(+), 12 deletions(-) diff --git a/app/static/css/scribe.css b/app/static/css/scribe.css index 0c8ce63..4d435e8 100644 --- a/app/static/css/scribe.css +++ b/app/static/css/scribe.css @@ -112,7 +112,7 @@ header{display:flex;flex-direction:column;align-items:stretch;background:linear- /* ══ INCIDENTS TAB ══ */ #tab-veille{flex-direction:row} -.entry-col{width:320px;min-width:260px;display:flex;flex-direction:column;border-right:1px solid var(--border);overflow-y:auto;flex-shrink:0;max-height:calc(100vh - 90px)} +.entry-col{width:480px;min-width:320px;display:flex;flex-direction:column;border-right:1px solid var(--border);overflow-y:auto;flex-shrink:0;max-height:calc(100vh - 90px)} .view-col{flex:1;display:flex;flex-direction:column;overflow:hidden;min-width:0} /* MAP */ @@ -1448,4 +1448,4 @@ body.exo-mode{padding-top:36px} /* ═══════════════════ SCRIBE v2.3.65 */> - \ No newline at end of file + diff --git a/app/static/index.html b/app/static/index.html index 3b5ffc5..df5c3bf 100644 --- a/app/static/index.html +++ b/app/static/index.html @@ -224,7 +224,7 @@

🚨 Déclaration d'incident

oninput="filterUFList()" onfocus="showUFDropdown()" onkeydown="ufKeyNav(event)" style="padding-right:26px;width:100%;box-sizing:border-box"> - + @@ -285,14 +285,14 @@

🚨 Déclaration d'incident

⏱ Jalons de résolution
- - - - - + + + + + - - + +
@@ -2241,3 +2241,12 @@

Date: Tue, 26 May 2026 15:12:27 -0400 Subject: [PATCH 3/3] Lanceur avec PowerShell + reset DATA MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Prend en compte le venv Python, le créé si nécessaire Permet également de wiper les données pour repartir à 0 Utile en tests + PROD pour être certain que tout fonctionne --- launch_scribe.ps1 | 134 ++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 134 insertions(+) create mode 100644 launch_scribe.ps1 diff --git a/launch_scribe.ps1 b/launch_scribe.ps1 new file mode 100644 index 0000000..960b99e --- /dev/null +++ b/launch_scribe.ps1 @@ -0,0 +1,134 @@ +# Définition des encodages +$OutputEncoding = [console]::InputEncoding = [console]::OutputEncoding = New-Object System.Text.UTF8Encoding +$env:PYTHONUTF8 = 1 +$env:PYTHONIOENCODING = "utf-8" + +# Définir le titre de la fenêtre +$Host.UI.RawUI.WindowTitle = "SCRIBE - Supervision + Pilotage d'instances" + +#Set-ExecutionPolicy RemoteSigned -Scope CurrentUser +Set-ExecutionPolicy Unrestricted -Scope CurrentUser + +# Se placer dans le répertoire du script +Set-Location -Path (Split-Path $MyInvocation.MyCommand.Path) + +Write-Host "" +Write-Host " SCRIBE - Lancement avec environnement Python" +Write-Host "" +Write-Host "" +Start-Sleep -Seconds 2 + +# Définition des chemins : +$parentPath = Split-Path -Path $PSScriptRoot -Parent -Resolve +$source_config_etb = Join-Path $parentPath "SCRIBE_config_etablissement.xlsx" +$collecteurPath = Join-Path $PSScriptRoot "collecteur" +$profilePath = Join-Path $PSScriptRoot "master\profil_base.xlsx" +$masterOnboardingPath = Join-Path $PSScriptRoot "master\.onboarding_done" +$masterInstancesPath = Join-Path $PSScriptRoot "master\master_instances.json" +$masterInstancesExoPath = Join-Path $PSScriptRoot "master\master_instances_exercice.json" +$python_vEnv_name = ".venv" +$python_vEnv_executablePath = Join-Path $PSScriptRoot "$python_vEnv_name\Scripts\python.exe" + + +# Vérifier la présence de Python +if (!(Get-Command "python" -ErrorAction SilentlyContinue)) { + Write-Host " X Python non trouve. Installez Python 3.10+." + Pause + Exit 1 +} +# Activation du vEnv pour Python - Windows +Write-Host "Activation du vEnv Python" +$activateScript = Join-Path $PSScriptRoot "$python_vEnv_name\Scripts\Activate.ps1" +if (Test-Path $activateScript) { + . $activateScript + "Activation du vEnv Python - OK" +} else { + Write-Warning "Environnement virtuel non trouvé. Lancement 'python -m venv $python_vEnv_name'." + python -m venv $python_vEnv_name + . $activateScript + "Creation et activation du vEnv Python OK" +} + + +if (!(Test-Path $python_vEnv_executablePath)) { + Write-Host "Executable Python introuvable dans le vEnv. Utilisation du python par defaut" + $python_vEnv_executablePath = "python" + Start-Sleep -Seconds 2 +} + + +# Afficher l'en-tête +Write-Host "" +Write-Host " ===============================================================" +Write-Host " SCRIBE - Supervision avec pilotage d'instances" +Write-Host "" +Write-Host " http://localhost:9000 -- Onglet `"INSTANCES`"" +Write-Host "" +Write-Host " Lancez/configurez vos instances depuis l'admin web." +Write-Host " Ctrl+C pour arreter (toutes les instances filles aussi)." +Write-Host " ===============================================================" +Write-Host "" + +# Vérifier et installer les dépendances +Write-Host " [info] Verification des dependances..." +if (Test-Path "requirements.txt") { + #python -m pip install -q -r requirements.txt 2>$null + Start-Process -FilePath $python_vEnv_executablePath -ArgumentList "-m pip install -q -r requirements.txt" -NoNewWindow -Wait -RedirectStandardError (Join-Path $PSScriptRoot "pip_install_error.log") + Write-Host " [info] Dependance Python - main : OK" +} +if (Test-Path "collecteur\collecteur_requirements.txt") { + #$python_vEnv_executablePath -m pip install -q -r collecteur\collecteur_requirements.txt 2>$null + Start-Process -FilePath $python_vEnv_executablePath -ArgumentList "-m pip install -q -r collecteur\collecteur_requirements.txt" -NoNewWindow -Wait -RedirectStandardError (Join-Path $PSScriptRoot "pip_install_error.log") + Write-Host " [info] Dependance Python - Collecteur : OK" +} + +# Copier le profil de base si nécessaire +if ((Test-Path $profilePath)) { + $reponse = Read-Host "Voulez-vous demarrer une nouvelle configuration ? (O/Y/N)" + if ($reponse -eq "O" -or $reponse -eq "o" -or $reponse -eq "Y" -or $reponse -eq "y") { + Remove-Item -Path $profilePath -Force + Remove-Item -Path $masterInstancesPath -Force + Remove-Item -Path $masterInstancesExoPath -Force + if ((Test-Path $masterOnboardingPath)) { + Remove-Item -Path $masterOnboardingPath -Force + } + Remove-Item -Path "data\instances" -Force -Recurse + Write-Host "Donnees supprimees." + } else { + # assurer que le marqueur onboarding est bien créé + if (!(Test-Path $masterOnboardingPath)) { + New-Item -Path $masterOnboardingPath -ItemType File + } + } +} else { + Write-Host " [setup] Copie du profil de base..." + if (Test-Path $source_config_etb) { + Copy-Item $source_config_etb $profilePath -Force + Write-Host " [setup] Copie du profil de base - OK..." + } +} + +# Créer les répertoires nécessaires +if (!(Test-Path "data\instances")) { + New-Item -ItemType Directory -Path "data\instances" | Out-Null +} +if (!(Test-Path "logs")) { + New-Item -ItemType Directory -Path "logs" | Out-Null +} + + +Write-Host "" +Write-Host " >> Demarrage du navigateur en arriere plan" +Write-Host "" + +$edgeProcess = Start-Process msedge -ArgumentList "--inprivate", "http://localhost:9000" -PassThru + + +Write-Host "" +Write-Host " >> Demarrage de la supervision sur :9000..." +Write-Host "" + +# Changer de répertoire et lancer le collecteur +Set-Location $collecteurPath +Start-Process $python_vEnv_executablePath -ArgumentList "collecteur.py" -NoNewWindow +