Files
cannaiq/backend/src/dutchie-az/services/analytics/index.ts
Kelly b4a2fb7d03 feat: Add v2 architecture with multi-state support and orchestrator services
Major additions:
- Multi-state expansion: states table, StateSelector, NationalDashboard, StateHeatmap, CrossStateCompare
- Orchestrator services: trace service, error taxonomy, retry manager, proxy rotator
- Discovery system: dutchie discovery service, geo validation, city seeding scripts
- Analytics infrastructure: analytics v2 routes, brand/pricing/stores intelligence pages
- Local development: setup-local.sh starts all 5 services (postgres, backend, cannaiq, findadispo, findagram)
- Migrations 037-056: crawler profiles, states, analytics indexes, worker metadata

Frontend pages added:
- Discovery, ChainsDashboard, IntelligenceBrands, IntelligencePricing, IntelligenceStores
- StateHeatmap, CrossStateCompare, SyncInfoPanel

Components added:
- StateSelector, OrchestratorTraceModal, WorkflowStepper

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2025-12-07 11:30:57 -07:00

58 lines
1.2 KiB
TypeScript

/**
* Analytics Module Index
*
* Exports all analytics services for CannaiQ dashboards.
*
* Phase 3: Analytics Dashboards
*/
export { AnalyticsCache, cacheKey, type CacheEntry, type CacheConfig } from './cache';
export {
PriceTrendService,
type PricePoint,
type PriceTrend,
type PriceSummary,
type PriceCompressionResult,
type PriceFilters,
} from './price-trends';
export {
PenetrationService,
type BrandPenetration,
type PenetrationTrend,
type ShelfShare,
type BrandPresenceByState,
type PenetrationFilters,
} from './penetration';
export {
CategoryAnalyticsService,
type CategoryGrowth,
type CategorySummary,
type CategoryGrowthTrend,
type CategoryHeatmapData,
type SeasonalityPattern,
type CategoryFilters,
} from './category-analytics';
export {
StoreChangeService,
type StoreChangeSummary,
type StoreChangeEvent,
type BrandChange,
type ProductChange,
type CategoryLeaderboard,
type StoreFilters,
} from './store-changes';
export {
BrandOpportunityService,
type BrandOpportunity,
type PricePosition,
type MissingSkuOpportunity,
type StoreShelfShareChange,
type CompetitorAlert,
type MarketPositionSummary,
} from './brand-opportunity';