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

70 lines
3.0 KiB
Markdown

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