feat: integrate First8 Marketing hyper-personalization system

Enhanced Umami Analytics with First8 Marketing integration for
hyper-personalized recommendation engine.

Database Enhancements:
- PostgreSQL 17 with Apache AGE 1.6.0 (graph database)
- TimescaleDB 2.23.0 (time-series optimization)
- Extended schema for WooCommerce event tracking
- Custom tables for recommendation engine integration

Features Added:
- Real-time ETL pipeline to recommendation engine
- Extended event tracking (WordPress + WooCommerce)
- Graph database for relationship mapping
- Time-series optimization for analytics queries
- Custom migrations for hyper-personalization

Documentation:
- Updated README with integration details
- Added system architecture documentation
- Documented data flow and components
- Preserved original Umami Software credits

Integration Components:
- First8 Marketing Track plugin (event tracking)
- Recommendation Engine (ML backend)
- First8 Marketing Recommendation Engine plugin (presentation)

Status: Production-ready
Version: Based on Umami latest + First8 Marketing enhancements
This commit is contained in:
iskandarsulaili 2025-11-05 19:17:57 +08:00
parent a6d4519a98
commit 5f496fdb79
16 changed files with 8856 additions and 9790 deletions

View file

@ -121,6 +121,20 @@ model WebsiteEvent {
tag String? @db.VarChar(50)
hostname String? @db.VarChar(100)
// Enhanced engagement tracking fields
scrollDepth Int? @map("scroll_depth") @db.Integer
timeOnPage Int? @map("time_on_page") @db.Integer
clickCount Int? @map("click_count") @db.Integer
formInteractions Json? @map("form_interactions")
// WooCommerce e-commerce tracking fields
wcProductId String? @map("wc_product_id") @db.VarChar(50)
wcCategoryId String? @map("wc_category_id") @db.VarChar(50)
wcCartValue Decimal? @map("wc_cart_value") @db.Decimal(19, 4)
wcCheckoutStep Int? @map("wc_checkout_step") @db.Integer
wcOrderId String? @map("wc_order_id") @db.VarChar(50)
wcRevenue Decimal? @map("wc_revenue") @db.Decimal(19, 4)
eventData EventData[]
session Session @relation(fields: [sessionId], references: [id])