story-research-zapwall/docs/remaining-tasks.md
Nicolas Cantu f7bd7faa73 fix: Correction erreurs TypeScript, nettoyage et réorganisation documentation
- Correction toutes erreurs TypeScript :
  - Variables non utilisées supprimées
  - Types optionnels corrigés (exactOptionalPropertyTypes)
  - Imports corrigés (PLATFORM_BITCOIN_ADDRESS depuis platformConfig)
  - Gestion correcte des propriétés optionnelles

- Suppression fichiers obsolètes :
  - code-cleanup-summary.md (redondant)
  - todo-implementation*.md (todos obsolètes)
  - corrections-completed.md, fallbacks-found.md (corrections faites)
  - implementation-summary.md (redondant)
  - documentation-plan.md (plan, pas documentation)

- Suppression scripts temporaires :
  - add-ssh-key.sh
  - add-ssh-key-plink.sh

- Réorganisation documentation dans docs/ :
  - architecture.md (nouveau)
  - commissions.md (nouveau)
  - implementation-summary.md
  - remaining-tasks.md
  - split-and-transfer.md
  - commission-system.md
  - commission-implementation.md
  - content-delivery-verification.md

Toutes erreurs TypeScript corrigées, documentation centralisée.
2025-12-27 21:25:19 +01:00

183 lines
5.7 KiB
Markdown

