# Cahier des charges — PokerDecide

> **Nom :** PokerDecide (validé)  
> **Domaine :** `https://pokerdecide.watys.fr/`  
> **Date :** 20 juillet 2026  
> **Statut :** infra créée — proto MVP préflop en ligne  
> **Version document :** 0.2

---

## 1. Nom et domaine

### Nom retenu

**PokerDecide** (validé le 20/07/2026)

- **Poker** = le jeu  
- **Decide** = aide à **décider** vite (fold / call / raise)

### Autres noms possibles

| Nom | Domaine | Commentaire |
|-----|---------|-------------|
| **PokerDecide** (reco) | `pokerdecide.watys.fr` | Clair, action, mémorable |
| **TableCoach** | `tablecoach.watys.fr` | Coach à la table |
| **Poker15** | `poker15.watys.fr` | Rappelle les 15 secondes |
| **PokerRapide** | `pokerrapide.watys.fr` | FR, explicite |
| **FoldCallRaise** | `foldcallraise.watys.fr` | Poker pur, un peu long |

> Quand le nom est validé : créer le LXC + DNS OVH + entrée `projects.json`.

---

## 2. En une phrase

**PokerDecide** est un **assistant d’entraînement** pour le poker (parties **gratuites**, sans argent réel) : vous saisissez la table à la main, et en **moins de 15 secondes** l’app propose une action (**fold / call / raise**), une mise, et une raison courte.

---

## 3. Ce que ce n’est PAS

| Non | Pourquoi |
|-----|----------|
| Lecture d’écran / OCR | Vous ne voulez pas — saisie manuelle volontaire |
| Bot qui joue à votre place | Interdit / triche sur salles réelles |
| Outil pour argent réel en live triche | Hors scope éthique |
| Solver GTO pro | Trop lourd pour réponse en 15 s |
| React / Laravel / framework lourd | Stack = **PHP + JS + HTML5 + CSS natifs** |

### Usage prévu (légitime)

- Parties **gratuites** (play money, freerolls, entraînement)
- **Améliorer** vos décisions (apprentissage)
- Saisie **manuelle** de l’état de la table
- Pas de connexion aux salles de poker

---

## 4. Contrainte clé : 15 secondes

| Étape | Temps cible |
|-------|-------------|
| Saisie (cartes, positions, mises) | **5–8 s** |
| Calcul conseil | **< 1 s** |
| Lecture réponse | **3–5 s** |
| **Total** | **≤ 15 s** |

Si la saisie est trop lente → l’outil ne sert à rien.  
**L’UX est aussi importante que le moteur de décision.**

---

## 5. Stack technique (décision)

### Choix retenu

| Couche | Techno |
|--------|--------|
| **Front** | HTML5 + CSS3 + JavaScript **vanilla** (pas React/Vue) |
| **Back** | PHP 8.x **natif** (pas Laravel/Symfony) |
| **API** | Endpoints PHP JSON (`/api/advice.php`, etc.) |
| **Base** | SQLite (historique mains, réglages) — optionnel V1 |
| **Serveur web** | Nginx sur LXC Debian |
| **Accès** | Reverse proxy HTTPS `:443` → `pokerdecide.watys.fr` |
| **Hébergement** | LXC Debian (Proxmox App Manager, comme BenefScan) |

### Structure dossiers (indicatif)

```
/var/www/app/
├── public/
│   ├── index.html      # interface principale
│   ├── css/style.css
│   └── js/
│       ├── app.js      # UI, saisie rapide
│       ├── table.js    # état de la table
│       └── api.js      # appels fetch
├── api/
│   ├── advice.php      # POST → conseil
│   └── health.php      # ping
├── lib/
│   ├── Engine.php      # moteur fold/call/raise
│   ├── Preflop.php     # ranges par position
│   └── PotOdds.php     # calculs cotes
├── data/
│   └── pokerdecide.sqlite
└── README.md
```

### Pourquoi pas de framework

- Aligné avec vos autres projets (IAPM, apps PHP simples)
- L’IA modifie facilement des fichiers plats
- Déploiement léger sur LXC
- Perf OK pour une API « conseil » instantanée

---

## 6. Infrastructure

| Élément | Valeur |
|---------|--------|
| **URL** | `https://pokerdecide.watys.fr/` |
| **CTID** | 9023 |
| **IP** | 10.10.11.122 |
| **SSH** | `dev@10.10.11.122` |
| **Dossier** | `/var/www/app` |
| **RAM / CPU** | 4096 Mo / 2 cœurs |
| **Hébergement** | LXC Debian (Proxmox App Manager) |
| **Proxy** | Reverse proxy HTTPS `:443` |
| **DNS** | OVH — `pokerdecide.watys.fr` |
| **Cursor CLI** | installé |
| **Telegram** | à créer |

