docs: Documentation complète de la détection automatique de fonds
- Architecture du système de détection - Flux de fonctionnement détaillé - Configuration et intégration - Dépannage et tests - Avantages et sécurité
This commit is contained in:
parent
379bd4420d
commit
3be2593ea2
243
docs/DETECTION_AUTOMATIQUE_FONDS.md
Normal file
243
docs/DETECTION_AUTOMATIQUE_FONDS.md
Normal file
@ -0,0 +1,243 @@
|
||||
# Détection Automatique de Fonds dans les Applications
|
||||
|
||||
## Vue d'ensemble
|
||||
|
||||
Ce système implémente une détection automatique des fonds insuffisants directement dans les applications et déclenche automatiquement un transfert de fonds du wallet mining vers le relay.
|
||||
|
||||
## Architecture
|
||||
|
||||
### 1. Détection dans les Applications
|
||||
|
||||
#### ihm_client (Frontend)
|
||||
- **Fichier**: `src/services/service.ts`
|
||||
- **Méthode**: `createProcess()`
|
||||
- **Détection**: Erreurs "Insufficient funds" ou "Missing sats"
|
||||
- **Action**: Appel automatique à l'API de transfert
|
||||
|
||||
```typescript
|
||||
try {
|
||||
const result = this.sdkClient.create_new_process(...);
|
||||
// ... traitement normal
|
||||
} catch (error) {
|
||||
const errorMessage = error.toString().toLowerCase();
|
||||
if (errorMessage.includes('insufficient funds') ||
|
||||
(errorMessage.includes('missing') && errorMessage.includes('sats'))) {
|
||||
// Transfert automatique de fonds
|
||||
await this.triggerAutomaticFundsTransfer();
|
||||
// Retry automatique
|
||||
const retryResult = this.sdkClient.create_new_process(...);
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
#### lecoffre-back (Backend)
|
||||
- **Fichier**: `src/routes/funds.routes.ts`
|
||||
- **Endpoints**:
|
||||
- `POST /api/v1/funds/transfer` - Transfert de fonds
|
||||
- `GET /api/v1/funds/check` - Vérification des fonds
|
||||
|
||||
### 2. Service de Détection
|
||||
|
||||
#### Service Node.js
|
||||
- **Fichier**: `scripts/funds/funds_detector_service.js`
|
||||
- **Fonctionnalités**:
|
||||
- Monitoring continu des fonds
|
||||
- Transfert automatique si nécessaire
|
||||
- Logs détaillés
|
||||
- Gestion des erreurs
|
||||
|
||||
### 3. Scripts de Support
|
||||
|
||||
#### Scripts Bash
|
||||
- `scripts/funds/simple_transfer.sh` - Transfert de base
|
||||
- `scripts/funds/check_and_transfer_funds.sh` - Vérification et transfert
|
||||
- `scripts/funds/monitor_funds.sh` - Monitoring continu
|
||||
- `scripts/startup-with-funds-check.sh` - Démarrage avec vérification
|
||||
|
||||
## Flux de Fonctionnement
|
||||
|
||||
### 1. Détection Automatique
|
||||
```
|
||||
Application (ihm_client) → createProcess() → Erreur "Insufficient funds"
|
||||
↓
|
||||
Détection automatique
|
||||
↓
|
||||
Appel API /api/v1/funds/transfer
|
||||
↓
|
||||
Transfert de fonds
|
||||
↓
|
||||
Retry automatique
|
||||
↓
|
||||
Succès
|
||||
```
|
||||
|
||||
### 2. API de Transfert
|
||||
```http
|
||||
POST /api/v1/funds/transfer
|
||||
Content-Type: application/json
|
||||
|
||||
{
|
||||
"amount": 0.01,
|
||||
"source": "mining_mnemonic",
|
||||
"target": "default"
|
||||
}
|
||||
```
|
||||
|
||||
**Réponse:**
|
||||
```json
|
||||
{
|
||||
"success": true,
|
||||
"message": "Transfert de 0.01 BTC réussi",
|
||||
"transactionId": "abc123...",
|
||||
"address": "tb1q...",
|
||||
"sourceBalance": 49.99,
|
||||
"targetBalance": 0.01
|
||||
}
|
||||
```
|
||||
|
||||
### 3. Vérification des Fonds
|
||||
```http
|
||||
GET /api/v1/funds/check
|
||||
```
|
||||
|
||||
**Réponse:**
|
||||
```json
|
||||
{
|
||||
"success": true,
|
||||
"relay": {
|
||||
"outputsCount": 1,
|
||||
"balance": 0.01
|
||||
},
|
||||
"mining": {
|
||||
"balance": 49.99
|
||||
},
|
||||
"needsTransfer": false
|
||||
}
|
||||
```
|
||||
|
||||
## Configuration
|
||||
|
||||
### Variables d'Environnement
|
||||
- `MINING_WALLET`: "mining_mnemonic" (par défaut)
|
||||
- `RELAY_WALLET`: "default" (par défaut)
|
||||
- `MIN_FUNDS_THRESHOLD`: 0.001 BTC (par défaut)
|
||||
- `TRANSFER_AMOUNT`: 0.01 BTC (par défaut)
|
||||
|
||||
### Seuils
|
||||
- **Seuil minimum**: 0.001 BTC (100,000 sats)
|
||||
- **Montant de transfert**: 0.01 BTC (1,000,000 sats)
|
||||
- **Vérification**: Toutes les 30 secondes (service)
|
||||
|
||||
## Intégration
|
||||
|
||||
### Docker Compose
|
||||
```yaml
|
||||
volumes:
|
||||
- ./scripts/funds:/scripts/funds:ro
|
||||
```
|
||||
|
||||
### Démarrage
|
||||
```bash
|
||||
# Démarrage avec vérification automatique
|
||||
./scripts/startup-with-funds-check.sh
|
||||
|
||||
# Service de monitoring
|
||||
node scripts/funds/funds_detector_service.js
|
||||
```
|
||||
|
||||
## Avantages
|
||||
|
||||
### 1. Transparence
|
||||
- L'utilisateur ne voit pas l'erreur de fonds insuffisants
|
||||
- Le transfert se fait automatiquement en arrière-plan
|
||||
- Retry automatique après transfert
|
||||
|
||||
### 2. Fiabilité
|
||||
- Détection proactive des problèmes
|
||||
- Transfert automatique avant échec
|
||||
- Gestion des erreurs et fallback
|
||||
|
||||
### 3. Performance
|
||||
- Pas d'interruption du workflow utilisateur
|
||||
- Transfert rapide (quelques secondes)
|
||||
- Monitoring continu
|
||||
|
||||
### 4. Maintenance
|
||||
- Logs détaillés pour debugging
|
||||
- Configuration flexible
|
||||
- Scripts réutilisables
|
||||
|
||||
## Dépannage
|
||||
|
||||
### Problèmes Courants
|
||||
|
||||
1. **API non accessible**
|
||||
```bash
|
||||
# Vérifier que lecoffre-back est démarré
|
||||
docker compose ps lecoffre-back
|
||||
|
||||
# Vérifier les logs
|
||||
docker logs lecoffre-back
|
||||
```
|
||||
|
||||
2. **Transfert échoue**
|
||||
```bash
|
||||
# Vérifier la connectivité Bitcoin
|
||||
docker exec bitcoin-signet bitcoin-cli -signet getblockchaininfo
|
||||
|
||||
# Vérifier les soldes
|
||||
curl http://localhost:8080/api/v1/funds/check
|
||||
```
|
||||
|
||||
3. **Service de détection ne démarre pas**
|
||||
```bash
|
||||
# Vérifier les permissions
|
||||
chmod +x scripts/funds/funds_detector_service.js
|
||||
|
||||
# Vérifier Node.js
|
||||
node --version
|
||||
```
|
||||
|
||||
### Logs
|
||||
- **Service de détection**: `/tmp/funds_detector.log`
|
||||
- **lecoffre-back**: `docker logs lecoffre-back`
|
||||
- **ihm_client**: Console du navigateur
|
||||
|
||||
## Tests
|
||||
|
||||
### Test Manuel
|
||||
```bash
|
||||
# 1. Vérifier les fonds
|
||||
curl http://localhost:8080/api/v1/funds/check
|
||||
|
||||
# 2. Transférer des fonds
|
||||
curl -X POST http://localhost:8080/api/v1/funds/transfer \
|
||||
-H "Content-Type: application/json" \
|
||||
-d '{"amount": 0.01}'
|
||||
|
||||
# 3. Vérifier à nouveau
|
||||
curl http://localhost:8080/api/v1/funds/check
|
||||
```
|
||||
|
||||
### Test Automatique
|
||||
```bash
|
||||
# Lancer le service de détection
|
||||
node scripts/funds/funds_detector_service.js
|
||||
|
||||
# Dans un autre terminal, simuler un manque de fonds
|
||||
# Le service devrait détecter et transférer automatiquement
|
||||
```
|
||||
|
||||
## Sécurité
|
||||
|
||||
- Vérification des soldes avant transfert
|
||||
- Limitation des montants de transfert
|
||||
- Logs de toutes les opérations
|
||||
- Gestion des erreurs sécurisée
|
||||
|
||||
## Performance
|
||||
|
||||
- Transfert en ~5-10 secondes
|
||||
- Détection en temps réel
|
||||
- Monitoring toutes les 30 secondes
|
||||
- Pas d'impact sur les performances utilisateur
|
Loading…
x
Reference in New Issue
Block a user