Files
stripstream-librarian/openspec/changes/reading-progress/proposal.md
Froidefond Julien 648d86970f feat: suivi de la progression de lecture par livre
- API : nouvelle table book_reading_progress (migration 0016) et module
  reading_progress.rs avec GET/PATCH /books/:id/progress (token read)
- API : GET /books/:id enrichi avec reading_status, reading_current_page,
  reading_last_read_at via LEFT JOIN
- Backoffice : badge de statut (Non lu / En cours · p.N / Lu) sur la page
  de détail et overlay sur les BookCards
- OpenSpec : change reading-progress avec proposal/design/specs/tasks

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-03-10 21:53:52 +01:00

1.6 KiB

Why

L'application ne permet pas de suivre la progression de lecture d'un livre. Il est impossible de savoir quels livres ont été lus, lesquels sont en cours, ou de mémoriser la page courante pour reprendre là où on s'est arrêté.

What Changes

  • Nouvelle table PostgreSQL book_reading_progress pour stocker l'état de lecture par livre
  • Nouvel endpoint PATCH /books/:id/progress pour mettre à jour la progression (accessible avec token read ou admin)
  • Nouvel endpoint GET /books/:id/progress pour consulter la progression d'un livre
  • Enrichissement de GET /books/:id avec les champs de progression (reading_status, reading_current_page, reading_last_read_at)
  • Documentation Swagger complète via utoipa pour tous les nouveaux endpoints et schemas

Capabilities

New Capabilities

  • reading-progress: Suivi de l'état de lecture d'un livre (unread / reading / read), avec mémorisation de la page courante et horodatage de la dernière lecture

Modified Capabilities

  • book-details: Le détail d'un livre (GET /books/:id) expose désormais les informations de progression de lecture

Impact

  • DB : nouvelle migration 0016_add_reading_progress.sql
  • API : nouveau module apps/api/src/reading_progress.rs avec 2 handlers axum
  • API : apps/api/src/books.rsBookDetails enrichi + requête SQL modifiée (LEFT JOIN)
  • API : apps/api/src/main.rs — ajout des routes dans read_routes (GET) et dans une section accessible au token read (PATCH)
  • API : apps/api/src/openapi.rs — enregistrement des nouveaux composants Swagger