---

## 7. Fonctionnalités

### 7.1 Saisie table (Must V1)

| ID | Fonction | Détail |
|----|----------|--------|
| S01 | Format table | 6-max ou 9-max |
| S02 | Position dealer (bouton) | 1 tap |
| S03 | Vos 2 cartes | Sélecteur rapide (As, Roi… + couleur) |
| S04 | Actions préflop | Par siège : fold / call / raise (+ montant) |
| S05 | Pot et à payer | Calcul auto si possible |
| S06 | Board postflop | Flop / turn / river (V1.1 ou MVP partiel) |
| S07 | Correction rapide | Annuler dernière action |

### 7.2 Conseil (Must V1)

| ID | Fonction | Détail |
|----|----------|--------|
| C01 | Bouton **Conseil** | 1 tap |
| C02 | Réponse | Fold / Call / Raise + sizing |
| C03 | Confiance | Faible / moyenne / forte |
| C04 | Raison courte | 1–2 phrases max |
| C05 | Timer visuel | Barre 15 s (optionnel) |

### 7.3 Moteur (Must V1 = préflop d’abord)

| ID | Fonction | Détail |
|----|----------|--------|
| M01 | Ranges préflop par position | UTG, MP, CO, BTN, SB, BB |
| M02 | Règles open / 3bet / fold | Heuristiques simples |
| M03 | Pot odds basiques | Call profitable ou non |
| M04 | Postflop simple | V1.1 — top pair, tirages, board sec |

### 7.4 Plus tard (V2+)

| ID | Fonction |
|----|----------|
| V01 | Historique des mains (SQLite) |
| V02 | Profil table (serrée / loose) |
| V03 | Stats perso (trop de fold, etc.) |
| V04 | Mode « coach détaillé » après la main |
| V05 | Export main pour révision |

---

## 8. Écran principal (maquette texte)

```
┌─────────────────────────────────────────┐
│  PokerDecide          [15s ████░░░░]    │
├─────────────────────────────────────────┤
│  Format: (•) 6-max  ( ) 9-max           │
│  Bouton: [SB][BB][UTG][MP][CO][BTN]      │
│                                         │
│  Mes cartes: [ A♠ ] [ K♦ ]              │
│                                         │
│  Préflop — tap siège → Fold/Call/Raise  │
│  [UTG fold][MP fold][CO raise 2.5]…     │
│                                         │
│  Pot: 45 €   À payer: 15 €              │
│                                         │
│  ┌─────────────────────────────────┐   │
│  │  RAISE 2.5x  (confiance: moyenne)│   │
│  │  AK suited en position — open OK  │   │
│  └─────────────────────────────────┘   │
│                                         │
│  [ CONSEIL ]                            │
└─────────────────────────────────────────┘
```

---

## 9. API (exemple)

**POST** `/api/advice.php`

Entrée (JSON) :
```json
{
  "format": "6max",
  "button_seat": 5,
  "hero_seat": 5,
  "hero_cards": ["As", "Kd"],
  "street": "preflop",
  "actions": [...],
  "pot": 45,
  "to_call": 15
}
```

Sortie :
```json
{
  "action": "raise",
  "size": "2.5x",
  "confidence": "medium",
  "reason": "AKo en position bouton, open standard."
}
```

---

## 10. MVP (V1)

1. LXC + domaine `pokerdecide.watys.fr`  
2. Page unique HTML/CSS/JS  
3. Saisie préflop 6-max  
4. `advice.php` + moteur préflop PHP  
5. Réponse en < 1 s  
6. Pas d’historique obligatoire  

**Hors V1 :** postflop complet, 9-max, compte utilisateur, app mobile native.

---

## 11. Critères de succès

1. Saisie + conseil préflop en **≤ 15 s** en usage réel  
2. Conseils **compréhensibles** (pas jargon GTO opaque)  
3. Utilisable sur **téléphone** (web responsive) via le proxy  
4. Vous l’utilisez sur **≥ 1 session** play money / gratuit  

---

## 12. Décisions ouvertes

- [x] Nom définitif : **PokerDecide**
- [x] Créer le LXC + DNS
- [ ] Groupe Telegram dédié ?
- [ ] Texas Hold’em uniquement en V1 ?
- [ ] Postflop en V1 ou V1.1 ?  

---

## 13. Reprise (Telegram / Cursor)

```
Lis CAHIER-DES-CHARGES.md du projet PokerDecide.
Stack PHP/JS natif sur LXC. Pas de framework.
On prépare le LXC pokerdecide.watys.fr ou le proto UI.
```

---

*Document de réflexion — juillet 2026.*
