# CLAUDE.md — fikoyt-sistem

Birleşik platform (Angular 20, Port 443). 12+ alt uygulama: Strafor Kesici, Paylaşım, Soyağacı, Admin, HMI Pano, Firma Yönetim, Yüz Tanıma vb.

## 📌 Kalıcı Durum Dosyaları (yeni oturumda ÖNCE bunları oku)

Uzun süren işler `docs/` altında kendi durum dosyasında takip edilir. Projeyi baştan
analiz etme; ilgili durum dosyasını oku ve kaldığın yerden devam et. İş bitince
o dosyadaki "Yapılanlar" / "Sıradaki adımlar" bölümlerini güncelle.

- `docs/RESIMDEN-3D-DURUM.md` — Resimden 3D (ComfyUI `FikoYT-img2-3d`), 3D sol araç çubuğu butonu

## Geliştirme

```bash
npm start          # https://0.0.0.0:443
npm run build      # Production build
```

## Kullanıcı Tercihleri (KESİNLİKLE UYULMALI)

### Çalışma Tarzı
- **Küçük işler** → direkt uygula, plan sorma
- **Büyük işler (3+ dosya)** → 2-3 maddelik kısa plan sun
- **Yanıt** → Kısa ve öz. 1-2 cümle, özet tekrarı yapma
- **Commit** → Sadece kullanıcı söylediğinde at, otomatik atma
- **Test** → Sadece kritik iş mantığı için (kesim motoru, geometri hesabı)
- **İsimlendirme** → Türkçe (teknik terimler hariç)
- **Hata mesajları** → Kullanıcıya gösterilen tüm mesajlar Türkçe
- **Loglama** → Debug için console.log kullan, kullanıcı onayladıktan sonra hemen temizle

### KRİTİK: Performans Her Zaman En Üst Öncelik
- `OnPush` + `signal()` + `trackBy` her zaman
- Büyük listeler → virtual scroll
- Ağır hesap → `computed()` veya WebWorker
- Lazy loading → route bazlı `loadComponent`
- CSS animasyonları → `transform`/`opacity` (layout tetikleme)
- Gereksiz re-render, DOM manipülasyonu, büyük import'lardan kaçın

### KRİTİK: Kod Yazma Kuralları
**HER KOD YAZMADAN ÖNCE:**
1. Mevcut dosyaları/fonksiyonları incele — aynı iş yapılmış mı?
2. Mevcut stilleri kontrol et — global stil tanımlı mı?
3. Varsa onu kullan/genişlet — yoksa yeni yaz
4. Bir fonksiyon birçok yerde kullanılabilir → merkezi utility yap
5. OOP mantığıyla minimal kodla ilerle, dosyaları kodla doldurma

### Kaçınılacaklar
- Gereksiz `//` yorum ekleme
- Fazla dosya oluşturma (mevcut dosyaları düzenle)
- Over-engineering (basit çözüm yeterliyken karmaşık pattern kullanma)
- Özet tekrarı (yaptıklarını sonunda listeleme)
- Dosyaları kodla doldurma (merkezi ve modüler tut)

### Proaktiflik
- Açık dosyada hata/küçük bug → sormadan düzelt
- Performans/güvenlik sorunu → sadece uyar, dokunma
- 3. parti kütüphane → gerekiyorsa serbest ekle
- 3D sahnede sis (fog) kullanma

### UI Tasarım
- Ng-Zorro + Fomantic-UI, merkezi global stil
- Dark + Light tema (toggle ile geçiş, CSS custom properties)
- Bol animasyon (geçiş, hover, micro-interaction)
- Tam responsive (mobil dahil)

## Kodlama Tarzı

### Component Yapısı
```typescript
@Component({
  selector: 'kebab-case-isim',
  standalone: true,
  imports: [CommonModule, RouterModule, NzXxxModule],
  changeDetection: ChangeDetectionStrategy.OnPush,
  template: `...`,
})
export class XxxComponent extends FikoYTKokBilesenComponent {
  private svc = inject(MyService);       // inject() kullan
  yukleniyor = signal(false);            // signal kullan
  veri = input<IVeri>();                 // input() kullan
  secildi = output<IVeri>();             // output() kullan
  constructor() { super(); }
}
```

**Kurallar:** standalone: true, OnPush, inject(), signal(), input()/output(), FikoYTKokBilesenComponent extend

### İsimlendirme
| Öğe | Kural | Örnek |
|-----|-------|--------|
| Değişken/metod | Türkçe camelCase | `yukleniyor`, `sayfaDegisti()` |
| Interface | I + PascalCase | `IMenuOge`, `IParametre` |
| Sabit | UPPER_SNAKE_CASE | `MENU_OGELERI` |
| Dosya | kebab-case | `avatar.service.ts` |
| CSS variable | `--py-` prefix | `--py-metin` |

### LESS/CSS
- Merkezi global stil (`styles.less`) tercih et
- CSS custom properties: `var(--py-metin)`, `var(--py-arkaplan)`
- Dark mode: `body.tema-karanlik { ... }`
- Flexbox ağırlıklı, component stili minimal

## Base Class — FikoYTKokBilesenComponent

Konum: `src/service/kok-bilesen/kok-bilesen.component.ts`

Sağladıkları: CD, FikoYT, FikoYTArayuz, router, route, sanitizer, elementRef, ngZone, nzMessage, nzNotification, nzModalServis, bPnt, env, subsList, diller, parametreler

## Mevcut Utility Haritası (YENİ KOD YAZMADAN ÖNCE KONTROL ET)

### Servisler
| Servis | Dosya | İş |
|--------|-------|-----|
| FikoYTRequestService | `shared/services/fikoyt-request.service.ts` | MongoDB CRUD, aggregate, sayfalı sorgu |
| UnifiedCacheService | `shared/services/unified-cache.service.ts` | SWR cache pattern |
| AvatarService | `servisler/avatar.service.ts` | Avatar, yüz crop, cinsiyet gradyan |
| FikoYTService | `service/kok-bilesen/` | Merkezi uygulama servisi |

### Utility'ler
| Utility | Dosya | İş |
|---------|-------|-----|
| ListeBase<T> | `shared/utils/liste-base.ts` | Liste sayfaları için abstract base |
| bbox.utils | `shared/utils/bbox.utils.ts` | Yüz bounding box |
| gradient-tokens | `shared/utils/gradient-tokens.ts` | Cinsiyet/durum gradyanları |
| firma-ui.utils | `shared/utils/firma-ui.utils.ts` | Avatar harf/renk |
| regex.utils | `shared/utils/regex.utils.ts` | MongoDB regex güvenliği |

### Bileşenler
| Bileşen | İş |
|---------|-----|
| UniversalAvatarComponent | Çok modlu avatar (crop/resim/harf) |
| FikoFormDrawerComponent | Form drawer (detay/düzenleme) |
| FikoEmptyStateComponent | Boş durum gösterimi |
| AdminPageHeaderComponent | Admin başlık |
| AdminStatCardComponent | İstatistik kartı |

### Dekoratörler & Pipe'lar (fikoyt-ui)
| Araç | İş |
|------|-----|
| @debounce(ms) | Metod geciktirme |
| @throttle(ms) | Rate limiting |
| @memoize() | Sonuç cache |
| toDosyaBoyutu | Byte → KB/MB/GB |
| sanitize | HTML sanitize |
| yuvarla | Sayı yuvarla |
| FikoYTId | MongoDB-style ID üretici |
