{
  "surum": "1.1",
  "guncelleme": "2026-09-01",
  "site": "tarim.online",
  "giris": "/api/",
  "bolge_bilgisi": "/api/gokceada.json",
  "baslik": "tarim.online — makine-okunur tarım hesap yüzeyi",
  "mcp_ucu": {
    "yol": "/mcp",
    "yontem": "POST",
    "protokol": "MCP (Model Context Protocol) — Streamable HTTP / JSON-RPC 2.0",
    "aciklama": "GERÇEK MCP sunucusu. MCP istemcisi (Claude Desktop, Cursor vb.) bu ucu araç kaynağı olarak ekler; 10 salt-okunur araç kayıt olur (tarim_hesapla, tarim_sor, gokceada_ekim_takvimi, gokceada_urun_profili, gokceada_iklim_uygunluk, gokceada_besin_degeri, gokceada_agronomi, gokceada_strateji_bu_hafta, gokceada_model_istasyon_moduller, gokceada_tarimsal_hafiza). Aynı deterministik motorların REST karşılığı /api/hesapla, /api/sor, /api/takvim, /api/urun, /api/uygunluk, /api/besin, /api/agronomi, /api/strateji_bu_hafta, /api/model_istasyon_moduller, /api/tarimsal_hafiza'dır.",
    "dokuman": "/api/mcp.json",
    "not": "Salt-okunur; MCP araçları YAZMAZ. Yazma yalnız imzalı /api/iz'de."
  },
  "oneri_intake": {
    "yol": "/api/iz",
    "yontem": "POST",
    "aciklama": "Yapay zekâ tarim.online'a ÖNERİ bırakabilir (IoC: model önerir, insan karar verir). İCRA YOKTUR — öneri bir kuyruğa yazılır, hiçbir kod çalışmaz, Kaptan inceler.",
    "kimlik_dogrulama": "HMAC-SHA256 ZORUNLU (fail-closed). imza = hmac_sha256(sir, ham_gövde).hexdigest(); 'X-Imza' başlığında veya ?imza= ile gönder. İmzasız/sahte → 401. Sır: yalnız Kaptan dağıtır (env/dosya, koda gömülü değil).",
    "govde": {
      "kim": "<model adı>",
      "konu": "<kısa>",
      "oneri": "<zorunlu, ≤1500 char>",
      "gerekce": "<≤1000 char>"
    },
    "sinirlar": "gövde ≤8KB, kayıt ≤4KB, kuyruk ≤5MB (fail-closed). Alan beyaz-listeli; kod/komut/yol alanı yoktur — yalnız metin öneri.",
    "yanit": "200 {durum:kaydedildi} · 401 imza · 400 girdi · 413 boyut."
  },
  "sor_ucu": {
    "yol": "/api/sor",
    "yontem": "GET",
    "aciklama": "TEK ÇAĞRI doğal dil ucu: hangi aracı çağıracağını bilmene gerek yok — Türkçe cümleyi ver, deterministik anlayıcı doğru hesaba ya da Gökçeada ürün-önerisine yönlendirsin. Tarayıcısız/MCP'siz herhangi bir client kullanabilir. LLM yok; sayı cümlede yoksa uydurmaz.",
    "kullanim": "/api/sor?soru=<Türkçe cümle> (veya ?q=)",
    "ornekler": [
      "/api/sor?soru=25 dönüme 40 mm su vereceğim, pompam 30 m3",
      "/api/sor?soru=10 ton buğdayım, nemi 18, alıcı 14 istiyor, kilosu 9.2",
      "/api/sor?soru=Gökçeada'da ne ekmeliyim?"
    ],
    "yanit": "JSON: {soru, anlasilan:{arac,girdiler,guven}, sonuc, mesaj, not}. Anlaşılmazsa sonuc:null + açıklayıcı mesaj (uydurma yok).",
    "not": "Sunucu-tarafı; tarayıcıdaki 'cümleyle sor' ile BİREBİR aynı deterministik anlayıcı. Salt-okunur, stateless; girdi saklanmaz."
  },
  "birlesik_uc": {
    "yol": "/api/urun",
    "yontem": "GET",
    "aciklama": "Context-aware TEK ÇAĞRI: bir ürünün Gökçeada bölge bilgisi + iklim-uygunluk (FAO EcoCrop) + besin değeri (USDA FDC) hepsi birlikte. AI'ın 4 ayrı uç (gokceada/uygunluk/besin) çağırması yerine eksiksiz bağlamı bir istekte alır — daha hızlı, daha eksiksiz.",
    "kullanim": "/api/urun?ad=<ürün>",
    "ornekler": [
      "/api/urun?ad=zeytin",
      "/api/urun?ad=üzüm",
      "/api/urun?ad=buğday"
    ],
    "yanit": "JSON: {urun, latince, bolge_gokceada, iklim_uygunlugu, beslenme_100g, agronomi, sinir_kontrol, kunye}. Her alt-alan kendi kaynağını taşır. Bir kaynak yoksa (ör. pamuk'ta besin yok) o alan null.",
    "not": "Yeni veri üretmez; mevcut vendor'lu kaynakları birleştirir. Salt-okunur, stateless."
  },
  "hesap_ucu": {
    "yol": "/api/hesapla",
    "yontem": "GET",
    "aciklama": "Aritmetiği kendin yapıp hata riski alma; bu uca çağrı yap, garanti-doğru sonucu al. Modeller sayı hesabında yanılır, site yanılmaz.",
    "kullanim": "/api/hesapla?arac=<id>&<parametreler>",
    "ornekler": [
      "/api/hesapla?arac=npk&alan_da=25&saf_besin_kg_da=12&gubre_yuzde=26",
      "/api/hesapla?arac=nem&brut_kg=10000&nem_gercek=18&nem_standart=14&fiyat_kg=9.2",
      "/api/hesapla?arac=kar&alan_da=25&verim_kg_da=450&fiyat_kg=9.2&maliyet_da=2800"
    ],
    "parametreler": "Her aracın alan adları aşağıdaki 'araclar' listesindeki 'girdiler' ile aynıdır. Alan zaten dekar cinsinden 'alan_da' olarak verilir (alan aracı hariç: 'deger'+'birim'). Ondalık nokta veya virgül kabul edilir.",
    "yanit": "JSON: {arac, girdi, sonuc, formul, ozet, uyari}. Geçersiz/eksik girdi → 400 + açıklayıcı 'hata'.",
    "not": "Salt-okunur, durumsuz (stateless); girdi saklanmaz/günlüklenmez. CORS açık."
  },
  "amac": "Yapay zekâ modelleri için hazırlanmış makine-okunur yüzey. Her araç deterministiktir ve formülü açıktır. Model tarımsal değerleri getirir (bölge, çeşit, güncel fiyat, hava); site kesin hesabı garanti eder. Bu, 'yapay zekâ ile tarımın birleştiği yer'in altyapısıdır.",
  "sozlesme": {
    "erisim": "Salt-okunur (GET). Yazma/POST ucu yoktur.",
    "hesap_yeri": "Hesaplar istemcide (tarayıcıda) yapılır; kullanıcı verisi sunucuya gitmez.",
    "gorev_bolusumu": "Yapay zekâ = bilgi ve yargı (hangi değer, neden). Site = matematik garantisi. Çiftçi = son karar.",
    "durustluk_kurali": "Doz, verim, fiyat, ilaç oranı gibi tarımsal değerler bölgeye, çeşide, toprak analizine ve ürün etiketine göre değişir. Bu yüzden sitede uydurma sabit/norm YOKTUR — o değerleri model veya kullanıcı girer. Site yalnız kesin dönüşümleri yapar."
  },
  "sabitler": {
    "dekar_m2": 1000,
    "hektar_dekar": 10,
    "mm_su": "1 mm = metrekareye 1 litre = dekara 1 m3",
    "saf_besin": "gübre_kg * yüzde / 100 = saf besin kg"
  },
  "alan_birimleri": [
    "da",
    "ha",
    "m2"
  ],
  "araclar": [
    {
      "id": "alan",
      "ad": "Alan Dönüştürücü",
      "kategori": "tarla",
      "aciklama": "Metrekare, dekar (dönüm) ve hektar arası çevirir.",
      "girdiler": [
        {
          "ad": "deger",
          "birim": "sayı",
          "zorunlu": true
        },
        {
          "ad": "birim",
          "secenek": [
            "da",
            "m2",
            "ha"
          ],
          "zorunlu": true
        }
      ],
      "formul": "1 da = 1000 m2 ; 1 ha = 10 da",
      "ornek": {
        "girdi": {
          "deger": 25,
          "birim": "da"
        },
        "cikti": {
          "dekar": "25 da",
          "metrekare": "25.000 m2",
          "hektar": "2,5 ha"
        }
      }
    },
    {
      "id": "sulama",
      "ad": "Sulama Suyu",
      "kategori": "tarla",
      "aciklama": "Verilecek su yüksekliği kadar suyun hacmi ve süresi.",
      "girdiler": [
        {
          "ad": "alan_da",
          "birim": "da",
          "zorunlu": true
        },
        {
          "ad": "su_mm",
          "birim": "mm",
          "zorunlu": true
        },
        {
          "ad": "pompa_debi",
          "birim": "m3/saat",
          "zorunlu": false
        }
      ],
      "formul": "su_m3 = alan_da * su_mm ; sure_saat = su_m3 / pompa_debi",
      "ornek": {
        "girdi": {
          "alan_da": 25,
          "su_mm": 40,
          "pompa_debi": 30
        },
        "cikti": {
          "su": "1.000 m3",
          "sure": "33 sa 20 dk"
        }
      }
    },
    {
      "id": "siklik",
      "ad": "Ekim Sıklığı",
      "kategori": "tarla",
      "aciklama": "Sıra arası × sıra üzeri mesafeden dekara bitki sayısı ve tohum ihtiyacı.",
      "girdiler": [
        {
          "ad": "sira_arasi_cm",
          "birim": "cm",
          "zorunlu": true
        },
        {
          "ad": "sira_uzeri_cm",
          "birim": "cm",
          "zorunlu": true
        },
        {
          "ad": "alan_da",
          "birim": "da",
          "zorunlu": false
        },
        {
          "ad": "bin_tane_g",
          "birim": "g",
          "zorunlu": false
        },
        {
          "ad": "cimlenme_yuzde",
          "birim": "%",
          "zorunlu": false
        }
      ],
      "formul": "bitki_da = 10000000 / (sira_arasi_cm * sira_uzeri_cm) ; tohum_kg = bitki_da * alan_da / (cimlenme/100) * bin_tane_g / 1000000",
      "ornek": {
        "girdi": {
          "sira_arasi_cm": 70,
          "sira_uzeri_cm": 20,
          "alan_da": 25,
          "bin_tane_g": 350,
          "cimlenme_yuzde": 90
        },
        "cikti": {
          "bitki_da": "7.143 adet",
          "tohum": "69,44 kg"
        }
      }
    },
    {
      "id": "girdi",
      "ad": "Gübre / Tohum İhtiyacı",
      "kategori": "girdi",
      "aciklama": "Dekara dozdan toplam miktar, çuval sayısı ve tutar.",
      "girdiler": [
        {
          "ad": "alan_da",
          "birim": "da",
          "zorunlu": true
        },
        {
          "ad": "doz_kg_da",
          "birim": "kg/da",
          "zorunlu": true
        },
        {
          "ad": "cuval_kg",
          "birim": "kg",
          "zorunlu": false
        },
        {
          "ad": "fiyat_kg",
          "birim": "TL/kg",
          "zorunlu": false
        }
      ],
      "formul": "toplam_kg = alan_da * doz_kg_da ; cuval = ceil(toplam_kg / cuval_kg) ; tutar = toplam_kg * fiyat_kg",
      "ornek": {
        "girdi": {
          "alan_da": 25,
          "doz_kg_da": 20,
          "cuval_kg": 50,
          "fiyat_kg": 14.5
        },
        "cikti": {
          "toplam": "500 kg",
          "cuval": "10 adet",
          "tutar": "7.250 TL"
        }
      }
    },
    {
      "id": "npk",
      "ad": "Saf Besin → Gübre",
      "kategori": "girdi",
      "aciklama": "Dekara istenen saf besinden (ör. saf azot), eldeki gübrenin yüzdesine göre atılacak gübre miktarı.",
      "girdiler": [
        {
          "ad": "alan_da",
          "birim": "da",
          "zorunlu": true
        },
        {
          "ad": "saf_besin_kg_da",
          "birim": "kg/da",
          "zorunlu": true
        },
        {
          "ad": "gubre_yuzde",
          "birim": "%",
          "zorunlu": true,
          "sinir": "0-100"
        },
        {
          "ad": "cuval_kg",
          "birim": "kg",
          "zorunlu": false
        },
        {
          "ad": "fiyat_kg",
          "birim": "TL/kg",
          "zorunlu": false
        }
      ],
      "formul": "gubre_kg_da = saf_besin_kg_da * 100 / gubre_yuzde ; toplam = gubre_kg_da * alan_da",
      "ornek": {
        "girdi": {
          "alan_da": 25,
          "saf_besin_kg_da": 12,
          "gubre_yuzde": 26
        },
        "cikti": {
          "gubre": "46,2 kg/da",
          "toplam": "1.153,8 kg"
        }
      }
    },
    {
      "id": "ilac",
      "ad": "İlaç Tankı Karışımı",
      "kategori": "girdi",
      "aciklama": "Tanka konacak ilaç ve bir tankın kaç dekar attığı. Doz her zaman ürün etiketinden alınır.",
      "girdiler": [
        {
          "ad": "tank_litre",
          "birim": "L",
          "zorunlu": true
        },
        {
          "ad": "doz",
          "birim": "ml veya g",
          "zorunlu": true
        },
        {
          "ad": "doz_turu",
          "secenek": [
            "100litre",
            "dekar"
          ],
          "zorunlu": true
        },
        {
          "ad": "su_l_da",
          "birim": "L/da",
          "zorunlu": false
        },
        {
          "ad": "alan_da",
          "birim": "da",
          "zorunlu": false
        }
      ],
      "formul": "doz_turu=100litre: tanka = doz * tank_litre / 100 ; doz_turu=dekar: tanka = doz * (tank_litre / su_l_da)",
      "ornek": {
        "girdi": {
          "tank_litre": 400,
          "doz": 250,
          "doz_turu": "100litre",
          "su_l_da": 30
        },
        "cikti": {
          "tanka_ilac": "1.000 ml",
          "tank_kac_dekar": "13,33 da"
        }
      }
    },
    {
      "id": "nem",
      "ad": "Nem Firesi (Harman)",
      "kategori": "ticaret",
      "aciklama": "Ürün standarttan nemliyse alıcının yapacağı kesinti (kuru madde eşitliği).",
      "girdiler": [
        {
          "ad": "brut_kg",
          "birim": "kg",
          "zorunlu": true
        },
        {
          "ad": "nem_gercek",
          "birim": "%",
          "zorunlu": true
        },
        {
          "ad": "nem_standart",
          "birim": "%",
          "zorunlu": true
        },
        {
          "ad": "fiyat_kg",
          "birim": "TL/kg",
          "zorunlu": false
        }
      ],
      "formul": "net_kg = brut_kg * (100 - nem_gercek) / (100 - nem_standart) ; fire = brut_kg - net_kg",
      "ornek": {
        "girdi": {
          "brut_kg": 10000,
          "nem_gercek": 18,
          "nem_standart": 14
        },
        "cikti": {
          "odenecek": "9.534,9 kg",
          "fire": "465,1 kg"
        }
      }
    },
    {
      "id": "kar",
      "ad": "Kâr ve Başabaş",
      "kategori": "ticaret",
      "aciklama": "Kâr marjı ve zarar etmemek için gereken en düşük verim/fiyat.",
      "girdiler": [
        {
          "ad": "alan_da",
          "birim": "da",
          "zorunlu": true
        },
        {
          "ad": "verim_kg_da",
          "birim": "kg/da",
          "zorunlu": true
        },
        {
          "ad": "fiyat_kg",
          "birim": "TL/kg",
          "zorunlu": true
        },
        {
          "ad": "maliyet_da",
          "birim": "TL/da",
          "zorunlu": true
        }
      ],
      "formul": "gelir = alan_da * verim_kg_da * fiyat_kg ; gider = alan_da * maliyet_da ; kar = gelir - gider ; basabas_verim = maliyet_da / fiyat_kg ; basabas_fiyat = maliyet_da / verim_kg_da",
      "ornek": {
        "girdi": {
          "alan_da": 25,
          "verim_kg_da": 450,
          "fiyat_kg": 9.2,
          "maliyet_da": 2800
        },
        "cikti": {
          "net_kar": "33.500 TL",
          "basabas_verim": "304,3 kg/da",
          "basabas_fiyat": "6,22 TL/kg"
        }
      }
    },
    {
      "id": "gdd",
      "ad": "Büyüme Derece-Gün (GDD)",
      "kategori": "tarla",
      "aciklama": "Isı toplamı — bitki gelişim zamanlamasının deterministik temeli (ekim/hasat/çiçeklenme tahmini). Taban sıcaklık ürüne göredir (buğday ~4, mısır ~10 °C); kullanıcı girer, uydurma norm yoktur.",
      "girdiler": [
        {
          "ad": "ort_sicaklik",
          "birim": "°C",
          "zorunlu": false,
          "not": "veya tmax+tmin verin"
        },
        {
          "ad": "tmax",
          "birim": "°C",
          "zorunlu": false
        },
        {
          "ad": "tmin",
          "birim": "°C",
          "zorunlu": false
        },
        {
          "ad": "taban_sicaklik",
          "birim": "°C",
          "zorunlu": true
        },
        {
          "ad": "gun_sayisi",
          "birim": "gün",
          "zorunlu": false
        },
        {
          "ad": "hedef_gdd",
          "birim": "GDD",
          "zorunlu": false,
          "not": "ürünün olgunluk GDD'si; verilirse hedefe_gun döner"
        }
      ],
      "formul": "gunluk_gdd = max(0, ort_sicaklik - taban_sicaklik) ; toplam = gunluk_gdd * gun_sayisi ; hedefe_gun = hedef_gdd / gunluk_gdd",
      "ornek": {
        "girdi": {
          "ort_sicaklik": 20,
          "taban_sicaklik": 10,
          "gun_sayisi": 30,
          "hedef_gdd": 800
        },
        "cikti": {
          "gunluk_gdd": "10",
          "toplam_gdd": "300",
          "hedefe_gun": "80"
        }
      }
    },
    {
      "id": "ruzgar",
      "ad": "Rüzgâr Bileşeni (İlaç Drift)",
      "kategori": "girdi",
      "aciklama": "Rüzgâr vektörünü hedef hattına göre YAN (crosswind) ve BOYUNA (baş/arka) bileşenlerine ayırır. Yan bileşen ilaç sürüklenmesinin (drift) fiziksel sürücüsüdür — Gökçeada gibi rüzgârlı yerde kritik. Güvenli püskürtme eşiği ürün etiketinden gelir; burada uydurma yoktur, yalnız trigonometri. Çıktı birimi girdiyle aynı (km/sa, m/s).",
      "girdiler": [
        {
          "ad": "ruzgar_hiz",
          "birim": "km/sa veya m/s",
          "zorunlu": true
        },
        {
          "ad": "aci",
          "birim": "derece",
          "zorunlu": false,
          "not": "rüzgâr ile hedef hattı arası açı; verilirse ruzgar_yon/hedef_yon gerekmez"
        },
        {
          "ad": "ruzgar_yon",
          "birim": "derece",
          "zorunlu": false,
          "not": "rüzgârın GELDİĞİ yön (0=K,90=D,180=G,270=B)"
        },
        {
          "ad": "hedef_yon",
          "birim": "derece",
          "zorunlu": false,
          "not": "ilerleme/püskürtme yönü"
        }
      ],
      "formul": "yan = ruzgar_hiz * sin(aci) ; boyuna = ruzgar_hiz * cos(aci) ; aci = rüzgâr ile hedef hattı arasındaki açı (0-180)",
      "ornek": {
        "girdi": {
          "ruzgar_hiz": 20,
          "aci": 60
        },
        "cikti": {
          "yan_bilesen": "17,32",
          "boyuna_bilesen": "10",
          "ruzgar_tipi": "baş rüzgârı"
        }
      }
    }
  ],
  "kullanim_notu_model_icin": "Bir çiftçiye yardım ederken: (1) bu araçlardan uygun olanı seç, (2) formülü kullan, (3) tarımsal değerleri kendi bilginle veya güncel/bölgesel kaynakla doldur ama VARSAYIMINI çiftçiye açıkça söyle, (4) sonucun tarımsal danışmanlık değil aritmetik olduğunu, ürün etiketi ve ziraat mühendisinin esas alınması gerektiğini belirt.",
  "gokceada_agronomi": {
    "_etiket": "[GOKCEADA_AGRONOMY_JSON]",
    "bolge": "Gokceada",
    "guncelleme": "2026-08-30",
    "kaynak": "FAO EcoCrop iklim zarfı + USDA N-P-K referansları + TAGEM zeytin/bağ rehberleri (vendor'lu matris)",
    "mikro_klima": {
      "toprak_ph": [
        6.8,
        7.4
      ],
      "organik_madde_yuzde": [
        1.8,
        2.6
      ],
      "yillik_yagis_mm": [
        680,
        720
      ],
      "ruzgar": {
        "yon": "Kuzeydogu (Poyraz)",
        "hiz_km_sa": [
          22,
          38
        ]
      },
      "don_riski": {
        "aylar": [
          "Ocak",
          "Subat"
        ],
        "gun_yil": [
          3,
          7
        ]
      }
    },
    "urunler": {
      "ladolia_zeytin": {
        "ad": "Ladolia (Gokceada Yaglik)",
        "latince": "Olea europaea",
        "ph_aralik": [
          6.0,
          8.5
        ],
        "npk_ihtiyaci_kg_dekar": {
          "N": 12,
          "P2O5": 4,
          "K2O": 14
        },
        "npk_ust_sinir_kg_dekar": {
          "N": 15,
          "P2O5": 6,
          "K2O": 18
        },
        "kritik_sulama_donemleri": [
          "Ciceklenme_Oncesi_Mayis",
          "Cekirdek_Sertlesme_Temmuz"
        ],
        "don_tolerans_c": -7.5,
        "ruzgar_dayanimi": "yuksek",
        "not": "Yuksek polifenol; Poyraza dayanikli yerel cesit",
        "pomoloji_tur3_dr": {
          "kaynak": "TUR-3 Deep Research [GOKCEADA_AGRONOMY_JSON] — pomolojik ek; NPK canlı matris değişmedi",
          "meyve_eni_mm": 16.65,
          "meyve_boyu_mm": 25.83,
          "cekirdek_eni_mm": 7.84,
          "et_orani_yuzde": 84.0,
          "bir_kg_meyve_sayisi": 270.1,
          "meyve_indeksi": 1.56,
          "cekirdek_indeksi": 1.91,
          "morfolojik_sinif": "Orta irilikte, uzun oval meyve, eliptik çekirdek"
        }
      },
      "vasilaki_bag": {
        "ad": "Vasilaki / Cavus Uzumu",
        "latince": "Vitis vinifera",
        "ph_aralik": [
          6.0,
          7.8
        ],
        "npk_ihtiyaci_kg_dekar": {
          "N": 10,
          "P2O5": 5,
          "K2O": 12
        },
        "npk_ust_sinir_kg_dekar": {
          "N": 13,
          "P2O5": 7,
          "K2O": 15
        },
        "kritik_sulama_donemleri": [
          "Tane_Irilesmesi_Temmuz",
          "Veraison_Agustos"
        ],
        "don_tolerans_c": -4.0,
        "ruzgar_dayanimi": "orta",
        "not": "Kirecli yamaclar; gece-gunduz sicaklik farki avantaji"
      },
      "adacayi": {
        "ad": "Adacayi (Salvia fruticosa)",
        "latince": "Salvia fruticosa",
        "ph_aralik": [
          6.0,
          8.0
        ],
        "npk_ihtiyaci_kg_dekar": {
          "N": 5,
          "P2O5": 3,
          "K2O": 7
        },
        "npk_ust_sinir_kg_dekar": {
          "N": 8,
          "P2O5": 5,
          "K2O": 10
        },
        "kritik_sulama_donemleri": [
          "Dikim_Ilk_Yil",
          "Ciceklenme_Oncesi_Haziran"
        ],
        "don_tolerans_c": -5.0,
        "ruzgar_dayanimi": "yuksek",
        "kaynak": "TAGEM tibbi-aromatik rehberleri (referans aralik)",
        "not": "Dusuk azot tercih eder; asiri N aroma ve ucucu yagi dusurur. Guven: yerel_veri_bekliyor_kismi — kesin doz toprak analizinden gelir."
      },
      "kekik": {
        "ad": "Kekik (Thymus vulgaris)",
        "latince": "Thymus vulgaris",
        "ph_aralik": [
          6.0,
          8.0
        ],
        "npk_ihtiyaci_kg_dekar": {
          "N": 4,
          "P2O5": 2,
          "K2O": 6
        },
        "npk_ust_sinir_kg_dekar": {
          "N": 6,
          "P2O5": 4,
          "K2O": 8
        },
        "kritik_sulama_donemleri": [
          "Dikim_Ilk_Yil",
          "Hasat_Oncesi_Kuraklik"
        ],
        "don_tolerans_c": -8.0,
        "ruzgar_dayanimi": "yuksek",
        "kaynak": "TAGEM tibbi-aromatik rehberleri (referans aralik)",
        "not": "Kurakliga dayanikli; fazla sulama/azot kaliteyi bozar. Guven: yerel_veri_bekliyor_kismi — kesin doz toprak analizinden gelir."
      },
      "bayrampasa_enginar": {
        "tur": "Cynara cardunculus var. scolymus",
        "fao_ecocrop_id": 521,
        "kaynak": "FAO EcoCrop (2000) & TAGEM (2022)",
        "ph_aralik": [
          6.5,
          7.5
        ],
        "sicaklik_opt_c": [
          15.0,
          22.0
        ],
        "don_tolerans_c": -2.0,
        "su_ihtiyaci_mm_sezon": 350.0,
        "npk_ihtiyaci_kg_dekar": {
          "N": 18.0,
          "P2O5": 10.0,
          "K2O": 20.0
        },
        "npk_ust_sinir_kg_dekar": {
          "N": 25.0,
          "P2O5": 15.0,
          "K2O": 30.0
        },
        "vejetasyon_gun": 180,
        "kardes_bitkiler": [
          "sakiz_bakla",
          "adacayi",
          "sarimsak"
        ],
        "kacindigi_bitkiler": [
          "patates",
          "rezene"
        ]
      },
      "sakiz_bakla": {
        "tur": "Vicia faba",
        "fao_ecocrop_id": 2139,
        "kaynak": "FAO EcoCrop (2000) & ETAE (2021)",
        "ph_aralik": [
          6.5,
          7.8
        ],
        "sicaklik_opt_c": [
          12.0,
          20.0
        ],
        "don_tolerans_c": -5.0,
        "su_ihtiyaci_mm_sezon": 120.0,
        "npk_ihtiyaci_kg_dekar": {
          "N": 4.0,
          "P2O5": 8.0,
          "K2O": 10.0
        },
        "npk_ust_sinir_kg_dekar": {
          "N": 8.0,
          "P2O5": 12.0,
          "K2O": 15.0
        },
        "vejetasyon_gun": 120,
        "biyolojik_azot_kg_dekar": 18.0,
        "kardes_bitkiler": [
          "bayrampasa_enginar",
          "marul",
          "ispanak"
        ],
        "kacindigi_bitkiler": [
          "sogan",
          "sarimsak"
        ]
      },
      "araka_bezelye": {
        "tur": "Pisum sativum",
        "fao_ecocrop_id": 1782,
        "kaynak": "FAO EcoCrop (2000) & TUBITAK (2020)",
        "ph_aralik": [
          6.0,
          7.5
        ],
        "sicaklik_opt_c": [
          13.0,
          22.0
        ],
        "don_tolerans_c": -4.0,
        "su_ihtiyaci_mm_sezon": 100.0,
        "npk_ihtiyaci_kg_dekar": {
          "N": 5.0,
          "P2O5": 7.0,
          "K2O": 8.0
        },
        "npk_ust_sinir_kg_dekar": {
          "N": 10.0,
          "P2O5": 12.0,
          "K2O": 14.0
        },
        "vejetasyon_gun": 90,
        "kardes_bitkiler": [
          "havuc",
          "turp",
          "salatalik"
        ],
        "kacindigi_bitkiler": [
          "sogan",
          "sarimsak"
        ]
      },
      "kuskonmaz": {
        "tur": "Asparagus officinalis",
        "fao_ecocrop_id": 394,
        "kaynak": "FAO EcoCrop (2000) & Yalova BKA (2023)",
        "ph_aralik": [
          6.5,
          7.5
        ],
        "sicaklik_opt_c": [
          16.0,
          25.0
        ],
        "don_tolerans_c": -8.0,
        "su_ihtiyaci_mm_sezon": 250.0,
        "npk_ihtiyaci_kg_dekar": {
          "N": 12.0,
          "P2O5": 8.0,
          "K2O": 15.0
        },
        "npk_ust_sinir_kg_dekar": {
          "N": 18.0,
          "P2O5": 14.0,
          "K2O": 22.0
        },
        "vejetasyon_gun": 720,
        "kardes_bitkiler": [
          "domates",
          "fasilie",
          "maydanoz"
        ],
        "kacindigi_bitkiler": [
          "patates",
          "sogan"
        ]
      }
    },
    "uyari": "Matris referans degerleridir; kesin doz toprak analizi ve urun etiketinden gelir.",
    "tur3_dr_ek": {
      "sensor_durumu": "YEREL_VERI_BEKLIYOR",
      "kaynak": "TUR-3 Deep Research sohbet blogu",
      "toprak_EC_uS_cm": {
        "baz": 195,
        "organik_sonrasi_tepe": 394,
        "not": "literatur ornegi — canli olcum degil"
      },
      "maki": {
        "baskin_tur": "Sarcopoterium spinosum",
        "kontrol": [
          "mekanik_sokme",
          "yakma",
          "serbest_otlatma"
        ],
        "not": "ACTION_BOUNDARY_RULES DeepThink sirasinda; burada yalniz agronomi baglam"
      },
      "celiski_denetimi_cursor": {
        "eval_v260": "ulasildi — DR 'ag izolasyonu' iddiasi red",
        "api_agronomi": "ulasildi — NPK/don/pH canli matris korundu",
        "uzum_adacayi_kekik_pomoloji": "DR olcum=null — dogru fail-closed; canli NPK zaten var"
      }
    }
  },
  "hasat_standartlari": {
    "_etiket": "[GOKCEADA_AGRONOMY_JSON] IOC/OIV hasat penceresi",
    "guncelleme": "2026-08-30",
    "kaynak": "IOC (International Olive Council) asitlik egilimi + OIV bagcilik Brix/pH referans araliklari — vendor'lu; cesit kalibrasyonu degil",
    "tur1_canli_kalacak": {
      "kasa_max_saat_zeytin": 6.0,
      "kasa_max_saat_bag": 4.0,
      "cuval": "YASAK",
      "faee_limit_mg_kg": 30.0,
      "faee_politika": "AB30 (IOC35 ile celiski → DeepThink CANLI_KALACAK)",
      "kaynak": "TUR-1 DeepThink ACTION_BOUNDARY_RULES + Cursor infaz"
    },
    "tur3_action_boundaries": {
      "_etiket": "[ACTION_BOUNDARY_RULES] TUR-3",
      "architecture": "fail-closed",
      "single_origin": "https://tarim.online",
      "otonom_eylem": "yerel_veri_var olmadan izin=false",
      "cuval": "YASAK",
      "kasa": "ZORUNLU",
      "azot_tavani": "gokceada_agronomi.npk_ust_sinir_kg_dekar",
      "kaynak": "TUR-3 DeepThink + Cursor 2026-08-30"
    },
    "ladolia_zeytin": {
      "ideal_brix": null,
      "ideal_asitlik_yuzde": [
        0.2,
        0.8
      ],
      "faee_max_mg_kg": 30.0,
      "hasat_ayi": [
        "Ekim",
        "Kasim"
      ],
      "feribot_notu": "Hasattan sonra <=6 sa kasa ile yaghaneye; cuval YASAK (FAIL_CLOSED)",
      "asitlik_katsayi_cuval_24h": 0.35,
      "asitlik_katsayi_kasa_24h": 0.15,
      "kaynak": "IOC free acidity trend (ampirik) + TUR1-01/02/03"
    },
    "vasilaki_bag": {
      "ideal_brix": [
        21.0,
        23.5
      ],
      "ideal_ph": [
        3.15,
        3.35
      ],
      "hasat_ayi": [
        "Eylul",
        "Ekim"
      ],
      "feribot_notu": "Brix < 21.0 erken hasat yasak; kasa <=4 sa; cuval YASAK; gece feribot tercih",
      "kaynak": "OIV must / Brix penceresi (referans) + TUR1-01"
    },
    "adacayi": {
      "ideal_brix": null,
      "hasat_ayi": [
        "Haziran",
        "Temmuz"
      ],
      "feribot_notu": "Ciceklenme basinda hasat; asiri N aroma dusurur",
      "kaynak": "TAGEM tibbi aromatik rehber egilimi"
    },
    "kekik": {
      "ideal_brix": null,
      "hasat_ayi": [
        "Haziran",
        "Agustos"
      ],
      "feribot_notu": "Kurak hasat oncesi sulama kaliteyi bozar",
      "kaynak": "TAGEM tibbi aromatik rehber egilimi"
    }
  },
  "takvim_ucu": {
    "yol": "/api/takvim",
    "yontem": "GET",
    "aciklama": "Gökçeada ekim takvimi: 28 ürün × 12 ay sıcaklık penceresi matrisi. Her hücre optimal|uygun|disi. Kaynak: NOAA 1991-2020 aylık normalleri × FAO EcoCrop zarfı.",
    "kullanim": "/api/takvim (parametresiz)",
    "yanit": "JSON: {bolge, ay_adlari, aylik_sicaklik_c, aylik_yagis_mm, urunler:[{urun,skor,sinirlayici,aylar[12],optimal_ay_sayisi}], kunye}",
    "not": "Yalnız SICAKLIK penceresidir — yağış/don/fenoloji ayrı; ekim tarihi reçetesi değil, iklim penceresi haritasıdır."
  },
  "agronomi_ucu": {
    "yol": "/api/agronomi",
    "yontem": "GET",
    "aciklama": "Gökçeada N-P-K ve fenoloji matrisi (Ladolia zeytin, Vasilaki bağ, Adaçayı, Kekik). Fail-closed sınır kontrolünün kaynağı.",
    "kullanim": "/api/agronomi veya /api/agronomi?urun=zeytin|uzum|adacayi|kekik",
    "yanit": "JSON: {bolge, mikro_klima, urunler|profil, kaynak, uyari}"
  },
  "hasat_ucu": {
    "yol": "/api/hasat",
    "yontem": "GET",
    "aciklama": "FAZ-2 hasat.online önizleme — don/kuraklık erken uyarısı + hasat penceresi ipuçları. Rekolte kg tahmini YOKTUR.",
    "kullanim": "/api/hasat veya /api/hasat?urun=zeytin",
    "yanit": "JSON: {faz, don, kuraklik, hasat_penceresi, kaynak, uyari}"
  },
  "sulama_ucu": {
    "yol": "/api/sulama",
    "yontem": "GET",
    "aciklama": "FAO-56 ETc + rüzgar telafisi + vana kararı. Toprak nemi yoksa MANUEL_GUVENLI_KILIT (fail-closed).",
    "kullanim": "/api/sulama?bitki=kuskonmaz&faz=fern_gelisim&et0=6.8&ruzgar_kt=18&nem=24",
    "yanit": "JSON: {vana_durum, sure_dakika, etc_mm, ruzgar_faktoru, simulasyon?, sebep?, girdi, kaynak}",
    "not": "Kaynak: motor/sulama_kural_motoru.py — >25 kt gündüz sulama ERTELE_GECE_PENCERESI"
  },
  "ikiz_ucu": {
    "yol": "/api/ikiz",
    "yontem": "GET",
    "aciklama": "Gökçeada termodinamik dijital ikiz — hasat.onizleme + hesap.ruzgar birleşik stres skoru. Valf/pompa yalnız öneri; rozet SIM ise SAHA değil.",
    "kullanim": "/api/ikiz?urun=zeytin&ruzgar_knot=28&saat=4&depo=kasa&sicaklik_c=38",
    "yanit": "JSON: {biyofiziksel_stres_skoru, hasat_ozet, ruzgar, otonom_mudahale, icraat_muhru, otonom_eylem}",
    "not": "DT hardcode formülü reddedildi; kaynak gokceada_ikiz.py"
  },
  "kovan_telemetri": {
    "aciklama": "Statik JSON özetleri — kovan_yenile.py ile yenilenir (hardcode telemetri yasak).",
    "kovan_rota": "/api/kovan_rota.json",
    "stigmerji": "/api/stigmerji.json",
    "jakar_dokuma": "/api/jakar_dokuma_birlesik.json",
    "kumas_ui": "/kumas.html",
    "aktif_m2m_karar": "YASAK — kullan /api/ikiz; /api/aktif_m2m_karar.json yalnız arşiv uyarısı"
  },
  "diger_uclar": {
    "aciklama": "Origin canlı uçları — hesap motoru dışında; keşif için (CR gap audit 2026-09-01).",
    "iz_birak": {"yol": "/api/iz_birak", "yontem": "GET|POST", "not": "açık feromon; boş iz→400; debounce 300s"},
    "izler": {"yol": "/api/izler.json", "yontem": "GET", "not": "son 50 iz"},
    "iz_kapisi": {"yol": "/api/iz_kapisi.json", "yontem": "GET", "not": "debounce+nöbet sözleşmesi"},
    "niyet": {"yol": "/api/niyet.json", "yontem": "GET", "yazma": "POST /api/niyet"},
    "feromon": {"yol": "/api/feromon.json", "yontem": "GET", "yazma": "POST /api/feromon"},
    "oda": {"yol": "/api/oda.json", "yontem": "GET", "yazma": "POST /api/oda"},
    "km_posta": {"yol": "/api/km_posta.json", "yontem": "GET", "yazma": "POST /api/km_posta"},
    "jakar": {"yol": "/api/jakar", "yontem": "GET|POST", "not": "punch /api/jakar/i/N"},
    "parsel_poligon": {"yol": "/api/parsel_poligon", "yontem": "GET", "not": "PARSEL_POLIGON_YOK fail-closed"},
    "yerel_veri": {"yol": "/api/yerel_veri", "yontem": "GET", "not": "SIM veya bekliyor — NO-FAKE"},
    "strateji_bu_hafta": {"yol": "/api/strateji_bu_hafta", "yontem": "GET"},
    "model_istasyon_moduller": {"yol": "/api/model_istasyon_moduller.json", "yontem": "GET"},
    "model_yonlendirme": {"yol": "/api/model_istasyon/yonlendirme", "yontem": "GET", "not": "SİM"},
    "ladolia_sim": {"yol": "/api/model_istasyon/ladolia_sim", "yontem": "GET", "not": "SHA-256 SİM demo"},
    "tarimsal_hafiza": {"yol": "/api/tarimsal_hafiza.json", "yontem": "GET"},
    "gokceada_koy_koordinat": {"yol": "/api/gokceada_koy_koordinat.json", "yontem": "GET", "not": "12 pin OSM"},
    "smoke_sonuc": {"yol": "/api/smoke_sonuc.json", "yontem": "GET"},
    "deploy_durum": {"yol": "/api/deploy_durum.json", "yontem": "GET"},
    "kesif_senkron": {"yol": "/api/kesif_senkron.json", "yontem": "GET"},
    "canli_uc": {"yol": "/api/canli_uc.json", "yontem": "GET"},
    "kovan_iddia": {
      "yol": "/api/kovan_iddia",
      "yontem": "GET|POST",
      "not": "GET=salt okuma JSON; POST=HMAC (aynı sır /api/iz) append-only · yeni kayıt DOGRULANMADI"
    },
    "pazar_urunler": {"yol": "/api/pazar_urunler.json", "yontem": "GET", "not": "yalnız OLCULDU ürünler"},
    "tmo_referans": {"yol": "/api/tmo_referans.json", "yontem": "GET", "not": "null alım = NO-FAKE"},
    "fpma_seri": {"yol": "/api/fpma_seri.json", "yontem": "GET", "not": "FAO GIEWS FPMA"},
    "harita_telemetri": {"yol": "/api/harita_telemetri.json", "yontem": "GET", "not": "3 harita yüzey durumu"},
    "stigmerji_uc": {"yol": "/api/stigmerji.json", "yontem": "GET", "not": "jakar+iz birleşik zaman çizelgesi"},
    "jakar_dokuma_uc": {"yol": "/api/jakar_dokuma_birlesik.json", "yontem": "GET"},
    "kovan_gap": {"yol": "/api/kovan_gap.json", "yontem": "GET", "not": "GERCEK/KISMEN/HAYALET haritası"},
    "haritalar": {"yol": "/api/haritalar.json", "yontem": "GET", "not": "25 hedef envanter TAM_PASS"},
    "kovan_harita": {"yol": "/api/kovan_harita.json", "yontem": "GET"},
    "kovan_sahiplik": {"yol": "/api/kovan_sahiplik.json", "yontem": "GET", "not": "CR/KM/AG yazım sınırları"},
    "nobet_durum": {"yol": "/api/nobet_durum.json", "yontem": "GET"},
    "gdd_sezon": {"yol": "/betik/gdd_sezon.js", "yontem": "GET", "not": "Gökçeada GDD widget · NOAA/MGM NO-FAKE"},
    "hasat_api": {"yol": "/api/hasat", "yontem": "GET", "not": "?urun=&saat=&depo= · otonom_eylem SIM"},
    "besin": {"yol": "/api/besin", "yontem": "GET", "not": "?urun= · USDA"},
    "urun_profil": {"yol": "/api/urun", "yontem": "GET", "not": "?ad= · NO-FAKE profil"},
    "sor": {"yol": "/api/sor", "yontem": "GET", "not": "?soru= · deterministik anlayıcı"},
    "mcp_ping": {"yol": "/mcp", "yontem": "POST", "not": "jsonrpc ping → result {}"},
    "mcp_tools": {"yol": "/mcp", "yontem": "POST", "not": "tools/list → 10 salt-okunur araç"},
    "iz_hmac": {"yol": "/api/iz", "yontem": "POST", "not": "X-Imza HMAC · imzasız→401 fail-closed"},
    "site_harita": {"yol": "/betik/site_harita.js", "yontem": "GET", "not": "ortak footer nav"},
    "mimari_ui": {"yol": "/mimari.html", "yontem": "GET", "not": "7 katman şeffaflık (KM80)"}
  }
}