> For the complete documentation index, see [llms.txt](https://astroport-1.gitbook.io/astroport.one/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://astroport-1.gitbook.io/astroport.one/docs/how-to/plantnet_system.md).

# PLANTNET\_SYSTEM - Inventaire Participatif UPlanet

Le système PlantNet de UPlanet est un jeu collaboratif d'inventaire territorial qui permet aux citoyens de photographier et cataloguer les éléments de leur environnement, créant ainsi un "cadastre vivant" de la biodiversité et des ressources locales.

## 🎯 Objectifs du Jeu

### Mission Principale

**Assurer l'autonomie alimentaire collective** en :

* Inventoriant la biodiversité locale (plantes, insectes, animaux)
* Cataloguant les équipements partagés (outils, infrastructures)
* Identifiant les lieux d'intérêt (jardins, points d'eau)
* Coordonnant la chaîne de transformation de valeur

### Chaîne de Valeur Partagée

```
🌱 Graine     →    🌿 Plantation    →    💧 Entretien    →    🍅 Récolte    →    🥫 Conserve
   │                │                     │                    │                  │
   └─ Sélection     └─ Semis &            └─ Arrosage &        └─ Cueillette      └─ Stockage &
      & échange        repiquage            soins                optimale            partage
```

Chaque participant peut se spécialiser sur une étape. Le calendrier lunaire synchronise les efforts pour que les récoltes des uns deviennent les semences des autres.

## 📱 Interface Utilisateur : `plantnet.html`

### Emplacement

```
UPlanet/earth/plantnet.html
```

### Fonctionnalités

| Onglet            | Fonction       | Description                                                               |
| ----------------- | -------------- | ------------------------------------------------------------------------- |
| 🗺️ **Atlas**     | Vue d'ensemble | Carte interactive des éléments inventoriés, statistiques, progression ORE |
| 📸 **Inventaire** | Galerie        | Photos et contrats de maintenance générés                                 |
| 📷 **Contribuer** | Participation  | Upload de photos géolocalisées, sélection du type d'élément               |
| 💚 **Autonomie**  | Calendrier     | Calendrier lunaire, styles de production, export iCal                     |

### Types d'Inventaire Supportés

| Type     | Icône | Couleur          | Reconnaissance                        |
| -------- | ----- | ---------------- | ------------------------------------- |
| `plant`  | 🌱    | Vert `#22c55e`   | PlantNet API (espèces, famille, wiki) |
| `insect` | 🐛    | Orange `#f59e0b` | IA générique                          |
| `animal` | 🦊    | Rose `#ec4899`   | IA générique                          |
| `object` | 🔧    | Indigo `#6366f1` | IA générique (équipements)            |
| `place`  | 🏠    | Teal `#14b8a6`   | IA générique (lieux)                  |
| `person` | 👤    | Violet `#8b5cf6` | IA générique (personnes clés)         |

## 🔄 Workflow Complet

### 1. Publication par l'Utilisateur

L'utilisateur prend une photo et la publie via `plantnet.html` :

```javascript
// Événement Nostr Kind 1
{
  kind: 1,
  content: "🌱 Inventaire UPlanet\n📍 Position: 43.60, 1.44\n📸 Photo: https://ipfs.../image.jpg\n#plant #UPlanet #BRO #inventory",
  tags: [
    ["t", "plant"],
    ["t", "UPlanet"],
    ["t", "BRO"],
    ["t", "inventory"],
    ["t", "plantnet"],  // Pour les plantes uniquement
    ["g", "43.60,1.44"],
    ["imeta", "url https://ipfs.../image.jpg", "m image/jpeg"]
  ]
}
```

**Tags requis :**

* `#BRO` : Active la réponse du bot IA
* `#inventory` : Marque comme inventaire
* `#[type]` : Type d'élément (plant, insect, animal, object, place)
* `#plantnet` : (optionnel) Force la reconnaissance PlantNet pour les plantes

### 2. Traitement par le Bot IA

Le script `Astroport.ONE/IA/UPlanet_IA_Responder.sh` détecte les messages `#BRO` et :

```bash
# Détection des tags
if [[ "$message_text" =~ \#BRO ]]; then TAGS[BRO]=true; fi
if [[ "$message_text" =~ \#plantnet ]]; then TAGS[plantnet]=true; fi
if [[ "$message_text" =~ \#inventory ]]; then TAGS[inventory]=true; fi
```

#### Pour les plantes (`#plantnet`) :

1. Télécharge l'image depuis IPFS
2. Envoie à l'API PlantNet
3. Récupère : nom scientifique, noms communs, confiance, lien Wikipedia

#### Pour les autres types :

1. Analyse l'image avec IA générique
2. Génère une description et un contrat de maintenance

### 3. Génération des Contrats

Le bot publie **3 événements** en réponse :

| Kind      | Type         | Contenu                                                       |
| --------- | ------------ | ------------------------------------------------------------- |
| **1**     | Note simple  | Résumé sans markdown, photo, confiance, hashtags              |
| **30023** | Article blog | Contenu riche en markdown avec image, détails complets, liens |
| **30312** | ORE Space    | Espace géographique pour suivi et vérification                |

**Exemple de contrat Kind 30023 :**

```markdown
# 🌱 Lavandula angustifolia

![Photo](https://ipfs.../image.jpg)

**Nom commun :** Lavande vraie
**Famille :** Lamiaceae
**Confiance :** 94.2%

## 📋 Contrat de Maintenance

- Arrosage : modéré, résistant à la sécheresse
- Taille : après floraison
- Multiplication : bouturage en été

📍 Position : 43.60°N, 1.44°E
🔗 [Wikipedia](https://fr.wikipedia.org/wiki/Lavandula_angustifolia)

---
#UPlanet #inventory #plant #ORE
```

### 4. Mise à Jour de la Biodiversité

Le bot appelle `OREBiodiversityTracker` (Python) :

```python
from ore_system import OREBiodiversityTracker

tracker = OREBiodiversityTracker('/path/to/umap')
result = tracker.add_inventory_observation(
    inventory_type='plant',
    item_name='Lavandula angustifolia',
    scientific_name='Lavandula angustifolia',
    observer_pubkey='hex_pubkey',
    confidence=0.942,
    image_url='https://ipfs.../image.jpg',
    nostr_event_id='event_id'
)
```

**Fichier mis à jour :** `ore_biodiversity.json`

```json
{
  "inventory": {
    "plant": {
      "count": 16,
      "items": {
        "Lavandula angustifolia": {
          "first_seen": "2025-06-15T10:30:00Z",
          "last_seen": "2025-06-15T10:30:00Z",
          "observations": 1,
          "confidence_avg": 0.942,
          "observers": ["hex_pubkey"]
        }
      }
    }
  },
  "diversity_score": 0.78,
  "total_observations": 43
}
```

### 5. Publication du DID UMAP

Le DID de l'UMAP (Kind 30800) est republié avec les nouvelles statistiques :

```json
{
  "kind": 30800,
  "tags": [
    ["d", "did"],
    ["g", "43.60,1.44"],
    ["diversity_score", "0.78"],
    ["biodiversity_score", "0.65"],
    ["species_count", "16"],
    ["total_observations", "43"],
    ["inventory_plant", "16"],
    ["inventory_object", "5"],
    ["inventory_insect", "3"]
  ],
  "content": "{...DID Document avec ore_metadata...}"
}
```

## 📊 Système de Score

### Diversity Score (0-1)

Le `diversity_score` évalue la richesse de l'inventaire d'une UMAP :

```
items_score       = min(total_weighted_items × 1.5, 50)
type_diversity    = min(types_with_items × 4, 20)
observation_score = min(total_observations × 0.3, 20)
observer_score    = min(observer_count × 2, 10)

diversity_score = min((sum) / 100, 1.0)
```

**Pondération par type :**

| Type     | Poids |
| -------- | ----- |
| `plant`  | 2.0   |
| `insect` | 1.5   |
| `animal` | 1.5   |
| `object` | 1.0   |
| `place`  | 1.0   |
| `person` | 0.5   |

### Progression ORE

**Seuil d'activation :** 8 éléments inventoriés dans une UMAP

Une fois le seuil atteint, le contrat ORE est activé et les récompenses en Ẑen peuvent être distribuées.

## 👍 Système de Validation (Likes)

### Principe

Les "likes" (Kind 7 reaction `+`) servent de :

* **Vote de confiance** : La communauté valide l'observation
* **Crédit de Ẑen** : Chaque like crédite des Ẑen au portefeuille UMAP

