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

5.7 KiB

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 :

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 :

{
  "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 :

{
  "name": "Author",
  "lud16": "author@getalby.com",
  "lud06": "lnurl..."
}

NIP-19 : Les adresses Lightning peuvent être dans les métadonnées de profil (kind 0).