Skip to content

[US-001] Ricerca e filtri catalogo #13

Description

@turibbio

[US-001] Ricerca e filtri catalogo

As a Customer,
I want cercare e filtrare i capi di abbigliamento per categoria, prezzo e taglia,
So that posso trovare rapidamente i prodotti che mi interessano senza scorrere tutto il catalogo.

Acceptance Criteria

  • Given che sono nella homepage, When digito un testo nella barra di ricerca, Then vedo solo i capi il cui nome o descrizione contiene il testo cercato
  • Given che sono nella homepage, When seleziono una categoria dal filtro (es. T-Shirt, Jeans), Then vedo solo i capi di quella categoria
  • Given che sono nella homepage, When imposto un range di prezzo (min/max), Then vedo solo i capi con prezzo compreso nel range
  • Given che sono nella homepage, When seleziono una taglia dal filtro, Then vedo solo i capi disponibili in quella taglia
  • Given che ho applicato uno o più filtri, When clicco "Rimuovi filtri", Then vedo nuovamente tutti i capi
  • Given che applico filtri che non producono risultati, When la ricerca viene eseguita, Then vedo un messaggio "Nessun risultato trovato" con suggerimento di rimuovere i filtri
  • Given che applico dei filtri, When i risultati cambiano, Then la paginazione si resetta alla pagina 1

Notes

  • I filtri devono essere combinabili (AND logic)
  • La ricerca per testo deve essere case-insensitive
  • Il campo Size contiene taglie multiple separate da virgola (es. "S, M, L") - il filtro per taglia deve cercare all'interno della stringa
  • La ricerca deve funzionare lato server per evitare di caricare tutti i dati nel client

Story Points: 5


Task Breakdown

1. [TASK-001] Aggiungere parametri di filtro all'interfaccia del servizio (Layer: Core)

  • Creare un modello ClothingItemFilter con proprietà: SearchText, Category, MinPrice, MaxPrice, Size
  • Aggiungere metodo GetFilteredPagedAsync(ClothingItemFilter filter, int pageNumber, int pageSize) a IClothingItemService
  • File coinvolti: src/ClaudeClothes.Core/Models/ClothingItemFilter.cs (nuovo), src/ClaudeClothes.Core/Interfaces/IClothingItemService.cs
  • Stima: S

2. [TASK-002] Implementare la logica di filtro nel servizio (Layer: Infrastructure)

  • Implementare GetFilteredPagedAsync in ClothingItemService con query EF Core dinamiche
  • Applicare filtri condizionali con .Where() chainable
  • Ricerca testo su Name e Description con EF.Functions.Like o Contains
  • File coinvolti: src/ClaudeClothes.Infrastructure/Services/ClothingItemService.cs
  • Stima: M

3. [TASK-003] Creare l'interfaccia filtri nella homepage (Layer: Web)

  • Aggiungere barra di ricerca con input text e debounce
  • Aggiungere dropdown per categoria (popolato dalle categorie esistenti)
  • Aggiungere slider o input min/max per il prezzo
  • Aggiungere dropdown per la taglia
  • Aggiungere bottone "Rimuovi filtri"
  • File coinvolti: src/ClaudeClothes.Web/Pages/Index.razor
  • Stima: M

4. [TASK-004] Integrare filtri con paginazione (Layer: Web)

  • Collegare i componenti filtro al metodo del servizio
  • Resettare la paginazione quando i filtri cambiano
  • Gestire lo stato dei filtri nell'URL (query string) per la condivisione
  • File coinvolti: src/ClaudeClothes.Web/Pages/Index.razor
  • Stima: M

5. [TASK-005] Test per ricerca e filtri (Layer: Tests)

  • Test unitari per GetFilteredPagedAsync: filtro per categoria, prezzo, taglia, testo
  • Test per combinazione di filtri multipli
  • Test per filtri che non producono risultati
  • File coinvolti: tests/ClaudeClothes.Tests/ClothingItemServiceTests.cs
  • Stima: M

Metadata

Metadata

Assignees

No one assigned

    Labels

    enhancementNew feature or request

    Type

    No type

    Fields

    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions