WIP jordan

This commit is contained in:
Jordan Weingarten
2026-04-16 11:11:44 -05:00
parent ff2d7b18b5
commit 67482f6629
163 changed files with 50627 additions and 728 deletions

View File

@@ -0,0 +1,214 @@
/**
* 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
}
]