File size: 5,198 Bytes
e9d86db
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
#!/bin/bash
# Script de configuration automatique pour FireWatch AI
# Créé par Marino ATOHOUN

set -e

# Couleurs pour les messages
RED='\033[0;31m'
GREEN='\033[0;32m'
YELLOW='\033[1;33m'
BLUE='\033[0;34m'
PURPLE='\033[0;35m'
NC='\033[0m' # No Color

# Fonction de logging
log() {
    echo -e "${GREEN}[$(date +'%H:%M:%S')] $1${NC}"
}

error() {
    echo -e "${RED}[$(date +'%H:%M:%S')] ERROR: $1${NC}"
    exit 1
}

warning() {
    echo -e "${YELLOW}[$(date +'%H:%M:%S')] WARNING: $1${NC}"
}

info() {
    echo -e "${BLUE}[$(date +'%H:%M:%S')] INFO: $1${NC}"
}

# Banner
echo -e "${PURPLE}"
echo "🔥 ========================================= 🔥"
echo "    FireWatch AI - Configuration Setup"
echo "         Créé par Marino ATOHOUN"
echo "🔥 ========================================= 🔥"
echo -e "${NC}"

# Vérification des prérequis
log "Vérification des prérequis..."

# Vérifier Python
if ! command -v python3.11 &> /dev/null; then
    if ! command -v python3 &> /dev/null; then
        error "Python 3.11+ requis. Veuillez l'installer d'abord."
    else
        PYTHON_VERSION=$(python3 --version | cut -d' ' -f2 | cut -d'.' -f1,2)
        if [[ $(echo "$PYTHON_VERSION < 3.11" | bc -l) -eq 1 ]]; then
            error "Python 3.11+ requis. Version actuelle: $PYTHON_VERSION"
        fi
        PYTHON_CMD="python3"
    fi
else
    PYTHON_CMD="python3.11"
fi

log "✓ Python trouvé: $($PYTHON_CMD --version)"

# Vérifier pip
if ! command -v pip3 &> /dev/null; then
    error "pip3 requis. Veuillez l'installer d'abord."
fi

log "✓ pip trouvé: $(pip3 --version)"

# Vérifier git
if ! command -v git &> /dev/null; then
    error "git requis. Veuillez l'installer d'abord."
fi

log "✓ git trouvé: $(git --version)"

# Configuration de l'environnement virtuel
log "Configuration de l'environnement virtuel..."

if [ ! -d "venv" ]; then
    info "Création de l'environnement virtuel..."
    $PYTHON_CMD -m venv venv
else
    info "Environnement virtuel existant trouvé"
fi

# Activation de l'environnement virtuel
log "Activation de l'environnement virtuel..."
source venv/bin/activate

# Mise à jour de pip
log "Mise à jour de pip..."
pip install --upgrade pip

# Installation des dépendances
log "Installation des dépendances Python..."
if [ -f "requirements.txt" ]; then
    pip install -r requirements.txt
else
    error "Fichier requirements.txt non trouvé"
fi

# Configuration des variables d'environnement
log "Configuration des variables d'environnement..."
if [ ! -f ".env" ]; then
    if [ -f ".env.example" ]; then
        cp .env.example .env
        info "Fichier .env créé à partir de .env.example"
        warning "Veuillez éditer .env avec vos configurations"
    else
        error "Fichier .env.example non trouvé"
    fi
else
    info "Fichier .env existant trouvé"
fi

# Génération d'une clé secrète Django
log "Génération d'une clé secrète Django..."
SECRET_KEY=$(python -c "from django.core.management.utils import get_random_secret_key; print(get_random_secret_key())")
sed -i "s/SECRET_KEY=.*/SECRET_KEY=$SECRET_KEY/" .env
info "Clé secrète générée et configurée"

# Création des répertoires nécessaires
log "Création des répertoires nécessaires..."
mkdir -p media/uploads/images media/uploads/videos media/results models logs static/css static/js static/images

# Configuration de la base de données
log "Configuration de la base de données..."
python manage.py makemigrations
python manage.py migrate

# Collecte des fichiers statiques
log "Collecte des fichiers statiques..."
python manage.py collectstatic --noinput

# Vérification des modèles YOLOv8
log "Vérification des modèles YOLOv8..."
if [ -f "models/incendies.pt" ]; then
    log "✓ Modèle d'incendie trouvé"
else
    warning "✗ Modèle d'incendie non trouvé (models/incendies.pt)"
    info "L'application fonctionnera en mode simulation"
fi

if [ -f "models/intrusion.pt" ]; then
    log "✓ Modèle d'intrusion trouvé"
else
    warning "✗ Modèle d'intrusion non trouvé (models/intrusion.pt)"
    info "L'application fonctionnera en mode simulation"
fi

# Création d'un superutilisateur (optionnel)
echo ""
read -p "Voulez-vous créer un superutilisateur maintenant ? (y/N): " create_superuser
if [[ $create_superuser =~ ^[Yy]$ ]]; then
    log "Création du superutilisateur..."
    python manage.py createsuperuser
fi

# Tests de base
log "Exécution des tests de base..."
python manage.py check

# Résumé de l'installation
echo ""
echo -e "${GREEN}🎉 Configuration terminée avec succès ! 🎉${NC}"
echo ""
echo -e "${BLUE}Prochaines étapes :${NC}"
echo "1. Activez l'environnement virtuel : source venv/bin/activate"
echo "2. Lancez le serveur : python manage.py runserver"
echo "3. Ouvrez votre navigateur : http://127.0.0.1:8000"
echo "4. Accédez à l'admin : http://127.0.0.1:8000/admin/"
echo ""
echo -e "${YELLOW}Pour utiliser vos modèles YOLOv8 :${NC}"
echo "1. Placez incendies.pt et intrusion.pt dans le dossier models/"
echo "2. Décommentez les lignes de chargement dans detection/views.py"
echo "3. Redémarrez le serveur"
echo ""
echo -e "${PURPLE}FireWatch AI est prêt ! Créé par Marino ATOHOUN${NC}"