Skip to content

[P3] Refactor: Split DiscoveryProgress.tsx (1,165 lines) into focused components #278

Description

@frankbria

Problem

DiscoveryProgress.tsx at 1,165 lines is a single-file component handling the entire discovery workflow with 40+ state variables.

Current State

  • File: web-ui/src/components/DiscoveryProgress.tsx (~1,165 lines)
  • Manages: Idle state, question display, answer input, PRD generation, task generation, restart confirmation
  • Contains: Complex phase state machine, progress tracking, error handling

Impact

  • Extremely hard to maintain
  • State management is tangled
  • Testing requires extensive mocking
  • Any change risks regression in unrelated parts

Required Decomposition

New Structure

web-ui/src/components/discovery/
├── DiscoveryProgress.tsx      # Container/state machine (~300 lines)
├── DiscoveryIdle.tsx          # "Start Discovery" prompt
├── DiscoveryQuestion.tsx      # Current question display
├── DiscoveryAnswer.tsx        # Answer input form
├── DiscoveryPRDGeneration.tsx # PRD generation progress
├── DiscoveryTaskGeneration.tsx # Task generation progress
├── DiscoveryComplete.tsx      # Completion state
└── hooks/
    └── useDiscoveryState.ts   # State management hook

State Flow

DiscoveryProgress (container)
    │
    ├── phase === 'idle' → DiscoveryIdle
    ├── phase === 'questioning' → DiscoveryQuestion + DiscoveryAnswer
    ├── phase === 'generating_prd' → DiscoveryPRDGeneration
    ├── phase === 'generating_tasks' → DiscoveryTaskGeneration
    └── phase === 'complete' → DiscoveryComplete

Acceptance Criteria

  • DiscoveryProgress.tsx reduced to <350 lines
  • Each sub-component handles one phase
  • Custom hook extracts state logic
  • All existing tests pass
  • No visual regression

Committee Report Reference

Frontend Architect flagged as "1,165 lines is a single-file component". UX/UI Designer: "Single section tries to serve 4 different phases."

Metadata

Metadata

Assignees

No one assigned

    Labels

    P3-post-betaLow priority - can wait until after beta (v2.0)architectureSystem architecture and design patternsuxv1-legacyV1-specific issue, retained as reference for Phase 3 UI rebuild

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions