# FikoYT Mesaici — Büyüme & Kullanıcı Tutma Stratejisi

## Amaç

Mesaici uygulamasını bireysel çalışanlar için vazgeçilmez hale getirmek. Rakiplerin konum bazlı otomatik takip avantajına karşılık vermek, günlük kullanım alışkanlığı yaratmak ve uzun vadeli veri değeri ile kullanıcıyı kilitlemek.

## Hedef Kitle

Bireysel çalışanlar — kendi maaşını, mesaisini, fazla mesaisini takip eden işçi/memurlar. İleride işletme moduna genişletilebilir.

## Mevcut Güçlü Yanlar

- Derin maaş hesaplama (brüt/net, vergi, kesinti, kümülatif matrah)
- Vardiya yönetimi (günlük bazda özelleştirilebilir)
- 7+ ek ödeme türü, çoklu kesinti desteği
- Otomatik bildirim sistemi (arka plan servisi)
- Yedekleme/geri yükleme

## Rakip Analizi

Rakipler konum/WiFi bazlı otomatik mesai takibi yapıyor — haritadan işyeri seçimi, o konumdaki süreleri otomatik hesaplama. Ancak maaş hesaplama derinliği (vergi dilimleri, kümülatif matrah, kıdem hesabı) yok.

---

## Faz 1: Otomatik Konum/WiFi Takibi

**Öncelik:** En acil — bu olmadan kullanıcı rakibe gidiyor.

### İşyeri Tanımlama

- Haritadan işyeri konumu seçimi (Google Maps picker)
- Yarıçap belirleme (50m-500m, slider ile)
- Opsiyonel WiFi SSID ekleme (daha hassas doğrulama)
- Birden fazla işyeri tanımlanabilir (şube, saha, müşteri lokasyonu)
- İşyeri adı ve ikon atama

### Otomatik Takip Modu

**Tam Otomatik:**
- Geofence bölgesine giriş → otomatik mesai başlat
- Geofence bölgesinden çıkış → otomatik mesai bitir
- Bildirim ile bilgilendirme (onay sormadan)

**Yarı Otomatik:**
- Geofence tetiklenince bildirim: "İşyerine girdiniz, mesai başlasın mı?"
- Bildirimde "Evet" / "Hayır" / "Ertele" butonları
- Çıkışta aynı mantık

**Manuel (mevcut):**
- Değişiklik yok, mevcut akış korunur

### Teknik Mimari

```
Geofence API (OS seviyesi, düşük pil)
    ↓
Bölge giriş/çıkış event'i
    ↓
WiFi doğrulama (opsiyonel, sadece geofence tetiklenince tarar)
    ↓
Karar motoru (tam otomatik / yarı otomatik)
    ↓
Mevcut CalismaKayit modeline yaz
    ↓
Bildirim gönder
```

### Pil Optimizasyonu

- Geofence API kullanımı (OS seviyesi, ek pil tüketimi minimal)
- WiFi tarama sadece geofence tetiklendiğinde (sürekli tarama yok)
- Gece saatlerinde (00:00-05:00) pasif mod
- Kullanıcıya pil kullanımı bilgisi gösterme

### Konum İzin Akışı

- İlk kullanımda izin isteme (açıklayıcı dialog ile)
- "Her zaman" konum izni gerekli (arka plan geofence için)
- İzin verilmezse manuel mod ile devam, periyodik hatırlatma

### Veri Modeli Değişikliği

```dart
class Isyeri {
  String id;
  String ad;
  String? ikon;
  double enlem;
  double boylam;
  int yaricapMetre; // 50-500
  String? wifiSSID;
  bool aktif;
}

class KonumAyarlari {
  List<Isyeri> isyerleri;
  KonumTakipModu mod; // TAM_OTOMATIK, YARI_OTOMATIK, MANUEL
  bool geceModuAktif; // 00:00-05:00 pasif
  bool wifiDogrulamaAktif;
}
```

### Gerekli Paketler

- `geolocator` — konum servisleri
- `geofencing_api` veya `geofence_service` — geofence yönetimi
- `wifi_scan` — WiFi SSID tarama
- `google_maps_flutter` — harita picker

---

## Faz 2: Günlük Alışkanlık & Gamification

**Öncelik:** Kullanıcıyı tutma — indirdikten sonra bırakmaması için.

### Streak Sistemi

- Ardışık gün sayacı: "15 gündür mesaini takip ediyorsun 🔥"
- Streak kaybetmemek için push bildirim (akşam 20:00): "Bugün kayıt girmedin!"
- Hafta tatili/izin günleri streak'i bozmaz (çalışma günü bazlı)
- Milestone'lar: 7, 30, 90, 180, 365 gün

### Rozet & Başarımlar

| Rozet | Koşul |
|-------|-------|
| İlk Adım | İlk mesai kaydı |
| Düzenli Çalışan | 7 gün streak |
| Mesai Ustası | 30 gün streak |
| Maratoncu | 90 gün streak |
| Efsane | 365 gün streak |
| Erken Kuş | 10 kez mesaiden önce giriş |
| Gece Kuşu | 10 kez mesai sonrası çıkış |
| Fazla Mesai Kralı | Ayda 20+ saat fazla mesai |
| Tasarrufçu | 3 ay üst üste net maaş artışı |
| Dakik | 30 gün üst üste tam saatinde giriş |
| Konum Uzmanı | Otomatik takibi 30 gün kullan |

- Rozetler profil kartında gösterilir
- Yeni rozet kazanınca kutlama animasyonu + bildirim

### Günlük/Haftalık Mini İstatistikler

**Ana sayfa kartları:**
- "Bu hafta 42s 15dk çalıştın — geçen haftadan %8 fazla"
- "Bu ay net maaşın tahminen X TL"
- "Fazla mesain: 12s 30dk"

**Haftalık özet (Pazar akşamı):**
- Toplam çalışma saati
- En uzun/en kısa gün
- Fazla mesai toplamı
- Streak durumu

**Aylık rapor kartı:**
- Paylaşılabilir görsel (Instagram story formatı, 1080x1920)
- Net maaş, çalışma saati, fazla mesai özeti
- share_plus ile paylaşım

### Bildirim Stratejisi

| Zaman | Bildirim | Koşul |
|-------|---------|-------|
| Sabah (mesai - 30dk) | "Günaydın! Mesai saatin 08:30'da başlıyor" | Her iş günü |
| Mesai + 15dk | "Hala giriş yapmadın, unutma!" | Giriş yapılmadıysa |
| Çıkış saatinde | "Mesai bitti! Çıkış yapmayı unutma" | Çıkış yapılmadıysa |
| Akşam 20:00 | "Bugün 8s 45dk çalıştın, brüt kazancın ~X TL" | Her iş günü |
| Akşam 21:00 | "Streak'in kopmasın! Bugün kayıt yok" | Kayıt yoksa |
| Pazar 18:00 | Haftalık özet kartı | Her hafta |
| Ay sonu | Aylık rapor kartı | Her ay |

### Veri Modeli Değişikliği

```dart
class GamificationData {
  int streak; // mevcut streak
  int enUzunStreak;
  DateTime? sonKayitTarihi;
  List<String> kazanilanRozetler; // rozet ID listesi
  Map<String, DateTime> rozetTarihleri;
}
```

### Gerekli Paketler

- `share_plus` — rapor kartı paylaşımı
- Mevcut `flutter_local_notifications` yeterli

---

## Faz 3: Vazgeçilmez Veri & Uzun Vadeli Değer

**Öncelik:** Uzun vadeli kullanıcı kilidi — yıllık veri biriktikçe bırakamaz.

### Kıdem Tazminatı Hesaplama

- İşe giriş tarihi (mevcut hesap ayarlarından) + güncel maaş verisinden otomatik hesap
- "Şu an ayrılsan kıdem tazminatın: X TL (brüt) / Y TL (net)"
- Kıdem tazminatı tavanı kontrolü (yıllık güncellenen tavan)
- Her yıl için ayrı hesaplama gösterimi
- Bilgilendirme: kaç yıl, kaç ay, kaç gün çalışıldığı

### İhbar Tazminatı Hesaplama

- Çalışma süresine göre ihbar süresi (2/4/6/8 hafta)
- İhbar tazminatı tutarı
- Brüt/net ayrımı

### Emeklilik Tahmini

- SGK prim gün sayısı takibi (günlük çalışma kaydından otomatik sayım)
- Doğum tarihi + işe giriş tarihi + cinsiyet girişi
- Emeklilik koşulları: yaş, prim günü, sigortalılık süresi
- "Tahmini emeklilik tarihin: 15 Mart 2048"
- Kalan gün sayacı
- "X gün daha çalışman gerekiyor" göstergesi

### Vergi Beyanname Yardımcısı

