first commit

This commit is contained in:
ExtraNetwork
2026-05-12 17:04:54 +03:00
commit e5c4b6aa13
1425 changed files with 284735 additions and 0 deletions

233
PROJECT_SUMMARY.md Normal file
View File

@@ -0,0 +1,233 @@
# ExtraNetWork API — Teknik Özet
## Genel Bilgiler
| Özellik | Değer |
| ------------- | ----------------------------------------- |
| Framework | Laravel Lumen 5.8 |
| PHP | >= 7.1.3 |
| App Versiyonu | 1.5.22 |
| Veritabanı | MySQL (`utf8mb4`, host: `mysql-master`) |
| Queue Driver | Database (jobs tablosu) |
| Mail Driver | SMTP — Gmail (`noreply@extranetwork.com`) |
---
## Mimari
```
app/
├── Http/Controllers/ → 86 Controller
├── Core/
│ ├── Service/ → 142 Service
│ ├── Repository/ → 176 Repository
│ └── Validator/ → 132 Validator
├── Models/ → 196 Model
├── Jobs/ → 6 Job
├── Events/ → 2 Event
├── Listeners/ → 1 Listener
├── Channels/ → OneSignal push
└── Http/Middleware/ → 11 Middleware
```
**Katmanlı mimari:** Controller → Service → Repository → Model
---
## Servisler & URL'ler
| Servis | URL |
| -------------- | ------------------------------ |
| API | `https://api.extranetwork.com` |
| Web | `https://www.extranetwork.com` |
| Client App | `https://app.extranetwork.com` |
| Booking Engine | `https://be.extranetwork.com` |
| Image CDN | `https://cdn.extranetwork.com` |
---
## Veritabanı (100+ tablo)
### Ana Tablolar
| Grup | Tablolar |
| --------------- | --------------------------------------------------------------------------------------------------------- |
| Kullanıcı | `user`, `permission`, `permission_group`, `user_property_mapping` |
| Mülk (Property) | `property`, `property_type`, `property_chain`, `property_brand`, `property_contact`, `property_executive` |
| Oda | `property_room`, `property_room_type`, `property_room_bed`, `property_room_view_type` |
| Fotoğraf | `property_photo`, `property_photo_category`, `property_room_photo_mapping` |
| İçerik | `property_content`, `property_content_category`, `property_fact`, `property_fact_mapping` |
| Fiyat & Oran | `property_room_rate`, `property_room_rate_mapping`, `property_room_rate_channel_mapping` |
| Kanal | `property_channel`, `property_channel_mapping`, `property_channel_category` |
| Rezervasyon | `booking`, `booking_contact`, `booking_room_pax`, `booking_addon`, `booking_payment` |
| Politika | `property_cancellation_policy`, `property_pricing_policy_adult`, `property_pricing_policy_child` |
| Web | `property_web`, `property_web_content`, `property_web_menu`, `property_web_meta_tag` |
| Diğer | `property_promotion`, `property_coupon`, `property_addon`, `property_award_certificate`, `site_config` |
---
## Modeller & İlişkiler
### Property (Ana Model)
```
Property
├── hasMany → PropertyPhoto, PropertyRoom, PropertyExecutive, PropertyUser
├── hasOne → PropertyContact, PropertyWeb, PropertyBrand, PropertyChain
└── belongsTo → PropertyType, Destination
```
### Booking
```
Booking
├── hasMany → BookingRoomPax, BookingAddon, BookingPayment
└── hasOne → BookingContact
```
### Offer
```
Offer
├── hasMany → OfferContactMapping, OfferFactMapping
└── hasOne → OfferPaymentType
```
---
## Controller Grupları
### Auth & Kullanıcı
- `AuthController` — login, refresh-token, logout
- `UserController` — CRUD, şifre sıfırlama, rol yönetimi
### Property Yönetimi
- `PropertyController` — CRUD, dashboard, raporlar
- `PropertyPhotoController` — yükleme, sıralama, yayınlama
- `PropertyContactController`, `PropertyExecutiveController`, `PropertyBrandController`
- `PropertyRoomController`, `PropertyRoomBedController`, `PropertyRoomTypeController`
### Fiyat & Oran
- `PropertyRoomRateController`, `PropertyRoomRateMappingController`
- `PropertyRoomRateChannelMappingController`
- `PropertyQuickPricingController`, `PropertyPersonPricingPolicyController`
- `PropertyOfferController`, `PropertyNonrefundableController`
- `PropertyCancellationPolicyController`
### Kanal Yönetimi
- `PropertyChannelController`, `PropertyChannelMappingController`
- `PropertyChannelGroupController`, `PropertyChannelCategoryController`
- `CompetitorPriceAnalysisController`
### İçerik & Web
- `PropertyContentController`, `PropertyFactController`
- `PropertyWebController`, `PropertyWebContentController`, `PropertyWebMenuController`
- `PropertyPlaceController`, `PropertyAdditionalInfoController`
### Rezervasyon & Ödeme
- `PropertyBookingController`
- `PaymentController`, `PaymentLinkController`
- `PropertyBookingTicketController`
### Özel
- `AIController` — OpenAI entegrasyonu
- `ReputationManagementController` — Review/yorum yönetimi
- `PropertyAwardCertificatesController`
- `ExportPdfController`, `DashboardPlusService` controllers
---
## Middleware
| Middleware | Görev |
| ------------------------------------------ | ------------------------ |
| `JwtMiddleware` | JWT token doğrulama |
| `CorsMiddleware` | CORS başlıkları |
| `LanguageSettingMiddleware` | Dil seçimi |
| `PropertyMiddleware` | Property context |
| `UserRoutePermissionAuthorize` | RBAC yetki kontrolü |
| `BookingEngineTokenMiddleware` | Booking engine auth |
| `MyWebTokenMiddleware` | MyWeb auth |
| `CheckPropertyChannelConnectionMiddleware` | Kanal bağlantı doğrulama |
| `ContentWizardMiddleware` | İçerik sihirbazı akışı |
---
## Jobs (Queue)
| Job | Görev |
| --------------------------------- | ---------------------- |
| `PropertyReviewServiceJob` | Review senkronizasyonu |
| `PropertyReviewAnalyzeServiceJob` | Review analizi |
| `PropertyCatalogServiceJob` | Katalog güncellemeleri |
| `SlackLogJob` | Slack bildirim logları |
---
## Route Yapısı
```
POST /app/v1/auth/login
POST /app/v1/auth/refresh-token
POST /app/v1/user/register
POST /app/v1/logout
GET /property-comparison/{weekKey}
POST /web/check-domain
[Protected - /app/v1]
├── /property/** → Property CRUD & yönetim
├── /property-room/** → Oda yönetimi
├── /property-rate/** → Fiyat & oran
├── /property-channel/** → Kanal yönetimi
├── /booking/** → Rezervasyon
├── /payment/** → Ödeme
├── /property-web/** → Web içerik
└── /user/** → Kullanıcı yönetimi
```
---
## Temel Paketler
| Paket | Sürüm | Kullanım |
| ------------------------- | ------ | -------------- |
| `laravel/lumen-framework` | 5.8 | Framework |
| `firebase/php-jwt` | ^5.0 | JWT auth |
| `stripe/stripe-php` | ^7.66 | Ödeme |
| `google/cloud-vision` | ^0.24 | Görsel analiz |
| `maatwebsite/excel` | ^3.1 | Excel export |
| `barryvdh/laravel-dompdf` | ^0.8.7 | PDF üretimi |
| `intervention/image` | ^2.5 | Görsel işleme |
| `predis/predis` | ^1.1 | Redis |
| `ramsey/uuid` | ^4.1 | UUID üretimi |
| `symfony/translation` | 4.4.1 | Çeviri desteği |
---
## Dil Desteği
`config/` altında hazır dil paketi dosyaları:
- `language-pack-en.php` — İngilizce
- `language-pack-de.php` — Almanca
- `language-pack-tr.php` — Türkçe
---
## Entegrasyonlar
- **Stripe** — Ödeme işlemleri
- **OpenAI** — AI özellikler (`AIController`)
- **Google Cloud Vision** — Görsel analiz
- **OneSignal** — Push bildirim (`OneSignalChannel`)
- **Slack** — Log bildirimleri (`SlackLogJob`)
- **Redis** — Cache & queue
- **Gmail SMTP** — Mail gönderimi