Files
pmomusic/Blackboard/Report/pmoserver_ext.md
Eric Coissac c250801a9f Documentation complète des patterns d'extension pmoconfig, pmoserver_ext et implémentation MusicSource
Ajout de la documentation complète pour les patterns d'extension pmoconfig, pmoserver_ext et l'implémentation d'une nouvelle MusicSource, incluant les guides détaillés, exemples de code et checklists d'implémentation.
2026-01-15 08:18:15 +01:00

3.1 KiB

Rapport : Documentation du pattern pmoserver_ext

Contexte

Documentation du pattern d'extension du PMOServer à travers plusieurs itérations basées sur les retours utilisateur.

Travail réalisé

Analyse des fichiers sources

Les fichiers suivants ont été analysés pour extraire le pattern :

  • pmoapp/src/lib.rs : Pattern SPA avec RustEmbed
  • pmocontrol/src/pmoserver_ext.rs : API REST avec Control Point (1506+ lignes)
  • pmoparadise/src/pmoserver_ext.rs : API REST simple avec client externe
  • pmoaudiocache/src/lib.rs : Extension avec cache et fichiers
  • pmomediaserver/src/paradise_streaming.rs : Extension complexe avec streaming

Round 1 : Document initial

Premier jet documentant exhaustivement tous les aspects des extensions (~850 lignes).

Round 2 : Recentrage sur le pattern

Annotation : "se recentrer sur le sujet principal"

Actions :

  • Réduction de ~850 à ~400 lignes
  • Suppression des digressions (OpenAPI détaillé, handlers spécifiques)
  • Focus sur l'anatomie du pattern en 5 étapes
  • Ajout d'une checklist et d'un exemple minimal

Résultat : Document focalisé sur l'implémentation du pattern uniquement.

Round 3 : Réintégration OpenAPI

Annotation : "Je trouve que le fait de devoir déclarer et documenter les URL dans OpenAPI / utopia était quelque chose d'important. Remets le."

Actions :

  • Ajout d'une section complète "Documentation OpenAPI avec utoipa" (~260 lignes)
  • 5 sous-sections détaillées :
    1. Configuration de base (dépendances Cargo)
    2. Définition des schémas avec #[derive(ToSchema)]
    3. Annotation des handlers avec #[utoipa::path]
    4. Création de la structure #[derive(OpenApi)]
    5. Exemple complet extrait de Radio Paradise
  • Mise à jour de la checklist avec section "Documentation OpenAPI"
  • Ajout des dépendances utoipa et serde dans la section références

Positionnement : Section insérée après "Méthodes disponibles du serveur" et avant "Patterns courants", car elle fait partie intégrante de l'implémentation.

Structure finale du document

  1. Vue d'ensemble : Principe du pattern
  2. Anatomie d'une extension : 5 étapes détaillées
  3. Méthodes disponibles du serveur : API de pmoserver::Server
  4. Documentation OpenAPI avec utoipa : Guide complet en 5 étapes Ajouté au Round 3
  5. Patterns courants : 3 exemples concrets
  6. Gestion des opérations longues : spawn_blocking, timeouts, background tasks
  7. Checklist d'implémentation : Organisée par catégories
  8. Exemple complet minimal : Code fonctionnel
  9. Références : Fichiers sources et dépendances

Résultat final

Le document est maintenant :

  • Complet : Couvre tous les aspects essentiels incluant OpenAPI
  • Structuré : Progression logique de la configuration à l'implémentation
  • Pratique : Exemples de code concrets extraits du codebase
  • Actionnable : Checklist détaillée en 4 catégories

Taille finale : ~660 lignes (avec section OpenAPI complète)

Fichiers modifiés

  • Blackboard/Architecture/pmoserver_ext.md : Document complet avec OpenAPI (660 lignes)