# 🚨 DÉPANNAGE : Sitemap Vide

## Problème
Le sitemap à l'URL https://www.duhaz.fr/sitemap.xml est vide ou ne contient aucune URL.

## 🔍 Causes possibles

1. **django.contrib.sites non configuré** (cause la plus fréquente)
2. Aucun article publié dans la base de données
3. Migrations non appliquées
4. Serveur non redémarré après les modifications

## ✅ Solution rapide (automatique)

### Étape 1 : Exécuter le script de correction

```bash
cd /Users/duhaz/projets/blog-duhaz
source venv/bin/activate  # Si vous avez un venv
python scripts/fix_sitemap_sites.py
```

Ce script va :
- ✅ Créer ou mettre à jour la table `django_site`
- ✅ Configurer le domaine `www.duhaz.fr`
- ✅ Vérifier la configuration

### Étape 2 : Redémarrer le serveur

```bash
# En développement
python manage.py runserver

# En production (selon votre config)
systemctl restart gunicorn
# ou
supervisorctl restart duhaz_blog
```

### Étape 3 : Vérifier le sitemap

Ouvrir dans le navigateur : https://www.duhaz.fr/sitemap.xml

---

## 🔧 Solution manuelle (si le script ne fonctionne pas)

### 1. Appliquer les migrations

```bash
python manage.py migrate
```

### 2. Configurer django.contrib.sites

```bash
python manage.py shell
```

Dans le shell Python :

```python
from django.contrib.sites.models import Site

# Créer ou mettre à jour le site
try:
    site = Site.objects.get(id=1)
    site.domain = 'www.duhaz.fr'
    site.name = 'Mr Duhaz'
    site.save()
    print("✅ Site mis à jour")
except Site.DoesNotExist:
    Site.objects.create(id=1, domain='www.duhaz.fr', name='Mr Duhaz')
    print("✅ Site créé")

# Vérifier
print(Site.objects.all())

exit()
```

### 3. Vérifier les articles

```bash
python manage.py shell
```

```python
from blog.models import Blog

# Compter les articles publiés
count = Blog.objects.filter(b_publier=True).count()
print(f"Articles publiés : {count}")

# Afficher les premiers
for blog in Blog.objects.filter(b_publier=True)[:5]:
    print(f"- {blog.b_titre}")

exit()
```

### 4. Redémarrer et tester

```bash
# Redémarrer le serveur
systemctl restart gunicorn

# Tester
curl https://www.duhaz.fr/sitemap.xml
```

---

## 🧪 Diagnostic complet

Pour identifier précisément le problème :

```bash
python scripts/diagnose_sitemap.py
```

Ce script vérifie :
- ✅ Configuration de django.contrib.sites
- ✅ SITE_ID dans settings.py
- ✅ Nombre d'articles publiés
- ✅ Nombre de catégories
- ✅ Génération du sitemap

---

## 📋 Checklist de vérification

- [ ] `django.contrib.sites` dans INSTALLED_APPS
- [ ] `django.contrib.sitemaps` dans INSTALLED_APPS
- [ ] `SITE_ID = 1` dans settings.py
- [ ] Migration `migrate` appliquée
- [ ] Site créé dans la table `django_site`
- [ ] Domaine = `www.duhaz.fr`
- [ ] Au moins 1 article avec `b_publier=True`
- [ ] Serveur redémarré
- [ ] URL configurée dans `urls.py`

---

## 🔍 Vérifications manuelles

### Vérifier la table django_site

```sql
-- Se connecter à la base de données
python manage.py dbshell

-- Vérifier la table
SELECT * FROM django_site;

-- Doit afficher :
-- id | domain          | name
-- 1  | www.duhaz.fr    | Mr Duhaz
```

### Vérifier l'URL du sitemap

```bash
python manage.py shell
```

```python
from django.urls import reverse
print(reverse('django.contrib.sitemaps.views.sitemap'))
# Doit afficher : /sitemap.xml

exit()
```

---

## ⚠️ Erreurs courantes

### Erreur : "table django_site doesn't exist"

**Solution :**
```bash
python manage.py migrate
```

### Erreur : "SITE_ID not defined"

**Solution :** Ajouter dans `duhaz_blog/settings.py` :
```python
SITE_ID = 1
```

### Sitemap vide mais pas d'erreur

**Causes possibles :**
1. Aucun article avec `b_publier=True`
2. Domaine du site incorrect (pas `www.duhaz.fr`)
3. Cache non vidé

**Solutions :**
```bash
# Vider le cache
python manage.py shell
>>> from django.core.cache import cache
>>> cache.clear()
>>> exit()

# Redémarrer
systemctl restart gunicorn
```

---

## 🎯 Test final

Après correction, le sitemap doit contenir :

```xml
<?xml version="1.0" encoding="UTF-8"?>
<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9">
  <url>
    <loc>https://www.duhaz.fr/blog/</loc>
    <lastmod>2025-XX-XX</lastmod>
    <changefreq>daily</changefreq>
    <priority>0.5</priority>
  </url>
  <url>
    <loc>https://www.duhaz.fr/blog/votre-article</loc>
    ...
  </url>
  ...
</urlset>
```

---

## 📞 Support

Si le problème persiste :

1. Exécuter `python scripts/diagnose_sitemap.py`
2. Consulter les logs Django
3. Vérifier les permissions de la base de données
4. S'assurer que le serveur a bien redémarré

---

## 📚 Scripts disponibles

- `scripts/diagnose_sitemap.py` - Diagnostic complet
- `scripts/fix_sitemap_sites.py` - Correction automatique
- `scripts/generate_sitemap_preview.py` - Génération test

---

**La cause la plus fréquente est django.contrib.sites non configuré.**  
**Exécutez `python scripts/fix_sitemap_sites.py` pour corriger automatiquement !**
