# 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.