forked from sagnik/Project_Velocity
456 lines
18 KiB
TypeScript
456 lines
18 KiB
TypeScript
/**
|
|
* Oracle Demo Data — In-memory seed canvas used when backend is not available.
|
|
* Preserves visual richness while the system is in development/demo mode.
|
|
* These objects conform exactly to the CanvasPage/CanvasComponent contract.
|
|
*/
|
|
|
|
import type { CanvasPage, UserProfile, CanvasComponent } from '../types/canvas';
|
|
|
|
// ── Demo user profile ─────────────────────────────────────────────────────────
|
|
|
|
export const IN_MEMORY_ME: UserProfile = {
|
|
userId: 'user_sales_director_001',
|
|
tenantId: 'tenant_binghatti_demo',
|
|
email: 'ahmed.alfarsi@binghatti.ae',
|
|
displayName: 'Ahmed Al-Farsi',
|
|
role: 'sales_director',
|
|
timezone: 'Asia/Dubai',
|
|
locale: 'en-AE',
|
|
defaultPageId: 'page_01_main_broker',
|
|
canvasPreferences: {
|
|
defaultDensity: 'comfortable',
|
|
defaultPlacementMode: 'append_after_last_visible_component',
|
|
showLineageBadges: true,
|
|
},
|
|
policyProfileId: 'policy_sales_director_standard_v4',
|
|
createdAt: '2026-01-15T09:00:00Z',
|
|
updatedAt: '2026-04-09T00:00:00Z',
|
|
};
|
|
|
|
// ── Default style signature ───────────────────────────────────────────────────
|
|
|
|
const VELOCITY_GLASS_STYLE = {
|
|
theme: 'velocity_glass',
|
|
paletteToken: 'ocean_signal',
|
|
motionProfile: 'calm_reveal',
|
|
density: 'comfortable' as const,
|
|
radiusScale: 'lg',
|
|
typographyScale: 'balanced',
|
|
};
|
|
|
|
// ── Demo components ───────────────────────────────────────────────────────────
|
|
|
|
const PIPELINE_BOARD: CanvasComponent = {
|
|
componentId: 'cmp_demo_pipeline_board',
|
|
type: 'pipelineBoard',
|
|
title: 'Active Pipeline by Stage',
|
|
description: 'Current deal distribution across funnel stages for Q2 2026.',
|
|
dataSourceDescriptor: {
|
|
descriptorId: 'dsd_demo_pipeline',
|
|
sourceType: 'postgres',
|
|
connectorId: 'velocity-core-postgres',
|
|
dataset: 'deals',
|
|
authContextRef: 'authctx_sales_director_team_scope',
|
|
queryTemplate: 'SELECT stage, COUNT(*) as count, SUM(value) as value FROM deals WHERE tenant_id = :tenant_id GROUP BY stage',
|
|
queryParameters: { tenant_id: 'tenant_binghatti_demo' },
|
|
rowLimit: 100,
|
|
freshnessSlaSeconds: 120,
|
|
cachePolicy: { mode: 'ttl', ttlSeconds: 120 },
|
|
privacyTier: 'standard',
|
|
lineageRefs: [],
|
|
},
|
|
visualizationParameters: {
|
|
stages: ['New Leads', 'Qualified', 'Proposal Sent', 'Negotiation'],
|
|
showValue: true,
|
|
colorByStage: true,
|
|
},
|
|
dataBindings: {
|
|
dimensions: ['stage'],
|
|
measures: ['count', 'value'],
|
|
series: [],
|
|
filters: [],
|
|
},
|
|
version: 1,
|
|
provenance: {
|
|
originType: 'catalog',
|
|
templateId: 'tpl_pipeline_board_v2',
|
|
promptExecutionId: 'pex_demo_seed_001',
|
|
createdBy: 'user_sales_director_001',
|
|
createdAt: '2026-04-09T08:00:00Z',
|
|
},
|
|
renderingHints: {
|
|
estimatedHeightPx: 400,
|
|
skeletonVariant: 'pipeline',
|
|
virtualizationPriority: 9,
|
|
},
|
|
layout: {
|
|
orderIndex: 100,
|
|
sectionId: 'sec_pipeline',
|
|
widthMode: 'full',
|
|
minHeightPx: 380,
|
|
stickyHeader: false,
|
|
},
|
|
accessControls: {
|
|
visibilityScope: 'private',
|
|
allowedRoles: ['senior_broker', 'sales_director'],
|
|
redactionPolicy: 'none',
|
|
},
|
|
styleSignature: VELOCITY_GLASS_STYLE,
|
|
validationState: {
|
|
schema: 'pass',
|
|
policy: 'pass',
|
|
a11y: 'pass',
|
|
performance: 'pass',
|
|
status: 'validated',
|
|
},
|
|
auditLog: ['aud_demo_create_001'],
|
|
dataRows: [
|
|
{ stage: 'New Leads', count: 14, value: 18500000, leads: [
|
|
{ id: 'l1', name: 'Mohammed Al-Rashid', company: 'Rashid Group', value: 'AED 15M', avatar: 'https://images.unsplash.com/photo-1507003211169-0a1dd7228f2d?auto=format&fit=crop&w=80&q=80' },
|
|
{ id: 'l2', name: 'Sarah Chen', company: 'Chen Capital', value: 'AED 8M', avatar: 'https://images.unsplash.com/photo-1494790108377-be9c29b29330?auto=format&fit=crop&w=80&q=80' },
|
|
{ id: 'l3', name: 'James Wilson', company: 'Wilson RE', value: 'AED 4.5M', avatar: 'https://images.unsplash.com/photo-1506794778202-cad84cf45f1d?auto=format&fit=crop&w=80&q=80' },
|
|
]},
|
|
{ stage: 'Qualified', count: 9, value: 42000000, leads: [
|
|
{ id: 'l4', name: 'Fatima Hassan', company: 'Hassan Holdings', value: 'AED 22M', avatar: 'https://images.unsplash.com/photo-1554151228-14d9def656e4?auto=format&fit=crop&w=80&q=80' },
|
|
{ id: 'l5', name: 'David Kumar', company: 'Kumar RE', value: 'AED 20M', avatar: 'https://images.unsplash.com/photo-1472099645785-5658abf4ff4e?auto=format&fit=crop&w=80&q=80' },
|
|
]},
|
|
{ stage: 'Proposal Sent', count: 5, value: 28000000, leads: [
|
|
{ id: 'l6', name: 'Elena Rostova', company: 'Rostova Ventures', value: 'AED 12M', avatar: 'https://images.unsplash.com/photo-1487412720507-e7ab37603c6f?auto=format&fit=crop&w=80&q=80' },
|
|
{ id: 'l7', name: 'Oliver Park', company: 'Park Investments', value: 'AED 16M', avatar: 'https://images.unsplash.com/photo-1560250097-0b93528c311a?auto=format&fit=crop&w=80&q=80' },
|
|
]},
|
|
{ stage: 'Negotiation', count: 3, value: 65000000, leads: [
|
|
{ id: 'l8', name: 'Priya Sharma', company: 'Sharma Family Office', value: 'AED 32M', avatar: 'https://images.unsplash.com/photo-1542206395-9feb3edaa68d?auto=format&fit=crop&w=80&q=80' },
|
|
{ id: 'l9', name: 'Carlos Mendez', company: 'Mendez Capital', value: 'AED 33M', avatar: 'https://images.unsplash.com/photo-1500648767791-00dcc994a43e?auto=format&fit=crop&w=80&q=80' },
|
|
]},
|
|
],
|
|
};
|
|
|
|
const WHALE_LEADS_BAR: CanvasComponent = {
|
|
componentId: 'cmp_demo_whale_bar',
|
|
type: 'barChart',
|
|
title: 'Whale Leads by Source This Week',
|
|
description: 'Compares QD-weighted whale lead volume across lead sources in the current week.',
|
|
dataSourceDescriptor: {
|
|
descriptorId: 'dsd_demo_whale_bar',
|
|
sourceType: 'postgres',
|
|
connectorId: 'velocity-core-postgres',
|
|
dataset: 'lead_daily_snapshot',
|
|
authContextRef: 'authctx_sales_director_team_scope',
|
|
queryTemplate: "SELECT source, SUM(qd_weighted_score) as qd_weighted_volume FROM lead_daily_snapshot WHERE tenant_id = :tenant_id AND lead_class = 'whale' GROUP BY source ORDER BY qd_weighted_volume DESC",
|
|
queryParameters: { tenant_id: 'tenant_binghatti_demo' },
|
|
rowLimit: 20,
|
|
freshnessSlaSeconds: 120,
|
|
cachePolicy: { mode: 'ttl', ttlSeconds: 120 },
|
|
privacyTier: 'standard',
|
|
lineageRefs: ['lin_demo_leadsnap'],
|
|
},
|
|
visualizationParameters: {
|
|
xAxis: 'source',
|
|
yAxis: 'qd_weighted_volume',
|
|
sort: 'desc',
|
|
showLabels: true,
|
|
colorScale: ['#0EA5E9', '#22D3EE', '#3B82F6'],
|
|
legend: false,
|
|
},
|
|
dataBindings: {
|
|
dimensions: ['source'],
|
|
measures: ['qd_weighted_volume'],
|
|
series: [],
|
|
filters: [{ field: 'lead_class', operator: '=', value: 'whale' }],
|
|
},
|
|
version: 1,
|
|
provenance: {
|
|
originType: 'prompt_generated',
|
|
templateId: 'tpl_bar_source_quality_v3',
|
|
promptExecutionId: 'pex_demo_seed_002',
|
|
createdBy: 'user_sales_director_001',
|
|
createdAt: '2026-04-09T10:00:00Z',
|
|
},
|
|
renderingHints: {
|
|
estimatedHeightPx: 340,
|
|
skeletonVariant: 'chart',
|
|
virtualizationPriority: 8,
|
|
},
|
|
layout: {
|
|
orderIndex: 200,
|
|
sectionId: 'sec_leads',
|
|
widthMode: 'half',
|
|
minHeightPx: 320,
|
|
stickyHeader: false,
|
|
},
|
|
accessControls: {
|
|
visibilityScope: 'private',
|
|
allowedRoles: ['senior_broker', 'sales_director', 'marketing_operator'],
|
|
redactionPolicy: 'aggregate_only',
|
|
},
|
|
styleSignature: { ...VELOCITY_GLASS_STYLE, paletteToken: 'ocean_signal' },
|
|
validationState: { schema: 'pass', policy: 'pass', a11y: 'pass', performance: 'pass', status: 'validated' },
|
|
auditLog: ['aud_demo_create_002'],
|
|
dataRows: [
|
|
{ source: 'WhatsApp', qd_weighted_volume: 182.4 },
|
|
{ source: 'Website', qd_weighted_volume: 149.2 },
|
|
{ source: 'Walk-in', qd_weighted_volume: 93.7 },
|
|
{ source: 'Referral', qd_weighted_volume: 87.1 },
|
|
{ source: 'Instagram', qd_weighted_volume: 54.3 },
|
|
],
|
|
};
|
|
|
|
const INVESTOR_GEO_MAP: CanvasComponent = {
|
|
componentId: 'cmp_demo_geo_investor',
|
|
type: 'geoMap',
|
|
title: 'Investor Interest Density by Dubai District',
|
|
description: 'Maps high-intent leads with at least one positive Sentinel spike in the last 30 days.',
|
|
dataSourceDescriptor: {
|
|
descriptorId: 'dsd_demo_geo',
|
|
sourceType: 'derived_dataset',
|
|
connectorId: 'velocity-core-postgres',
|
|
dataset: 'lead_geo_interest_rollup',
|
|
authContextRef: 'authctx_sales_director_team_scope',
|
|
queryTemplate: 'SELECT district, lat, lng, lead_count, avg_qd_score FROM lead_geo_interest_rollup WHERE tenant_id = :tenant_id AND activity_window = :window',
|
|
queryParameters: { tenant_id: 'tenant_binghatti_demo', window: '30d' },
|
|
rowLimit: 100,
|
|
freshnessSlaSeconds: 300,
|
|
cachePolicy: { mode: 'ttl', ttlSeconds: 300 },
|
|
privacyTier: 'restricted',
|
|
lineageRefs: ['lin_demo_rollup', 'lin_demo_sentinel'],
|
|
},
|
|
visualizationParameters: {
|
|
mapStyle: 'dubai_district_heat',
|
|
intensityField: 'lead_count',
|
|
tooltipFields: ['district', 'lead_count', 'avg_qd_score'],
|
|
interactive: true,
|
|
},
|
|
dataBindings: {
|
|
dimensions: ['district'],
|
|
measures: ['lead_count', 'avg_qd_score'],
|
|
series: ['district'],
|
|
filters: [{ field: 'activity_window', operator: '=', value: '30d' }],
|
|
},
|
|
version: 1,
|
|
provenance: {
|
|
originType: 'catalog',
|
|
templateId: 'tpl_geo_investor_heat_v2',
|
|
promptExecutionId: 'pex_demo_seed_002',
|
|
createdBy: 'user_sales_director_001',
|
|
createdAt: '2026-04-09T10:00:01Z',
|
|
},
|
|
renderingHints: {
|
|
estimatedHeightPx: 420,
|
|
skeletonVariant: 'map',
|
|
virtualizationPriority: 9,
|
|
},
|
|
layout: {
|
|
orderIndex: 300,
|
|
sectionId: 'sec_leads',
|
|
widthMode: 'half',
|
|
minHeightPx: 400,
|
|
stickyHeader: false,
|
|
},
|
|
accessControls: {
|
|
visibilityScope: 'private',
|
|
allowedRoles: ['senior_broker', 'sales_director'],
|
|
redactionPolicy: 'district_level_only',
|
|
},
|
|
styleSignature: { ...VELOCITY_GLASS_STYLE, paletteToken: 'aqua_signal' },
|
|
validationState: { schema: 'pass', policy: 'pass', a11y: 'pass', performance: 'pass', status: 'validated' },
|
|
auditLog: ['aud_demo_create_003'],
|
|
dataRows: [
|
|
{ district: 'Downtown Dubai', lat: 25.1972, lng: 55.2744, lead_count: 38, avg_qd_score: 87.2, x: 52, y: 48 },
|
|
{ district: 'Dubai Marina', lat: 25.0777, lng: 55.1386, lead_count: 29, avg_qd_score: 82.1, x: 28, y: 68 },
|
|
{ district: 'Palm Jumeirah', lat: 25.1124, lng: 55.1390, lead_count: 24, avg_qd_score: 91.4, x: 22, y: 60 },
|
|
{ district: 'Business Bay', lat: 25.1850, lng: 55.2617, lead_count: 19, avg_qd_score: 74.8, x: 48, y: 44 },
|
|
{ district: 'Dubai Hills', lat: 25.1124, lng: 55.2454, lead_count: 15, avg_qd_score: 71.3, x: 44, y: 58 },
|
|
{ district: 'JBR', lat: 25.0794, lng: 55.1322, lead_count: 11, avg_qd_score: 68.9, x: 26, y: 70 },
|
|
{ district: 'DIFC', lat: 25.2048, lng: 55.2708, lead_count: 9, avg_qd_score: 79.5, x: 50, y: 38 },
|
|
],
|
|
};
|
|
|
|
const BROKER_PERFORMANCE: CanvasComponent = {
|
|
componentId: 'cmp_demo_broker_perf',
|
|
type: 'table',
|
|
title: 'Broker Performance Leaderboard',
|
|
description: 'Ranked by QD-adjusted deal value closed this month.',
|
|
dataSourceDescriptor: {
|
|
descriptorId: 'dsd_demo_brokers',
|
|
sourceType: 'postgres',
|
|
connectorId: 'velocity-core-postgres',
|
|
dataset: 'broker_performance',
|
|
authContextRef: 'authctx_sales_director_team_scope',
|
|
queryTemplate: 'SELECT broker_id, name, deals_closed, revenue_generated, avg_response_time_min FROM broker_performance WHERE tenant_id = :tenant_id ORDER BY revenue_generated DESC',
|
|
queryParameters: { tenant_id: 'tenant_binghatti_demo' },
|
|
rowLimit: 20,
|
|
freshnessSlaSeconds: 300,
|
|
cachePolicy: { mode: 'ttl', ttlSeconds: 300 },
|
|
privacyTier: 'standard',
|
|
lineageRefs: [],
|
|
},
|
|
visualizationParameters: {
|
|
columns: ['name', 'deals_closed', 'revenue_generated', 'avg_response_time_min'],
|
|
rankBy: 'revenue_generated',
|
|
showTopBadge: true,
|
|
},
|
|
dataBindings: {
|
|
dimensions: ['name'],
|
|
measures: ['deals_closed', 'revenue_generated'],
|
|
series: [],
|
|
filters: [],
|
|
},
|
|
version: 1,
|
|
provenance: {
|
|
originType: 'catalog',
|
|
templateId: 'tpl_broker_performance_v1',
|
|
promptExecutionId: 'pex_demo_seed_003',
|
|
createdBy: 'user_sales_director_001',
|
|
createdAt: '2026-04-09T11:00:00Z',
|
|
},
|
|
renderingHints: {
|
|
estimatedHeightPx: 320,
|
|
skeletonVariant: 'table',
|
|
virtualizationPriority: 7,
|
|
},
|
|
layout: {
|
|
orderIndex: 400,
|
|
sectionId: 'sec_team',
|
|
widthMode: 'full',
|
|
minHeightPx: 300,
|
|
stickyHeader: true,
|
|
},
|
|
accessControls: {
|
|
visibilityScope: 'private',
|
|
allowedRoles: ['sales_director'],
|
|
redactionPolicy: 'none',
|
|
},
|
|
styleSignature: { ...VELOCITY_GLASS_STYLE, paletteToken: 'indigo_signal' },
|
|
validationState: { schema: 'pass', policy: 'pass', a11y: 'pass', performance: 'pass', status: 'validated' },
|
|
auditLog: ['aud_demo_create_004'],
|
|
dataRows: [
|
|
{ name: 'Elena Rostova', deals_closed: 12, revenue_generated: 'AED 28.4M', avg_response_time_min: 8, rank: 1, avatar: 'https://images.unsplash.com/photo-1494790108377-be9c29b29330?auto=format&fit=crop&w=80&q=80' },
|
|
{ name: 'Priya Sharma', deals_closed: 10, revenue_generated: 'AED 24.1M', avg_response_time_min: 11, rank: 2, avatar: 'https://images.unsplash.com/photo-1554151228-14d9def656e4?auto=format&fit=crop&w=80&q=80' },
|
|
{ name: 'Carlos Mendez', deals_closed: 9, revenue_generated: 'AED 19.7M', avg_response_time_min: 14, rank: 3, avatar: 'https://images.unsplash.com/photo-1472099645785-5658abf4ff4e?auto=format&fit=crop&w=80&q=80' },
|
|
{ name: 'Ravi Kapoor', deals_closed: 7, revenue_generated: 'AED 15.2M', avg_response_time_min: 22, rank: 4, avatar: 'https://images.unsplash.com/photo-1507003211169-0a1dd7228f2d?auto=format&fit=crop&w=80&q=80' },
|
|
{ name: 'Minati Ganrison', deals_closed: 6, revenue_generated: 'AED 11.8M', avg_response_time_min: 19, rank: 5, avatar: 'https://images.unsplash.com/photo-1487412720507-e7ab37603c6f?auto=format&fit=crop&w=80&q=80' },
|
|
],
|
|
};
|
|
|
|
const FOLLOWUP_QUEUE: CanvasComponent = {
|
|
componentId: 'cmp_demo_followup_queue',
|
|
type: 'activityStream',
|
|
title: 'Follow-up Gap Queue',
|
|
description: 'High-scoring leads with no contact in the last 72 hours.',
|
|
dataSourceDescriptor: {
|
|
descriptorId: 'dsd_demo_queue',
|
|
sourceType: 'postgres',
|
|
connectorId: 'velocity-core-postgres',
|
|
dataset: 'lead_follow_up_gaps',
|
|
authContextRef: 'authctx_sales_director_team_scope',
|
|
queryTemplate: 'SELECT lead_id, name, last_contact_hours_ago, qd_score, assigned_broker FROM lead_follow_up_gaps WHERE tenant_id = :tenant_id AND last_contact_hours_ago > 72 ORDER BY qd_score DESC',
|
|
queryParameters: { tenant_id: 'tenant_binghatti_demo' },
|
|
rowLimit: 10,
|
|
freshnessSlaSeconds: 60,
|
|
cachePolicy: { mode: 'ttl', ttlSeconds: 60 },
|
|
privacyTier: 'restricted',
|
|
lineageRefs: ['lin_demo_sentinel'],
|
|
},
|
|
visualizationParameters: {
|
|
showUrgencyIndicator: true,
|
|
enableQuickAction: true,
|
|
quickActions: ['call', 'whatsapp', 'email', 'assign'],
|
|
},
|
|
dataBindings: {
|
|
dimensions: ['name', 'assigned_broker'],
|
|
measures: ['qd_score', 'last_contact_hours_ago'],
|
|
series: [],
|
|
filters: [{ field: 'last_contact_hours_ago', operator: '>', value: 72 }],
|
|
},
|
|
version: 1,
|
|
provenance: {
|
|
originType: 'catalog',
|
|
templateId: 'tpl_followup_queue_v1',
|
|
promptExecutionId: 'pex_demo_seed_004',
|
|
createdBy: 'user_sales_director_001',
|
|
createdAt: '2026-04-09T12:00:00Z',
|
|
},
|
|
renderingHints: {
|
|
estimatedHeightPx: 380,
|
|
skeletonVariant: 'table',
|
|
virtualizationPriority: 10,
|
|
},
|
|
layout: {
|
|
orderIndex: 500,
|
|
sectionId: 'sec_actions',
|
|
widthMode: 'full',
|
|
minHeightPx: 360,
|
|
stickyHeader: false,
|
|
},
|
|
accessControls: {
|
|
visibilityScope: 'private',
|
|
allowedRoles: ['senior_broker', 'sales_director'],
|
|
redactionPolicy: 'team_scope',
|
|
},
|
|
styleSignature: { ...VELOCITY_GLASS_STYLE, paletteToken: 'amber_signal' },
|
|
validationState: { schema: 'pass', policy: 'pass', a11y: 'pass', performance: 'pass', status: 'validated' },
|
|
auditLog: ['aud_demo_create_005'],
|
|
dataRows: [
|
|
{ lead_id: 'l10', name: 'Alexander Petrov', last_contact_hours_ago: 96, qd_score: 88.4, assigned_broker: 'Elena Rostova', urgency: 'critical', avatar: 'https://images.unsplash.com/photo-1500648767791-00dcc994a43e?auto=format&fit=crop&w=80&q=80' },
|
|
{ lead_id: 'l11', name: 'Nadia Okafor', last_contact_hours_ago: 84, qd_score: 81.2, assigned_broker: 'Priya Sharma', urgency: 'high', avatar: 'https://images.unsplash.com/photo-1542206395-9feb3edaa68d?auto=format&fit=crop&w=80&q=80' },
|
|
{ lead_id: 'l12', name: 'Tariq Al-Mansoori', last_contact_hours_ago: 78, qd_score: 76.9, assigned_broker: 'Carlos Mendez', urgency: 'medium', avatar: 'https://images.unsplash.com/photo-1560250097-0b93528c311a?auto=format&fit=crop&w=80&q=80' },
|
|
{ lead_id: 'l13', name: 'Sophie Leclerc', last_contact_hours_ago: 73, qd_score: 72.1, assigned_broker: 'Ravi Kapoor', urgency: 'medium', avatar: 'https://images.unsplash.com/photo-1506794778202-cad84cf45f1d?auto=format&fit=crop&w=80&q=80' },
|
|
],
|
|
};
|
|
|
|
// ── Demo Canvas Page ──────────────────────────────────────────────────────────
|
|
|
|
export const IN_MEMORY_DEMO_PAGE: CanvasPage = {
|
|
pageId: 'page_01_main_broker',
|
|
tenantId: 'tenant_binghatti_demo',
|
|
ownerId: 'user_sales_director_001',
|
|
branchId: 'branch_main',
|
|
branchName: 'main',
|
|
pageType: 'main',
|
|
title: 'Oracle — Pipeline & Investor Signals',
|
|
createdAt: '2026-04-09T08:00:00Z',
|
|
updatedAt: '2026-04-09T12:00:00Z',
|
|
isShared: false,
|
|
forks: [],
|
|
mainBranchPointer: {
|
|
pageId: 'page_01_main_broker',
|
|
branchId: 'branch_main',
|
|
revision: 5,
|
|
},
|
|
baseRevision: 0,
|
|
headRevision: 5,
|
|
sharingPolicy: {
|
|
shareMode: 'direct_fork_only',
|
|
allowReshare: false,
|
|
defaultForkVisibility: 'private',
|
|
},
|
|
presence: {
|
|
activeViewers: 1,
|
|
activeEditors: 1,
|
|
lastPresenceAt: new Date().toISOString(),
|
|
},
|
|
lineage: [
|
|
{
|
|
lineageRecordId: 'lin_demo_seed',
|
|
tenantId: 'tenant_binghatti_demo',
|
|
sourceKind: 'prompt',
|
|
sourceId: 'pex_demo_seed_001',
|
|
transformationType: 'prompt_to_component_bundle',
|
|
producedKind: 'page_revision',
|
|
producedId: 'page_01_main_broker:5',
|
|
createdAt: '2026-04-09T12:00:00Z',
|
|
},
|
|
],
|
|
audit: {
|
|
lastAuditEventId: 'aud_demo_rev5',
|
|
eventCount: 12,
|
|
},
|
|
components: [
|
|
PIPELINE_BOARD,
|
|
WHALE_LEADS_BAR,
|
|
INVESTOR_GEO_MAP,
|
|
BROKER_PERFORMANCE,
|
|
FOLLOWUP_QUEUE,
|
|
],
|
|
};
|