# Complete Flow Segregation - Implementation Summary ## Overview This document describes the **complete segregation** of request flows into dedicated folders. Each flow type (CUSTOM, DEALER_CLAIM) now has ALL its related components, hooks, services, utilities, and types in its own folder. Only truly shared components remain in the `shared/` folder. ## What Was Done ### 1. Created Complete Folder Structure #### Custom Flow (`src/flows/custom/`) ``` custom/ ├── components/ │ ├── request-detail/ │ │ ├── OverviewTab.tsx # Custom request overview │ │ └── WorkflowTab.tsx # Custom request workflow │ └── request-creation/ │ └── CreateRequest.tsx # Custom request creation └── index.ts # Exports all custom components ``` #### Dealer Claim Flow (`src/flows/dealer-claim/`) ``` dealer-claim/ ├── components/ │ ├── request-detail/ │ │ ├── OverviewTab.tsx # Dealer claim overview │ │ ├── WorkflowTab.tsx # Dealer claim workflow │ │ ├── IOTab.tsx # IO management (dealer claim specific) │ │ ├── claim-cards/ # All dealer claim cards │ │ │ ├── ActivityInformationCard.tsx │ │ │ ├── DealerInformationCard.tsx │ │ │ ├── ProcessDetailsCard.tsx │ │ │ ├── ProposalDetailsCard.tsx │ │ │ └── RequestInitiatorCard.tsx │ │ └── modals/ # All dealer claim modals │ │ ├── CreditNoteSAPModal.tsx │ │ ├── DealerCompletionDocumentsModal.tsx │ │ ├── DealerProposalSubmissionModal.tsx │ │ ├── DeptLeadIOApprovalModal.tsx │ │ ├── EditClaimAmountModal.tsx │ │ ├── EmailNotificationTemplateModal.tsx │ │ └── InitiatorProposalApprovalModal.tsx │ └── request-creation/ │ └── ClaimManagementWizard.tsx # Dealer claim creation └── index.ts # Exports all dealer claim components ``` #### Shared Components (`src/flows/shared/`) ``` shared/ └── components/ └── request-detail/ ├── DocumentsTab.tsx # Used by all flows ├── ActivityTab.tsx # Used by all flows ├── WorkNotesTab.tsx # Used by all flows ├── SummaryTab.tsx # Used by all flows ├── RequestDetailHeader.tsx # Used by all flows ├── QuickActionsSidebar.tsx # Used by all flows └── RequestDetailModals.tsx # Used by all flows ``` ### 2. Updated Flow Registry The flow registry (`src/flows/index.ts`) now: - Exports all flow modules - Provides utility functions to get flow-specific components - Includes `getCreateRequestComponent()` for request creation - Exports `SharedComponents` for shared components ### 3. Updated RequestDetail Component The `RequestDetail` component now: - Uses flow registry to get flow-specific components - Imports shared components from `SharedComponents` - Dynamically loads appropriate tabs based on flow type - Maintains backward compatibility ## File Organization Rules ### ✅ Flow-Specific Files → Flow Folders **Custom Flow:** - Custom request creation wizard - Custom request detail tabs (Overview, Workflow) - Custom request hooks (future) - Custom request services (future) - Custom request utilities (future) - Custom request types (future) **Dealer Claim Flow:** - Dealer claim creation wizard - Dealer claim detail tabs (Overview, Workflow, IO) - Dealer claim cards (Activity, Dealer, Process, Proposal, Initiator) - Dealer claim modals (all 7 modals) - Dealer claim hooks (future) - Dealer claim services (future) - Dealer claim utilities (future) - Dealer claim types (future) ### ✅ Shared Files → Shared Folder **Shared Components:** - DocumentsTab (used by all flows) - ActivityTab (used by all flows) - WorkNotesTab (used by all flows) - SummaryTab (used by all flows) - RequestDetailHeader (used by all flows) - QuickActionsSidebar (used by all flows) - RequestDetailModals (used by all flows) ## Usage Examples ### Getting Flow-Specific Components ```typescript import { getOverviewTab, getWorkflowTab, getCreateRequestComponent } from '@/flows'; import { getRequestFlowType } from '@/utils/requestTypeUtils'; const flowType = getRequestFlowType(request); const OverviewTab = getOverviewTab(flowType); const WorkflowTab = getWorkflowTab(flowType); const CreateRequest = getCreateRequestComponent(flowType); ``` ### Using Shared Components ```typescript import { SharedComponents } from '@/flows'; const { DocumentsTab, ActivityTab, WorkNotesTab, SummaryTab } = SharedComponents; ``` ### Direct Access to Flow Components ```typescript import { CustomFlow, DealerClaimFlow } from '@/flows'; // Custom flow // Dealer claim flow ``` ## Benefits 1. **Complete Segregation**: Each flow is completely isolated 2. **Easy Navigation**: All files for a flow type are in one place 3. **Maintainability**: Changes to one flow don't affect others 4. **Scalability**: Easy to add new flow types 5. **Clarity**: Clear separation between flow-specific and shared code 6. **Type Safety**: TypeScript ensures correct usage ## Next Steps (Future Enhancements) 1. **Move Flow-Specific Hooks** - Custom hooks → `flows/custom/hooks/` - Dealer claim hooks → `flows/dealer-claim/hooks/` 2. **Move Flow-Specific Services** - Custom services → `flows/custom/services/` - Dealer claim services → `flows/dealer-claim/services/` 3. **Move Flow-Specific Utilities** - Custom utilities → `flows/custom/utils/` - Dealer claim utilities → `flows/dealer-claim/utils/` 4. **Move Flow-Specific Types** - Custom types → `flows/custom/types/` - Dealer claim types → `flows/dealer-claim/types/` ## Files Created ### Custom Flow - `src/flows/custom/components/request-detail/OverviewTab.tsx` - `src/flows/custom/components/request-detail/WorkflowTab.tsx` - `src/flows/custom/components/request-creation/CreateRequest.tsx` - `src/flows/custom/index.ts` (updated) ### Dealer Claim Flow - `src/flows/dealer-claim/components/request-detail/OverviewTab.tsx` - `src/flows/dealer-claim/components/request-detail/WorkflowTab.tsx` - `src/flows/dealer-claim/components/request-detail/IOTab.tsx` - `src/flows/dealer-claim/components/request-detail/claim-cards/index.ts` - `src/flows/dealer-claim/components/request-detail/modals/index.ts` - `src/flows/dealer-claim/components/request-creation/ClaimManagementWizard.tsx` - `src/flows/dealer-claim/index.ts` (updated) ### Shared Components - `src/flows/shared/components/request-detail/DocumentsTab.tsx` - `src/flows/shared/components/request-detail/ActivityTab.tsx` - `src/flows/shared/components/request-detail/WorkNotesTab.tsx` - `src/flows/shared/components/request-detail/SummaryTab.tsx` - `src/flows/shared/components/request-detail/RequestDetailHeader.tsx` - `src/flows/shared/components/request-detail/QuickActionsSidebar.tsx` - `src/flows/shared/components/request-detail/RequestDetailModals.tsx` - `src/flows/shared/components/index.ts` (updated) ### Registry - `src/flows/index.ts` (updated with new structure) ## Files Modified - `src/pages/RequestDetail/RequestDetail.tsx` - Uses new flow structure - `src/flows/README.md` - Updated with complete segregation documentation ## Conclusion The complete segregation is now in place. Each flow type has its own dedicated folder with all related components. This makes it easy to: - Find all files related to a specific flow type - Maintain and update flow-specific code - Add new flow types without affecting existing ones - Understand what is shared vs. flow-specific The architecture is now truly modular and plug-and-play!