- Yıllık gelir özeti (Ocak-Aralık toplam)
- Kümülatif matrah takibi (zaten mevcut — yıllık rapora dönüştür)
- "Gelir vergisi beyannamesi için veriler" dışa aktarma (PDF)
- Vergi dilimi değişim uyarısı: "Bu ay üst dilime geçtin, vergi oranın %X oldu"
- Yıllık vergi özet tablosu

### Yıllık Trend Analizi

- Yıl bazlı karşılaştırma grafikleri (çizgi/bar chart)
- Aylık net maaş trendi
- Fazla mesai trendi
- Çalışma saati trendi
- "Geçen yıla göre %12 daha fazla kazanıyorsun"
- Opsiyonel: enflasyon oranına göre reel kazanç değişimi

### AGİ / Asgari Geçim İndirimi

- Medeni durum seçimi (bekar/evli)
- Çocuk sayısı (eşin çalışıp çalışmadığı)
- Otomatik AGİ hesaplama
- Maaş hesaplamasına otomatik yansıtma

### Veri Modeli Değişikliği

```dart
class KisiselBilgiler {
  DateTime? dogumTarihi;
  String? cinsiyet; // ERKEK, KADIN
  String? medeniDurum; // BEKAR, EVLI
  int cocukSayisi;
  bool esCalisiyorMu;
  DateTime? sgkBaslangicTarihi; // ilk sigorta girişi
}

class YillikOzet {
  int yil;
  double toplamBrut;
  double toplamNet;
  double toplamVergi;
  double toplamKesinti;
  double toplamFazlaMesai;
  int toplamCalismaSaati;
  int toplamPrimGunu;
  double kumulatifMatrah;
}
```

### Gerekli Paketler

- `pdf` — PDF rapor oluşturma
- `fl_chart` — trend grafikleri (mevcut olabilir)
- `excel` veya `csv` — Excel/CSV dışa aktarma

---

## Mimari Özet

### Yeni Servisler

| Servis | Faz | Sorumluluk |
|--------|-----|-----------|
| GeofenceService | 1 | Konum takibi, geofence yönetimi |
| WiFiService | 1 | WiFi SSID tarama ve doğrulama |
| IsyeriService | 1 | İşyeri CRUD, konum ayarları |
| GamificationService | 2 | Streak, rozet, milestone yönetimi |
| RaporKartiService | 2 | Paylaşılabilir rapor kartı oluşturma |
| TazminatService | 3 | Kıdem/ihbar hesaplama |
| EmeklilikService | 3 | Emeklilik tahmini hesaplama |
| VergiRaporService | 3 | Yıllık vergi raporu, PDF export |
| TrendAnalizService | 3 | Yıllık karşılaştırma ve trend analizi |

### Mevcut Servislerde Değişiklik

| Servis | Değişiklik |
|--------|-----------|
| FikoYTMesaiciService | Konum ayarları, gamification data ekleme |
| Background Service | Geofence event listener ekleme |
| Bildirim Servisi | Yeni bildirim kanalları (streak, haftalık özet) |

### Model Değişiklikleri

| Model | Değişiklik |
|-------|-----------|
| ModelAyarlar | KonumAyarlari, KisiselBilgiler ekleme |
| CalismaKayit | konumKaynak (MANUEL/KONUM/WIFI) alanı ekleme |
| Yeni: Isyeri | İşyeri tanım modeli |
| Yeni: GamificationData | Streak, rozet verileri |
| Yeni: YillikOzet | Yıllık özet verileri |

### Tahmini Paketler

| Paket | Faz | Amaç |
|-------|-----|------|
| geolocator | 1 | Konum servisleri |
| geofencing_api | 1 | Geofence yönetimi |
| wifi_scan | 1 | WiFi tarama |
| google_maps_flutter | 1 | Harita picker |
| share_plus | 2 | Rapor kartı paylaşımı |
| pdf | 3 | PDF rapor oluşturma |
| excel / csv | 3 | Excel/CSV export |

---

## Uygulama Sırası

1. **Faz 1** → Konum/WiFi takibi (kullanıcı çekme)
2. **Faz 2** → Gamification (kullanıcı tutma)
3. **Faz 3** → Uzun vadeli değer (kullanıcı kilitleme)

Her faz bağımsız olarak geliştirilebilir ve yayınlanabilir. Faz 1'deki altyapı (background service genişletmesi) Faz 2 ve 3 için de kullanılır.
