[UX] Tier 1: Enhanced Session History Search & Filtering #35

Closed
opened 2026-02-07 18:53:04 +00:00 by chihlasm · 0 comments
chihlasm commented 2026-02-07 18:53:04 +00:00 (Migrated from github.com)

Overview

Implement comprehensive search and filtering capabilities for Session History to dramatically improve findability of past troubleshooting sessions.

Context

Engineers need to quickly reference past sessions by ticket number, client name, date, or tree used. Current implementation only has:

  • Basic tab filter (all/active/completed)
  • No full-text search
  • No date range filtering
  • Tree name hidden in tree_snapshot JSONB

Research shows well-designed search can improve task completion by 75%.

Features to Implement

  • Search input with instant filtering
  • Matches ticket_number field
  • "No ticket" sessions excluded from ticket search

2. Client Name Search/Filter

  • Search input OR dropdown filter
  • Matches client_name field
  • Show client badge in session list

3. Date Range Filtering

  • Date range picker component
  • Filter by started_at OR completed_at
  • Quick presets: Today, This Week, Last 7 Days, This Month
  • Clear visual indicator when date filter active

4. Tree Name Filter

  • Dropdown showing all trees user has access to
  • Extract tree name from tree_snapshot.name
  • Show tree name in session list cards

5. Combined Search UI

  • Toolbar above session list
  • Filter chips showing active filters
  • "Clear all" button
  • Filter state persists during session (URL params)

Technical Approach

Backend Changes

  • Update GET /api/v1/sessions endpoint:
    • Add ticket_number query param (ILIKE search)
    • Add client_name query param (ILIKE search)
    • Add tree_name query param (JSONB path query)
    • Add started_after / started_before query params
    • Add completed_after / completed_before query params
  • Consider adding tree_name field to Session model for performance

Frontend Changes

  • Create SessionFilters component
  • Add filter state to SessionHistoryPage
  • Integrate date picker library (react-day-picker or similar)
  • Update session list API calls with filter params
  • Show tree name in session card
  • Add filter chips with remove buttons

Acceptance Criteria

  • Search by ticket number (partial match)
  • Search by client name (partial match)
  • Filter by date range (started or completed)
  • Filter by tree name
  • Multiple filters work together (AND logic)
  • Active filters shown as removable chips
  • "Clear all filters" resets to default view
  • Search is fast (<300ms for typical result set)
  • Filter state in URL (shareable links)

Performance Considerations

  • Add database indexes on ticket_number, client_name, started_at
  • Debounce search input (300ms)
  • JSONB index on tree_snapshot->'name' if query is slow

Estimated Effort

2-3 days (backend + frontend work)

Priority

Critical - Engineers rely heavily on searching past sessions for documentation and troubleshooting patterns

## Overview Implement comprehensive search and filtering capabilities for Session History to dramatically improve findability of past troubleshooting sessions. ## Context Engineers need to quickly reference past sessions by ticket number, client name, date, or tree used. Current implementation only has: - Basic tab filter (all/active/completed) - No full-text search - No date range filtering - Tree name hidden in `tree_snapshot` JSONB Research shows well-designed search can improve task completion by 75%. ## Features to Implement ### 1. Ticket Number Search - Search input with instant filtering - Matches ticket_number field - "No ticket" sessions excluded from ticket search ### 2. Client Name Search/Filter - Search input OR dropdown filter - Matches client_name field - Show client badge in session list ### 3. Date Range Filtering - Date range picker component - Filter by `started_at` OR `completed_at` - Quick presets: Today, This Week, Last 7 Days, This Month - Clear visual indicator when date filter active ### 4. Tree Name Filter - Dropdown showing all trees user has access to - Extract tree name from `tree_snapshot.name` - Show tree name in session list cards ### 5. Combined Search UI - Toolbar above session list - Filter chips showing active filters - "Clear all" button - Filter state persists during session (URL params) ## Technical Approach ### Backend Changes - Update `GET /api/v1/sessions` endpoint: - Add `ticket_number` query param (ILIKE search) - Add `client_name` query param (ILIKE search) - Add `tree_name` query param (JSONB path query) - Add `started_after` / `started_before` query params - Add `completed_after` / `completed_before` query params - Consider adding `tree_name` field to Session model for performance ### Frontend Changes - Create `SessionFilters` component - Add filter state to `SessionHistoryPage` - Integrate date picker library (react-day-picker or similar) - Update session list API calls with filter params - Show tree name in session card - Add filter chips with remove buttons ## Acceptance Criteria - [ ] Search by ticket number (partial match) - [ ] Search by client name (partial match) - [ ] Filter by date range (started or completed) - [ ] Filter by tree name - [ ] Multiple filters work together (AND logic) - [ ] Active filters shown as removable chips - [ ] "Clear all filters" resets to default view - [ ] Search is fast (<300ms for typical result set) - [ ] Filter state in URL (shareable links) ## Performance Considerations - Add database indexes on `ticket_number`, `client_name`, `started_at` - Debounce search input (300ms) - JSONB index on `tree_snapshot->'name'` if query is slow ## Estimated Effort 2-3 days (backend + frontend work) ## Priority **Critical** - Engineers rely heavily on searching past sessions for documentation and troubleshooting patterns
Sign in to join this conversation.
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: chihlasm/resolutionflow#35