# DFM (Design for Manufacturing) Analiz Modülü

## Genel Bakış

DFM (Design-for-Manufacturing) modülü, FikoCAD'in **Zeka Motoru**'na entegre bir
üretilebilirlik analiz aracıdır. Model B-Rep topolojisi üzerinde otomatik kontrol
çalıştırarak CNC frezeleme ve döküm süreçleri için potansiyel üretim sorunlarını
tespit eder.

Modül, mevcut dedektör mimarisine (Delik, Cep, Slot, Boss, Fillet) bağımlıdır:
önce feature dedektörleri grafı doldurur, ardından DFM dedektörü bu feature
düğümlerini okuyarak üretilebilirlik kurallarını uygular.

## Mimari

```
ZekaMotoru.govdeCoz()
  ├── Topoloji katmanı (Govde/Yuz/Kenar)
  ├── Feature dedektörleri (Delik, Cep, Fillet, …)
  └── DFM Dedektörü (katman: "uretim")
        ├── cncKontroller()
        ├── dokumKontroller()
        └── raporOlustur() → DfmRapor düğümü
```

DFM dedektörü grafa iki tür düğüm ekler:

| Düğüm Tipi  | Açıklama                                      |
|-------------|-----------------------------------------------|
| `DfmUyari`  | Tek bir üretilebilirlik uyarısı               |
| `DfmRapor`  | Gövde başına özet rapor (sayılar + risk skoru) |

## CNC Kontrolleri

| Kontrol               | Eşik (Varsayılan) | Açıklama                                    |
|-----------------------|-------------------|---------------------------------------------|
| Derin cep oranı       | > 4.0             | `derinlik / √alan` CNC frez erişim limiti   |
| Dar slot genişliği    | < 3.0 mm          | Minimum frez çapı                           |
| Küçük delik çapı      | < 1.0 mm          | Minimum delme limiti                        |
| Derin delik L/D       | > 10.0            | Uzun matkap sorunları                       |
| Küçük fillet yarıçapı | < 0.5 mm          | Takım yarıçapı sınırı                      |
| İnce duvar            | < 0.8 mm          | Paralel düzlem çifti mesafesi               |

## Döküm Kontrolleri

| Kontrol                  | Eşik (Varsayılan) | Açıklama                            |
|--------------------------|-------------------|-------------------------------------|
| İnce duvar               | < 2.0 mm          | Kalıp dolma sorunu                  |
| Derin cep oranı          | > 3.0             | Kalıp çekme zorluğu                |
| İç köşe fillet eksikliği | —                  | Filletlenmiş iç kenar aranır        |
| Büyük alan değişimi      | > 5.0×             | Çekme/büzülme riski                 |

## Severlik Seviyeleri

| Seviye  | Değer | Anlamı                             | Risk Ağırlığı |
|---------|-------|------------------------------------|---------------|
| Bilgi   | 0     | Bilgilendirme                      | 2             |
| Uyarı   | 1     | Dikkat gerektiren sorun            | 10            |
| Kritik  | 2     | Üretim başarısızlık riski yüksek   | 30            |

**Risk Skoru** = min(100, Σ ağırlık × sayı). 0 = mükemmel, 100 = ciddi sorunlar.

## AyarSistemi Eşikleri

Tüm eşikler `esikAyarla()` ile çalışma zamanında değiştirilebilir
(Faz 2'de `ayar_kayitlari.cpp` bağlantısıyla UI'dan erişilebilir olacak):

| Anahtar                    | Varsayılan | Açıklama              |
|----------------------------|------------|-----------------------|
| `cnc_derinlik_oran`        | 4.0        | CNC cep derinlik oranı|
| `cnc_min_duvar`            | 0.8        | CNC ince duvar (mm)   |
| `cnc_min_fillet`           | 0.5        | CNC min fillet (mm)   |
| `cnc_min_slot_gen`         | 3.0        | CNC min slot gen (mm) |
| `cnc_min_delik_cap`        | 1.0        | CNC min delik çapı    |
| `cnc_max_delik_derinlik`   | 10.0       | CNC max L/D oranı     |
| `dokum_min_duvar`          | 2.0        | Döküm min duvar (mm)  |
| `dokum_max_derinlik_oran`  | 3.0        | Döküm cep oranı       |
| `dokum_min_ic_kose`        | 1.0        | Döküm iç köşe (mm)   |
| `dokum_max_alan_oran`      | 5.0        | Döküm alan oranı      |

## Graf Sorguları

DFM sonuçlarına Pipeline API ile erişilebilir:

```cpp
// Tüm DFM uyarılarını al
auto uyarilar = motor.sorgu().tip("DfmUyari").bul();

// Yalnız CNC kritik uyarılarını filtrele
Pipeline p;
p.kaynak("DfmUyari")
 .suz("uretim_tipi", "==", std::string("cnc"))
 .suz("severlik", "==", (i64)2);
auto sonuc = p.calistir(motor.graf);

// Rapor özetini al
auto raporlar = motor.sorgu().tip("DfmRapor").bul();
f64 riskSkoru = motor.graf.ozSayi(raporlar[0], "risk_skoru");
```

## Dosya Yapısı

```
motor/zeka/
├── include/fiko/zeka/
│   └── dedektorler.hpp          ← dfmDedektoru() fabrika deklarasyonu
├── src/
│   ├── dedektor_dfm.cpp         ← DfmDedektor implementasyonu
│   └── dedektorler.cpp          ← varsayilanDedektorler'e kayıt
└── test/
    └── test_dedektor_dfm.cpp    ← birim testler
```
