# Geometri Zekâ Motoru (motor/zeka) — Mimari

FikoCAD'in önümüzdeki 10 yılının ortak veri çekirdeği. CAM, döküm, CNC analizi, maliyet,
teklif, AI önerileri, kural motoru, PMI, kalite kontrol, ölçüm, makro (Lua), plugin,
uzaktan API ve MCP — hepsi AYNI grafı okur/yazar. Amaç feature tanıma değil;
**Geometry Intelligence Platform**: parça hakkında bilinen her şeyin tek gerçek kaynağı.

## İlkeler (anayasa uzantısı)

1. **API-first, plugin-first, event-driven.** Yeni analiz = yeni dedektör/plugin;
   çekirdek kod DEĞİŞMEZ. Kapalı enum yok — düğüm/ilişki/özellik tipleri interned
   string (açık tip sistemi).
2. **Graf-DB mantığı.** "Feature raporu" yok; her şey düğüm + ilişki. "Derin cepler ve
   bağlı filletleri" sorusu yeniden analiz değil, hazır ilişki gezintisidir.
3. **BREP ilkesi.** Tüm geometrik veriler OCCT'den (mesh'ten karar yok). BREP bağlantısı
   KYA kalıcı etiket (u64) üzerinden — ordinal kayar, etiket kalır; ordinal yalnız önbellek.
4. **Motor bağımsız.** `motor/zeka` yalnız core+geometri'ye bağımlı; olay/AyarSistemi/UI
   köprülerini uygulama katmanı bağlar (test edilebilirlik + yeniden kullanılabilirlik).

## Bileşen haritası (istenen mimari → kod)

| İstenen               | Karşılığı                                                        |
|-----------------------|------------------------------------------------------------------|
| Topology Graph        | Topoloji katmanı: Govde/Yuz/Kenar/Nokta düğümleri + sinir/komsu   |
| Feature Graph         | Feature katmanı: Delik/Cep/Fillet/... düğümleri (dedektör çıktısı)|
| Manufacturing Graph   | Üretim katmanı: Takim/Fikstur/Stok/CekimYonu/... düğümleri        |
| Rule Engine           | KuralMotoru (Faz 3): kural = Sorgu + eylem; Lua'dan tanımlanabilir|
| Analysis Engine       | Dedektor registry (AnalizSistemi sonuçları da katman olarak yazar)|
| Feature Cache         | Grafın kendisi + sürüm sayacı + gövde-bazlı bayat/yeniden kurulum |
| Query Engine          | Sorgu (akıcı C++ API; JSON formu MCP/AI/REST için)                |
| Event System          | `grafGuncellendi` köprüsü → OlayTuru (enum SONA, Faz 2)           |
| API Layer             | JSON serileştirme → Lua + plugin SDK + MCP + uzaktan API          |

Katmanlar AYRI graf değil — tek grafta düğüm tipleriyle yaşar (user'ın Body→Feature/
Manufacturing/Analysis/Relations ağacı). Böylece katmanlar-arası ilişki (Cep→Takim,
Yuz→Kalinlik) doğal kenardır.

## Veri modeli

- **ZDugum**: `kimlik` (u64, belge içinde monoton — kalıcı ID), `tip` (interned),
  `brep` (BrepRef: govde varlığı + eleman + KYA kid + ordinal önbelleği),
  `oz` (özellik çantası: anahtar→Deger).
- **ZIliski**: `kimlik`, `tip` (icerir/sinir/komsu/bagli/uretir/etkiler/...),
  `kaynak`, `hedef`, kendi özellik çantası.
- **Deger**: bool | i64 | f64 | Vec3d | string | vector<u64> | vector<f64>.

Kullanıcının istediği feature alanları özellik çantasıyla karşılanır — şema değişikliği
gerektirmez:

| Alan               | Özellik anahtarı örneği                          |
|--------------------|--------------------------------------------------|
| Kalıcı ID          | düğüm kimliği (+ BrepRef.kid)                    |
| BREP referansı     | BrepRef (govde, eleman, kid, ordinal)            |
| İlişkili yüz/kenar | `sinir`/`icerir` ilişkileri                      |
| Komşu feature'lar  | `komsu`/`bagli` ilişkileri                       |
| Üretim tipi        | `uretim_tipi` = "frezeleme"                      |
| İşlenebilirlik     | `islenebilirlik` = 0..1                          |
| Dökülebilirlik     | `dokulebilirlik` = 0..1                          |
| Risk puanı         | `risk` = 0..100                                  |
| Maliyet etkisi     | `maliyet_etkisi` (₺ ya da oran)                  |
| CAM önerisi        | `cam_onerisi` = "helisel dalma, D8 parmak freze" |
| AI açıklaması      | `ai_aciklama` (serbest metin)                    |
| Kullanıcı etiketi  | `kullanici_etiket`                               |
| Plugin metadata    | `eklenti.<eklentiAdi>.<anahtar>` (ad-alanlı)     |

## Genişleme sözleşmesi (yeni analiz = sıfır çekirdek değişikliği)

```cpp
class YeniAnalizim : public zeka::Dedektor {
  const char* ad() const override { return "derin_cep"; }
  const char* katman() const override { return "analiz"; }
  void calistir(zeka::DedektorBaglam& b) override {
    // b.brep (OCCT sorguları) + b.graf (oku/yaz) — istediği düğüm/ilişkiyi ekler
  }
};
motor.dedektorEkle(std::make_unique<YeniAnalizim>());   // C++ plugin'den de aynı yol
```

Lua/MCP/uzaktan API aynı grafı JSON üzerinden okur; kural motoru sorgu+eylem çiftini
veri olarak alır (Faz 3).

## Bayatlama / önbellek

- Graf gövde-bazlı kurulur (`govdeCoz`); her mutasyon `surum()` sayacını artırır.
- `BrepDegisti` → `govdeBayatla(varlik)`; bir sonraki sorgu/çözümde o gövdenin alt-grafı
  silinip yeniden kurulur. KYA sayesinde feature kimlikleri (kid eşleşen) korunabilir
  (Faz 2: kimlik miras — şimdilik tam yeniden kurulum, davranış güvenli).
- Ağır kurulum Faz 2'de AnalizSistemi'nin async kalıbına taşınır (derin kopya + nesil
  sayacı); MVP senkron, sıcak yolda ÇAĞRILMAZ.

## Fazlar

- **Faz 0 (bu):** GrafDeposu + Dedektor + Sorgu + ZekaMotoru + topoloji katmanı + testler.
- **Faz 1:** Feature dedektörleri — delik (basit/havşa/kademeli), cep/ada, slot, boss/rib,
  fillet zinciri, chamfer, doğrusal/dairesel pattern, simetri düzlemi. Her eşik AyarSistemi.
- **Faz 2:** Uygulama entegrasyonu — olay köprüsü (OlayTuru SONA: ZekaGrafGuncellendi),
  AyarSistemi kayıtları, DM sağ-tık "Zekâ" menüsü, async kurulum, .fikocad ZEKA chunk,
  AnalizSistemi sonuçlarının grafa yazılması.
- **Faz 3:** KuralMotoru + Lua/MCP/plugin API yüzeyi + üretim katmanı köprüleri
  (CAM önerisi, maliyet/teklif, AI açıklamaları).
