Files
Funnel_Wiki/Architektura.md
2026-04-22 13:01:47 +02:00

3.0 KiB

Architektura

Technologický stack

Vrstva Technologie
Framework Laravel 12, PHP 8.2+
Frontend Livewire 3, Tailwind CSS, Vite
Autentizace Laravel Jetstream + Sanctum
Queue Laravel Queue (databáze nebo Redis)
Debugging Laravel Telescope, Laravel Pulse
Email SMTP / Microsoft Graph
Externí integrace SmartEmailing API, Vario SOAP, PBX

Adresářová struktura

app/
├── Console/Commands/     # Artisan příkazy (sync, rebuild, backfill...)
├── Http/
│   ├── Controllers/
│   │   ├── Api/Tracking/ # Browser tracking endpointy
│   │   ├── Api/Eshop/    # Server-to-server eshop endpointy
│   │   └── Admin/        # Web admin controllery
│   └── Middleware/
│       ├── ResolveTrackingSite  # Ověření X-Site-Key
│       ├── CorsForTracking      # CORS pro tracking API
│       └── LogEshopRequest      # Logování eshop requestů
├── Jobs/                 # Background joby (queue)
├── Livewire/Admin/       # Livewire komponenty admin UI
├── Models/               # Eloquent modely
├── Services/
│   ├── Actions/          # ActionRunner + drivery akcí
│   ├── Ai/               # OpenAI integrace
│   ├── Funnel/           # RulesEngine, FunnelAssigner
│   ├── GeoIP/            # Geo-lookup
│   ├── Ingest/           # IngestEvent pipeline
│   ├── Integrations/     # SmartEmailing klient
│   ├── Tracking/         # IdentityLinker, CategoryTree, BotDetector...
│   └── Vario/            # Vario SOAP sync
public/
└── collect.js            # Tracking skript pro weby/eshopy
routes/
├── api.php               # API endpointy
└── web.php               # Admin web rozhraní

Klíčové modely

Model Tabulka Popis
Contact contacts Identifikovaný zákazník/návštěvník
FunnelCart funnel_carts Nákupní košík
FunnelEvent funnel_events Každá trackovací událost
FunnelRule funnel_rules Pravidlo automace (trigger + podmínky)
FunnelAction funnel_actions Akce spouštěná pravidlem
FunnelState funnel_states Aktuální stav kontaktu v segmentu/sloupci
Segment segments Skupina kontaktů s vlastními pravidly
FunnelColumn funnel_columns Sloupec (stav) v segmentu
EmailCampaign email_campaigns Emailová kampaň
EmailCampaignSend email_campaign_sends Jeden plánovaný email send
EmailTemplate email_templates Šablona emailu
TrackingSite tracking_sites Web/eshop identifikovaný Site Key
TrackingProduct tracking_products Produkt zaznamenaný z košíků
VisitorIdentity visitor_identities Mapping visitor_id → contact_id

Multi-tenancy

Aplikace je multi-tenant přes team_id. Každý tým má vlastní kontakty, segmenty, kampaně a tracking sites. Autentizace týmů probíhá přes Laravel Jetstream.