ln-721-frontend-restructure

L3 Worker - Restructures React frontend to component-based architecture

Main Workflow

stateDiagram-v2 [*] --> Analyze: Start Restructure state Analyze { [*] --> ScanFiles ScanFiles --> MeasureComplexity MeasureComplexity --> ClassifyComponents ClassifyComponents --> BuildDependencyGraph BuildDependencyGraph --> [*] } Analyze --> Plan: Inventory Ready state Plan { [*] --> ApplyThresholds ApplyThresholds --> CalculatePaths CalculatePaths --> IdentifyImportUpdates IdentifyImportUpdates --> DetectConflicts DetectConflicts --> [*] } Plan --> Execute: Plan Ready state Execute { [*] --> CreateFolders CreateFolders --> ExtractTypes ExtractTypes --> ExtractConstants ExtractConstants --> ExtractHooks ExtractHooks --> ExtractComponents ExtractComponents --> CreateBarrels CreateBarrels --> UpdateImports UpdateImports --> [*] } Execute --> Verify: Restructure Complete state Verify { [*] --> TypeCheck TypeCheck --> Build Build --> CheckOrphans CheckOrphans --> [*] } Verify --> [*]: Success

Component Classification Flow

flowchart TD Start([Analyze Component]) --> Score{Calculate Score} Score --> UI{UI Primitive?} UI -->|Score >= 4| UIFolder[components/ui/] UI -->|Score < 4| Layout{Layout?} Layout -->|Score >= 3| LayoutFolder[components/layout/] Layout -->|Score < 3| Feature{Feature-specific?} Feature -->|Score >= 3| FeatureFolder[pages/Feature/components/] Feature -->|Score < 3| Shared[hooks/ or lib/] UIFolder --> Done([Classification Complete]) LayoutFolder --> Done FeatureFolder --> Done Shared --> Done classDef decision fill:#FFE0B2 classDef target fill:#C8E6C9 class UI,Layout,Feature decision class UIFolder,LayoutFolder,FeatureFolder,Shared target

Extraction Order

sequenceDiagram participant M as Monolithic File participant T as types.ts participant C as constants.ts participant H as hooks.ts participant S as Sub-components participant I as index.tsx Note over M: Original 500+ line file rect rgb(200, 230, 200) Note over M,I: Sequential Extraction (Order Critical) M->>T: 1. Extract interfaces, types, enums M->>C: 2. Extract constants (depend on types) M->>H: 3. Extract hooks (depend on types, constants) M->>S: 4. Extract sub-components (depend on all above) M->>I: 5. Refactor main component (imports from extracted) end Note over I: Clean page component with imports

Import Update Strategy

flowchart LR subgraph Before["Before Restructure"] Old1["import { Button } from '../Button'"] Old2["import { User } from './types'"] Old3["import { useAuth } from '../../hooks/useAuth'"] end subgraph After["After Restructure"] New1["import { Button } from '@/components/ui'"] New2["import type { User } from './types'"] New3["import { useAuth } from '@/hooks'"] end Old1 --> New1 Old2 --> New2 Old3 --> New3 classDef old fill:#FFB6C1 classDef new fill:#90EE90 class Old1,Old2,Old3 old class New1,New2,New3 new

Split Decision Tree

flowchart TD File([Source File]) --> Lines{Lines > 300?} Lines -->|Yes| Split[Create Feature Folder] Lines -->|No| Types{> 3 Types?} Types -->|Yes| ExtractTypes[Extract to types.ts] Types -->|No| Hooks{> 5 Hooks?} Hooks -->|Yes| ExtractHooks[Extract to hooks.ts] Hooks -->|No| Constants{Magic Values?} Constants -->|Yes| ExtractConst[Extract to constants.ts] Constants -->|No| Keep[Keep as Single File] Split --> Done([Apply All Extractions]) ExtractTypes --> Done ExtractHooks --> Done ExtractConst --> Done Keep --> Done classDef threshold fill:#FFE0B2 classDef action fill:#C8E6C9 class Lines,Types,Hooks,Constants threshold class Split,ExtractTypes,ExtractHooks,ExtractConst,Keep action