/** * Mock pipeline data for Quotes overview (mission control). Replace with API when ready. */ export type QuotePipelineScopeFilter = 'global' | 'corporate' | 'personal' export type QuoteOverviewLob = 'auto' | 'health' | 'life' | 'general_risk' | 'custom' export type QuotePipelineStageId = 'intake' | 'quoted' | 'proposal' | 'bind' | 'handoff' /** * Unified pipeline stage IDs — mirrors PipelineStage from useSalesPipeline. * Used by the quotes overview kanban so both views share one vocabulary. */ export type UnifiedStageId = | 'customer' | 'get_quotes' | 'waiting_carriers' | 'present_quotes' | 'waiting_client' | 'solicitud' | 'emission' export type MockPipelineQuote = { id: string customerLabel: string /** Corporate vs personal — drives pipeline scope filters */ party: 'corporate' | 'personal' lob: QuoteOverviewLob /** Sub-path: single, comparativo, fleet, collective, etc. */ pathLabel: string stage: QuotePipelineStageId /** Unified pipeline stage — same vocabulary as sales pipeline */ unifiedStage: UnifiedStageId owner: string formsDone: number formsTotal: number /** Customer has been notified / has portal activity (mock) */ customerInformed: boolean } export const QUOTE_PIPELINE_STAGES: { id: QuotePipelineStageId; label: string; hint: string }[] = [ { id: 'intake', label: 'Customer Profile', hint: 'Qualify & rate inputs' }, { id: 'quoted', label: 'Quote Prep', hint: 'Options with carrier' }, { id: 'proposal', label: 'Acceptance Pending', hint: 'Out to customer' }, { id: 'bind', label: 'Emission Pending', hint: 'Submit & conditions' }, { id: 'handoff', label: 'Going Live!', hint: 'Policy / solicitud' } ] /** Unified pipeline stages — same as sales pipeline. Used in overview chart. */ export const UNIFIED_PIPELINE_STAGES: { id: UnifiedStageId; label: string; isWaiting: boolean }[] = [ { id: 'customer', label: 'Customer', isWaiting: false }, { id: 'get_quotes', label: 'Get Quotes', isWaiting: false }, { id: 'waiting_carriers', label: 'Awaiting Carriers', isWaiting: true }, { id: 'present_quotes', label: 'Present Quotes', isWaiting: false }, { id: 'waiting_client', label: 'Awaiting Client', isWaiting: true }, { id: 'solicitud', label: 'Solicitud', isWaiting: false }, { id: 'emission', label: 'Emission', isWaiting: false }, ] export const QUOTE_LOB_OPTIONS: { value: QuoteOverviewLob | 'all'; label: string }[] = [ { value: 'all', label: 'All lines' }, { value: 'auto', label: 'Auto' }, { value: 'health', label: 'Health' }, { value: 'life', label: 'Life' }, { value: 'general_risk', label: 'General risk' }, { value: 'custom', label: 'Custom' } ] export const MOCK_PIPELINE_QUOTES: MockPipelineQuote[] = [ { id: 'q-101', customerLabel: 'Transportes Delta S.A.', party: 'corporate', lob: 'auto', pathLabel: 'Fleet', stage: 'quoted', unifiedStage: 'waiting_carriers', owner: 'A. Morales', formsDone: 2, formsTotal: 5, customerInformed: true }, { id: 'q-102', customerLabel: 'María Fernández', party: 'personal', lob: 'auto', pathLabel: 'Comparativo', stage: 'proposal', unifiedStage: 'present_quotes', owner: 'L. Chen', formsDone: 4, formsTotal: 4, customerInformed: true }, { id: 'q-103', customerLabel: 'J. Pérez', party: 'personal', lob: 'auto', pathLabel: 'Single', stage: 'intake', unifiedStage: 'customer', owner: 'L. Chen', formsDone: 0, formsTotal: 3, customerInformed: false }, { id: 'q-201', customerLabel: 'Clínica Norte', party: 'corporate', lob: 'health', pathLabel: 'Collective', stage: 'bind', unifiedStage: 'solicitud', owner: 'R. Vega', formsDone: 6, formsTotal: 8, customerInformed: true }, { id: 'q-202', customerLabel: 'Familia Ortega', party: 'personal', lob: 'health', pathLabel: 'Family', stage: 'quoted', unifiedStage: 'get_quotes', owner: 'A. Morales', formsDone: 3, formsTotal: 6, customerInformed: true }, { id: 'q-203', customerLabel: 'Startup Labs', party: 'corporate', lob: 'health', pathLabel: 'Travel', stage: 'intake', unifiedStage: 'customer', owner: 'R. Vega', formsDone: 1, formsTotal: 4, customerInformed: false }, { id: 'q-301', customerLabel: 'Holdings Centro', party: 'corporate', lob: 'life', pathLabel: 'Key person', stage: 'proposal', unifiedStage: 'waiting_client', owner: 'L. Chen', formsDone: 2, formsTotal: 5, customerInformed: true }, { id: 'q-302', customerLabel: 'Carlos Méndez', party: 'personal', lob: 'life', pathLabel: 'Individual', stage: 'handoff', unifiedStage: 'emission', owner: 'A. Morales', formsDone: 5, formsTotal: 5, customerInformed: true }, { id: 'q-401', customerLabel: 'Retail Plaza', party: 'corporate', lob: 'general_risk', pathLabel: 'Corporate', stage: 'quoted', unifiedStage: 'waiting_carriers', owner: 'R. Vega', formsDone: 3, formsTotal: 7, customerInformed: false }, { id: 'q-402', customerLabel: 'Ana Ríos', party: 'personal', lob: 'general_risk', pathLabel: 'Personal', stage: 'intake', unifiedStage: 'get_quotes', owner: 'L. Chen', formsDone: 1, formsTotal: 4, customerInformed: true }, { id: 'q-501', customerLabel: 'Phone-in — manual rate', party: 'personal', lob: 'custom', pathLabel: 'Manual entry', stage: 'proposal', unifiedStage: 'present_quotes', owner: 'R. Vega', formsDone: 0, formsTotal: 2, customerInformed: false } ]