### Règle des 28 Jours

> ⚠️ **Important** : Si une observation n'a pas reçu de like dans les 28 jours, elle est **supprimée** avec ses contrats associés.

Cette règle évite l'accumulation de données non validées et encourage la participation communautaire.

**Implémentation :** `NOSTR.UMAP.refresh.sh` → `cleanup_inventory_without_likes()`

```bash
# Pseudo-code
for each inventory_event in umap:
    if event.age > 28_days:
        likes = count_kind7_reactions(event.id)
        if likes == 0:
            delete_event(event.id)
            delete_associated_contracts()
            notify_author("Observation supprimée faute de validation")
```

## 📅 Calendrier Lunaire & Styles de Production

L'onglet "Autonomie" propose un calendrier biodynamique avec plusieurs styles adaptés aux jardiniers de tous niveaux :

| Style                         | Icône | Description                                                | Niveau           |
| ----------------------------- | ----- | ---------------------------------------------------------- | ---------------- |
| **🌳 Forêt Jardin**           | 🌳    | Écosystème comestible auto-entretenu, 7 strates verticales | ⭐ Débutant       |
| **UMAP Optimisé**             | 🏙️   | Maximiser la diversité sur petite surface (\~1km²)         | ⭐ Débutant       |
| **Variété Nutritionnelle**    | 🌿    | Couvrir tous les besoins alimentaires                      | ⭐ Débutant       |
| **Autonomie Complète**        | 🏡    | Produire 100% de sa nourriture                             | ⭐⭐⭐ Avancé       |
| **Conservation Longue Durée** | 🥫    | Légumes de garde, stérilisation                            | ⭐⭐ Intermédiaire |
| **Production Continue**       | 🔄    | Récoltes toute l'année                                     | ⭐⭐⭐ Avancé       |

### 🌳 Style Recommandé : Forêt Jardin

Le style **Forêt Jardin** est idéal pour les UMAPs car il :

* Crée un écosystème qui s'auto-entretient avec le temps
* Maximise la production sur 7 strates verticales
* Réduit le travail annuel (plantes pérennes)
* Favorise la biodiversité et les pollinisateurs
* S'adapte parfaitement aux débutants

**Les 7 strates de la Forêt Jardin :**

1. 🌳 **Canopée** : Arbres fruitiers hauts (pommiers, poiriers)
2. 🍎 **Arbres bas** : Fruitiers nains
3. 🫐 **Arbustes** : Baies, petits fruits (framboises, groseilles)
4. 🥬 **Herbacées** : Légumes perpétuels (chou Daubenton, oseille)
5. 🍓 **Couvre-sol** : Fraisiers, trèfle
6. 🥕 **Racines** : Ail des ours, topinambours
7. 🍇 **Grimpantes** : Vignes, kiwis

### 🌱 Guide Débutant : Rejoindre la Forêt Jardin UMAP

**Année 1 - Les bases :**

1. Plantez 2-3 arbres fruitiers (novembre = idéal)
2. Installez framboisiers et groseilliers
3. Semez trèfle et consoude (fertilité)
4. Paillez généreusement TOUT

**Année 2 - Développement :**

1. Ajoutez légumes perpétuels
2. Plantez couvre-sol (fraisiers)
3. Installez aromatiques pérennes
4. Premières récoltes de baies!

**Année 3+ - Maturité :**

* La forêt s'auto-gère
* Récoltes abondantes
* Très peu d'entretien

### 🤝 Les Guildes : Associations Bénéfiques

Une **guilde** est un groupe de plantes qui s'entraident :

**Guilde du Pommier :**

* 🍎 Pommier (centre)
* 🌿 Consoude (nutriments)
* ☘️ Trèfle (azote)
* 🌸 Capucines (piège à pucerons)
* 🧅 Ciboulette (répulsif)
* 🍓 Fraisiers (couvre-sol)

**Guilde des Tomates :**

* 🍅 Tomates (centre)
* 🌿 Basilic (répulsif + saveur)
* 🥕 Carottes (profondeur différente)
* 🌼 Œillets d'Inde (nématodes)

### Export iCal

Le calendrier peut être exporté en `.ics` avec :

* Semis optimaux selon les cycles lunaires
* Rappels d'entretien par strate (Forêt Jardin)
* Dates de récolte estimées
* Conseils pour débutants et progression
* Rappels de contribution UMAP
* Alertes météo générales

**Fonction :** `lunar-calendar.js` → `generateVegetarianGardenerICal(year, style)`

**Styles disponibles :** `foret`, `umap`, `variety`, `autonomy`, `conservation`, `continuous`

## 🏗️ Architecture Technique

### Fichiers Principaux

```
UPlanet/
├── earth/
│   ├── plantnet.html          # Interface utilisateur
│   └── lunar-calendar.js      # Fonctions calendrier lunaire

Astroport.ONE/
├── IA/
│   └── UPlanet_IA_Responder.sh  # Bot de traitement
├── tools/
│   └── ore_system.py          # OREBiodiversityTracker
├── RUNTIME/
│   └── NOSTR.UMAP.refresh.sh  # Cron de maintenance (nettoyage 28j)
└── docs/
    ├── PLANTNET_SYSTEM.md     # Cette documentation
    └── ORE_SYSTEM.md          # Système ORE complet
```

### Dépendances Externes

* **PlantNet API** : Reconnaissance des plantes
* **IPFS** : Stockage décentralisé des images
* **Nostr** : Réseau de publication des événements
* **Astronomy Engine** : Calculs lunaires précis (`astronomy.browser.min.js`)

### Events Nostr Utilisés

| Kind  | Usage                              | NIP     |
| ----- | ---------------------------------- | ------- |
| 1     | Notes (observations, réponses)     | NIP-01  |
| 7     | Réactions (likes/validation)       | NIP-25  |
| 30023 | Articles (contrats de maintenance) | NIP-23  |
| 30312 | ORE Meeting Space                  | Custom  |
| 30800 | DID Documents UMAP                 | NIP-101 |

## 🎮 Règles du Jeu

1. **Photographiez** un élément de votre territoire
2. **Publiez** via l'interface avec les bons hashtags
3. **Attendez** la réponse du bot (quelques secondes)
4. **Recevez** votre contrat de maintenance généré
5. **Faites voter** la communauté (likes = Ẑen)
6. **Contribuez** à la progression ORE de votre UMAP

### Objectifs Collectifs

* **8 éléments** : Activation du contrat ORE
* **Diversité** : Maximiser le `diversity_score`
* **Communauté** : Plus d'observateurs = meilleur score
* **Validation** : Likes dans les 28 jours

## 🔗 Liens Utiles

* **Interface** : `UPlanet/earth/plantnet.html`
* **Commons Editor** : `UPlanet/earth/collaborative-editor.html`
* **Système ORE** : `../explanation/ORE_SYSTEM.md`
* **Documents Collaboratifs** : `COLLABORATIVE_COMMONS_SYSTEM.md`
* **Journaux N²** : `../reference/JOURNAUX_N2_NOSTRCARD.md`
* **PlantNet** : <https://plantnet.org>
* **Nostr NIPs** : <https://github.com/nostr-protocol/nips>

## 🔄 Intégration avec les Documents Collaboratifs

Le système PlantNet s'intègre avec l'éditeur collaboratif de Commons pour permettre la création de plans de jardins validés par la communauté :

```
Observation PlantNet (kind 1 + #plantnet)
         ↓
Bot IA génère contrat maintenance (kind 30023)
         ↓
Utilisateur crée Plan de Jardin (Commons Editor)
         ↓
Document kind 30023 avec type "garden"
         ↓
Communauté valide via likes (kind 7)
         ↓
UMAP agrège et calcule score ORE
```

Voir `COLLABORATIVE_COMMONS_SYSTEM.md` pour le détail du workflow de co-édition.

***

*Documentation générée pour le projet UPlanet - Cadastre Écologique Décentralisé*


---

# Agent Instructions
This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com.

## Querying This Documentation
If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter, and the optional `goal` query parameter:

```
GET https://astroport-1.gitbook.io/astroport.one/docs/how-to/plantnet_system.md?ask=<question>&goal=<endgoal>
```

`ask` is the immediate question: it should be specific, self-contained, and written in natural language.
`goal` is optional and describes the broader end goal you are ultimately trying to accomplish on behalf of the user. GitBook uses it to tailor the answer towards what is most useful for that goal.

The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
