70 lines
3.0 KiB
Markdown
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.
|