Compare commits
17 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
| 84d7b7e847 | |||
| a0a77648ca | |||
| 6cb35e82fe | |||
| b43cf6f036 | |||
| b573d20aab | |||
| 063f3ecc75 | |||
| 38284dabb6 | |||
| 74c6624317 | |||
| 51078a68fc | |||
| a4b2a870f3 | |||
| c74e19d732 | |||
| 8e74ca50be | |||
| 5798881446 | |||
| f57e4d94f8 | |||
| 3db249f3e1 | |||
| fcc04895f3 | |||
| d037af11b6 |
@@ -30,11 +30,6 @@ jobs:
|
|||||||
with:
|
with:
|
||||||
node-version: 22
|
node-version: 22
|
||||||
|
|
||||||
- name: Configuration de Node.js
|
|
||||||
uses: actions/setup-node@v4
|
|
||||||
with:
|
|
||||||
node-version: 22
|
|
||||||
|
|
||||||
- name: Activation de pnpm
|
- name: Activation de pnpm
|
||||||
run: corepack enable pnpm
|
run: corepack enable pnpm
|
||||||
|
|
||||||
@@ -44,6 +39,7 @@ jobs:
|
|||||||
- name: Compilation de la Build
|
- name: Compilation de la Build
|
||||||
env:
|
env:
|
||||||
VITE_APP_ENV: ${{ github.ref_name }}
|
VITE_APP_ENV: ${{ github.ref_name }}
|
||||||
|
VITE_PB_URL: ${{ secrets.PB_URL }}
|
||||||
run: pnpm run build
|
run: pnpm run build
|
||||||
|
|
||||||
- name: Installation de lftp
|
- name: Installation de lftp
|
||||||
@@ -64,18 +60,18 @@ jobs:
|
|||||||
run: |
|
run: |
|
||||||
# 2. On attribue les bons identifiants selon la branche
|
# 2. On attribue les bons identifiants selon la branche
|
||||||
if [ "$BRANCH" == "master" ]; then
|
if [ "$BRANCH" == "master" ]; then
|
||||||
TARGET_USER=$PROD_U; TARGET_PASS=$PROD_P; DOMAIN="aegis.gise.be"
|
TARGET_USER=$PROD_U; TARGET_PASS=$PROD_P;
|
||||||
elif [ "$BRANCH" == "acc" ]; then
|
elif [ "$BRANCH" == "acc" ]; then
|
||||||
TARGET_USER=$ACC_U; TARGET_PASS=$ACC_P; DOMAIN="acc-aegis.gise.be"
|
TARGET_USER=$ACC_U; TARGET_PASS=$ACC_P;
|
||||||
elif [ "$BRANCH" == "test" ]; then
|
elif [ "$BRANCH" == "test" ]; then
|
||||||
TARGET_USER=$TEST_U; TARGET_PASS=$TEST_P; DOMAIN="test-aegis.gise.be"
|
TARGET_USER=$TEST_U; TARGET_PASS=$TEST_P;
|
||||||
else
|
else
|
||||||
TARGET_USER=$DEV_U; TARGET_PASS=$DEV_P; DOMAIN="dev-aegis.gise.be"
|
TARGET_USER=$DEV_U; TARGET_PASS=$DEV_P;
|
||||||
fi
|
fi
|
||||||
|
|
||||||
echo "Déploiement de la branche [$BRANCH] vers le domaine [$DOMAIN]..."
|
echo "Déploiement de la branche [$BRANCH]"
|
||||||
|
|
||||||
# 3. Exécution du script FTP (notez le chemin adapté à HestiaCP)
|
# 3. Exécution du script FTP
|
||||||
cat << EOF > script.lftp
|
cat << EOF > script.lftp
|
||||||
set ftp:passive-mode true
|
set ftp:passive-mode true
|
||||||
set ftp:ssl-allow no
|
set ftp:ssl-allow no
|
||||||
@@ -84,7 +80,7 @@ jobs:
|
|||||||
set net:max-retries 2
|
set net:max-retries 2
|
||||||
set dns:fatal-timeout 2
|
set dns:fatal-timeout 2
|
||||||
open -u "${TARGET_USER}","${TARGET_PASS}" "${SERVER}"
|
open -u "${TARGET_USER}","${TARGET_PASS}" "${SERVER}"
|
||||||
cd home/${FTP_USER}
|
cd home/${TARGET_USER}
|
||||||
mirror -R --delete --verbose dist/ ./
|
mirror -R --delete --verbose dist/ ./
|
||||||
quit
|
quit
|
||||||
EOF
|
EOF
|
||||||
|
|||||||
@@ -7,9 +7,6 @@ on:
|
|||||||
- test
|
- test
|
||||||
- acc
|
- acc
|
||||||
- master
|
- master
|
||||||
push:
|
|
||||||
branches:
|
|
||||||
- dev
|
|
||||||
|
|
||||||
jobs:
|
jobs:
|
||||||
quality-gate:
|
quality-gate:
|
||||||
|
|||||||
@@ -22,3 +22,4 @@ dist-ssr
|
|||||||
*.njsproj
|
*.njsproj
|
||||||
*.sln
|
*.sln
|
||||||
*.sw?
|
*.sw?
|
||||||
|
|
||||||
|
|||||||
@@ -43,7 +43,7 @@ export const CardHeader = React.forwardRef<HTMLDivElement, React.HTMLAttributes<
|
|||||||
ref={ref}
|
ref={ref}
|
||||||
className={cn(
|
className={cn(
|
||||||
// Séparation discrète (bordure fine plutôt qu'ombre inset, pour rester léger)
|
// Séparation discrète (bordure fine plutôt qu'ombre inset, pour rester léger)
|
||||||
"px-6 py-5 flex flex-col space-y-1.5 border-b border-black/5 dark:border-white/5 transition-all duration-300 ease-in-out",
|
"px-6 py-5 flex flex-col space-y-1.5 border-black/5 dark:border-white/5 transition-all duration-300",
|
||||||
className
|
className
|
||||||
)}
|
)}
|
||||||
{...props}
|
{...props}
|
||||||
|
|||||||
@@ -57,7 +57,7 @@ export const Input = forwardRef<HTMLInputElement, InputProps>(
|
|||||||
"bg-[#e8e8e8] dark:bg-[#1e293b]",
|
"bg-[#e8e8e8] dark:bg-[#1e293b]",
|
||||||
"text-slate-800 dark:text-slate-100 font-medium placeholder:text-slate-400 dark:placeholder:text-slate-500",
|
"text-slate-800 dark:text-slate-100 font-medium placeholder:text-slate-400 dark:placeholder:text-slate-500",
|
||||||
|
|
||||||
// 🎯 Utilisation directe de tes constantes Neumorphic creusées
|
// Utilisation directe de tes constantes Neumorphic creusées
|
||||||
NEUMORPHISM.insetLight,
|
NEUMORPHISM.insetLight,
|
||||||
NEUMORPHISM.insetDark,
|
NEUMORPHISM.insetDark,
|
||||||
|
|
||||||
|
|||||||
@@ -17,8 +17,8 @@ export default function BackupWidget({ onClick }: BackupWidgetProps) {
|
|||||||
<Badge className="max-w-fit min-w-fit" name="PRA Immuable">
|
<Badge className="max-w-fit min-w-fit" name="PRA Immuable">
|
||||||
</Badge>
|
</Badge>
|
||||||
</CardHeader>
|
</CardHeader>
|
||||||
<CardContent className="p-6">
|
<CardContent className="p-6 flex flex-col h-full">
|
||||||
<Card variant='digged' className="bg-slate-50 rounded-lg p-4 border border-slate-100 mb-4">
|
<Card variant="flat" className="rounded-lg p-4 border border-slate-100 mb-4">
|
||||||
<p className="text-sm text-slate-500 mb-1">Dernier snapshot système</p>
|
<p className="text-sm text-slate-500 mb-1">Dernier snapshot système</p>
|
||||||
<p className="text-slate-900 font-medium">Aujourd'hui à 03:00 AM</p>
|
<p className="text-slate-900 font-medium">Aujourd'hui à 03:00 AM</p>
|
||||||
</Card>
|
</Card>
|
||||||
|
|||||||
@@ -30,8 +30,8 @@ export default function ServicesWidget() {
|
|||||||
))}
|
))}
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<Button size="lg" onClick={() => navigate('/evolution-infrastructure')}>
|
<Button className ="text-green-600" size="lg" onClick={() => navigate('/evolution-infrastructure')}>
|
||||||
Demander une évolution du parc
|
Mise à niveau du Parc
|
||||||
</Button>
|
</Button>
|
||||||
|
|
||||||
</CardContent>
|
</CardContent>
|
||||||
|
|||||||
@@ -8,14 +8,14 @@ export const SupportCtaWidget: React.FC = () => {
|
|||||||
|
|
||||||
return (
|
return (
|
||||||
<Card>
|
<Card>
|
||||||
<CardContent className="p-6">
|
<CardContent className="p-6 rounded-xl">
|
||||||
<h3 className="text-lg font-semibold mb-2">Centre de Support</h3>
|
<h3 className="text-lg font-semibold mb-2">Centre de Support</h3>
|
||||||
<p className="text-blue-900 text-sm mb-4 leading-relaxed">
|
<p className="text-sm mb-4 leading-relaxed">
|
||||||
Déclarez un incident critique ou demandez une évolution de votre infrastructure.
|
Déclarez un incident critique ou demandez une évolution de votre infrastructure.
|
||||||
</p>
|
</p>
|
||||||
<Button
|
<Button
|
||||||
onClick={() => navigate('/support')}
|
onClick={() => navigate('/support')}
|
||||||
className="w-full text-blue-900"
|
className= "text-rose-500 w-full"
|
||||||
>
|
>
|
||||||
Ouvrir un ticket sécurisé
|
Ouvrir un ticket sécurisé
|
||||||
</Button>
|
</Button>
|
||||||
|
|||||||
@@ -16,7 +16,7 @@ export const SupportFooterWidget: React.FC<SupportFooterWidgetProps> = ({
|
|||||||
const navigate = useNavigate();
|
const navigate = useNavigate();
|
||||||
|
|
||||||
return (
|
return (
|
||||||
<div className="mt-12 bg-slate-900 text-slate-300 rounded-xl p-6 flex flex-col sm:flex-row items-center justify-between gap-4 shadow-sm">
|
<div className="mt-12 bg-slate-500 text-slate-300 rounded-xl p-6 flex flex-col sm:flex-row items-center justify-between gap-4 shadow-sm">
|
||||||
<div>
|
<div>
|
||||||
<h4 className="text-sm font-bold text-white">{title}</h4>
|
<h4 className="text-sm font-bold text-white">{title}</h4>
|
||||||
<p className="text-xs text-slate-400 mt-0.5">
|
<p className="text-xs text-slate-400 mt-0.5">
|
||||||
|
|||||||
@@ -15,8 +15,7 @@ export const useTickets = () => {
|
|||||||
sort: '-created', // Du plus récent au plus ancien
|
sort: '-created', // Du plus récent au plus ancien
|
||||||
});
|
});
|
||||||
setTickets(records);
|
setTickets(records);
|
||||||
} catch (err) {
|
} catch {
|
||||||
console.error("Erreur lors de la récupération des tickets :", err);
|
|
||||||
setError("Impossible de charger l'historique de vos requêtes.");
|
setError("Impossible de charger l'historique de vos requêtes.");
|
||||||
} finally {
|
} finally {
|
||||||
setIsLoading(false);
|
setIsLoading(false);
|
||||||
|
|||||||
@@ -15,7 +15,7 @@ export default function ServiceDesk() {
|
|||||||
title="Centre de Support (Service Desk)"
|
title="Centre de Support (Service Desk)"
|
||||||
description="Canal de communication sécurisé avec vos experts GISE."
|
description="Canal de communication sécurisé avec vos experts GISE."
|
||||||
>
|
>
|
||||||
<Button onClick={() => navigate('/support/new')}>
|
<Button className= "text-rose-500" onClick={() => navigate('/support/new')}>
|
||||||
Ouvrir un ticket sécurisé
|
Ouvrir un ticket sécurisé
|
||||||
</Button>
|
</Button>
|
||||||
</PageHeader>
|
</PageHeader>
|
||||||
|
|||||||
Reference in New Issue
Block a user