# Tâches restantes - Système de commissions
**Date** : Décembre 2024
**Auteur** : Équipe 4NK
## État actuel
**Implémenté** :
- Configuration centralisée des commissions
- Validation des montants à chaque étape
- Tracking des commissions sur Nostr
- Services de split (articles, avis, sponsoring)
- Services de transfert automatique (structure)
**À compléter** :
1. Intégration mempool.space pour vérification transactions Bitcoin
2. Récupération adresses Lightning depuis profils Nostr
3. Mise à jour événements Nostr pour avis rémunérés
4. Tracking sponsoring sur Nostr
5. Transferts Lightning réels (nécessite nœud Lightning)
## Tâches détaillées
### 1. Intégration mempool.space ✅ IMPLÉMENTÉ
**Objectif** : Vérifier que les transactions Bitcoin de sponsoring contiennent les deux sorties correctes.
**API mempool.space** :
- Endpoint : `https://mempool.space/api/tx/{txid}`
- Documentation : https://mempool.space/api
**Implémenté** :
- ✅ Service `MempoolSpaceService` pour récupérer une transaction depuis mempool.space
- ✅ Vérification que la transaction a deux sorties :
- Sortie 1 : `split.authorSats` vers `authorMainnetAddress`
- Sortie 2 : `split.platformSats` vers `PLATFORM_BITCOIN_ADDRESS`
- ✅ Vérification du nombre de confirmations
- ✅ Gestion des erreurs et retry
- ✅ Intégré dans `sponsoringPayment.ts`
**Fichier** : `lib/mempoolSpace.ts`
### 2. Récupération adresses Lightning ✅ IMPLÉMENTÉ
**Objectif** : Récupérer les adresses Lightning des auteurs/reviewers depuis leurs profils Nostr.
**Standards Nostr** :
- NIP-19 : Lightning addresses dans les métadonnées de profil
- Format : `lud16` ou `lud06` dans le profil JSON
- Exemple : `{"lud16": "user@domain.com"}`
**Implémenté** :
- ✅ Service `LightningAddressService` pour parser les métadonnées de profil
- ✅ Extraction de `lud16` ou `lud06` depuis les profils
- ✅ Cache des adresses récupérées
- ✅ Fallback si pas d'adresse disponible
- ✅ Intégré dans `paymentPolling.ts` et `reviewReward.ts`
**Fichiers** :
- `lib/lightningAddress.ts`
- `types/nostr.ts` ✅ (ajout de `lud16` et `lud06`)
### 3. Mise à jour événements Nostr pour avis ✅ IMPLÉMENTÉ
**Objectif** : Mettre à jour l'événement Nostr d'un avis avec les tags `rewarded: true` et `reward_amount: 70`.
**Implémenté** :
- ✅ Récupération de l'événement original de l'avis
- ✅ Ajout des tags `rewarded` et `reward_amount`
- ✅ Publication de l'événement mis à jour
- ✅ Gestion des erreurs si l'événement n'existe plus
- ✅ Vérification que l'avis n'est pas déjà rémunéré
- ✅ Parsing des tags dans `parseReviewFromEvent`
**Fichiers** :
- `lib/reviewReward.ts` ✅ (méthode `updateReviewWithReward` implémentée)
- `lib/nostrEventParsing.ts` ✅ (parsing des tags `rewarded` et `reward_amount`)
### 4. Tracking sponsoring sur Nostr ✅ IMPLÉMENTÉ
**Objectif** : Publier des événements de tracking pour les paiements de sponsoring.
**Implémenté** :
- ✅ Service `SponsoringTrackingService` pour publier les événements
- ✅ Tags similaires aux articles : `author_amount`, `platform_commission`
- ✅ Vérification de transaction via mempool.space avant tracking
- ✅ Informations de confirmation et nombre de confirmations
- ✅ Intégré dans `sponsoringPayment.ts`
**Fichiers** :
- `lib/sponsoringTracking.ts` ✅ (nouveau service)
- `lib/sponsoringPayment.ts` ✅ (méthode `trackSponsoringPayment` implémentée)
### 5. Transferts Lightning réels (PRIORITÉ BASSE - nécessite infrastructure)
**Objectif** : Effectuer réellement les transferts Lightning vers les auteurs/reviewers.
**Prérequis** :
- Nœud Lightning de la plateforme
- API pour créer et payer des invoices
- Gestion des erreurs et retry
**À implémenter** :
- Intégration avec l'API du nœud Lightning
- Création d'invoices pour les transferts
- Paiement automatique des invoices
- Queue de transferts en attente
- Retry en cas d'échec
**Fichier** : `lib/automaticTransfer.ts` (modifier les méthodes de transfert)
## Plan d'implémentation
### Phase 1 : Vérification transactions ✅ TERMINÉ
1. ✅ Créer `lib/mempoolSpace.ts`
2. ✅ Implémenter récupération transaction
3. ✅ Implémenter vérification sorties
4. ✅ Intégrer dans `sponsoringPayment.ts`
### Phase 2 : Adresses Lightning ✅ TERMINÉ
1. ✅ Créer `lib/lightningAddress.ts`
2. ✅ Parser profils Nostr pour `lud16`/`lud06`
3. ✅ Intégrer dans `paymentPolling.ts` et `reviewReward.ts`
### Phase 3 : Mise à jour avis ✅ TERMINÉ
1. ✅ Implémenter `updateReviewWithReward` dans `reviewReward.ts`
2. ✅ Parser tags `rewarded` et `reward_amount` dans `parseReviewFromEvent`
### Phase 4 : Tracking sponsoring ✅ TERMINÉ
1. ✅ Créer `lib/sponsoringTracking.ts`
2. ✅ Implémenter tracking dans `sponsoringPayment.ts`
3. ⏳ Mise à jour `total_sponsoring` sur présentation (structure préparée)
### Phase 5 : Transferts réels (long terme - nécessite infrastructure)
1. ⏳ Configurer nœud Lightning
2. ⏳ Implémenter API d'intégration
3. ⏳ Créer queue de transferts
4. ⏳ Monitoring et alertes
## Notes techniques
### mempool.space API
**Récupérer une transaction** :
```
GET https://mempool.space/api/tx/{txid}
```
**Réponse** :
```json
{
"txid": "...",
"vout": [
{
"value": 4200000,
"scriptpubkey_address": "bc1q..."
},
{
"value": 400000,
"scriptpubkey_address": "bc1q..."
}
],
"status": {
"confirmed": true,
"block_height": 123456,
"block_hash": "..."
}
}
```
### Lightning addresses dans Nostr
**Format profil** :
```json
{
"name": "Author",
"lud16": "author@getalby.com",
"lud06": "lnurl..."
}
```
**NIP-19** : Les adresses Lightning peuvent être dans les métadonnées de profil (kind 0).