Files
api-extranetwork/PROJECT_SUMMARY.md
ExtraNetwork e5c4b6aa13 first commit
2026-05-12 17:04:54 +03:00

234 lines
8.3 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# 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