{
  "_not": "BU DOSYA BIR KARAR TABLOSUDUR, KOD DEGILDIR. Hicbir sayfa tarafindan <script src> ile yuklenmez, hicbir davranisi degistirmez. Amaci: 13 olu betigin akibetine (dirilt / karantinaya al / olduğu yerde bırak) KANITLA karar verilmesini saglamak.",
  "baslik": "tarim.online - olu betik envanteri ve diriltme karar tablosu",
  "olcum_tarihi": "2026-09-03",
  "olcum_ortami": {
    "web_koku": "C:/AIOS/tarim.online/web",
    "yerel_origin": "http://127.0.0.1:8270",
    "taranan_html": 77,
    "taranan_js": 54,
    "taranan_diger": 156
  },
  "ozet": {
    "olu_betik_sayisi": 13,
    "toplam_olu_bayt": 120962,
    "toplam_olu_kb": 118.1,
    "diriltilebilir_sayisi": 9,
    "diriltilebilir_tanim": "diriltme_maliyeti == 'kanca ekle' - kapsayici div + script satiri yeter, form yazmak gerekmez",
    "diriltilebilir_dosyalar": [
      "/betik/anlayici.js",
      "/betik/harita_iklim.js",
      "/betik/besin_radar.js",
      "/betik/gostergeler.js",
      "/betik/gokceada_ada_harita.js",
      "/betik/takvim_isi.js",
      "/betik/yerlesim.js",
      "/betik/kapilar.js",
      "/betik/niyet.js"
    ],
    "dirilt_onerilen_sayisi": 8,
    "dirilt_onerilen_dosyalar": [
      "/betik/araclar.js",
      "/betik/anlayici.js",
      "/betik/harita_iklim.js",
      "/betik/besin_radar.js",
      "/betik/takvim_isi.js",
      "/betik/yerlesim.js",
      "/betik/kapilar.js",
      "/betik/niyet.js"
    ],
    "veri_ucu_404_olan": 0,
    "veri_ucu_notu": "Olculen 11 ucun HICBIRI 404 degil; 'veri yok' kategorisinde kalem CIKMADI. Bu, olu betiklerin veri yoklugundan degil KANCA yoklugundan olu oldugunu gosteriyor.",
    "bilincli_olu_sayisi": 2,
    "bilincli_olu_dosyalar": [
      "/betik/gokceada_harita_tv.js",
      "/js/gokceada_harita_tv.js"
    ]
  },
  "yontem": {
    "olu_tanimi": "Hicbir HTML dosyasi bu betigi <script src> ile yuklemiyor.",
    "eslestirme": "TAM-YOL eslesmesi. Regex: (?<![A-Za-z0-9_.])<ad>\\.js(?![A-Za-z0-9_]) - sondaki negatif ileri-bakis '.json' uzantisini eler.",
    "alt_dizge_tuzagi": "ILK TURDA YASANDI: 'araclar.js' duz cip-eslesmesi 7 HTML dosyasinda eslesip betigi 'canli' gosterdi; hepsi 'araclar.json' idi. Ayni tuzak gokceada.js icin de 7 yanlis pozitif uretiyor. Bu yuzden alt-dizge YASAK, tam eslesme kullanildi.",
    "ayni_adli_dosya": "/betik/gokceada_harita_tv.js ve /js/gokceada_harita_tv.js ayni ada sahip AYRI dosyalardir (1105 vs 1005 bayt); yol-oneki ile ayristirildi.",
    "dinamik_yukleme": "HTML disinda 54 JS dosyasi da tarandi (import()/createElement('script')/.src ataması yoluyla dinamik yukleme icin). Tek bulgu: erisim.js icinde araclar.js'e ATIF var ama YUKLEME yok (yorum satiri: 'araclar.js'e dokunma').",
    "kanca_dogrulamasi": "Her betigin getElementById/querySelector hedefleri cikarildi ve 77 HTML'in tum id= ozniteliklerine karsi arandi. 'Var' bulunan kancalarda ayrica ANLAMSAL uyum elle kontrol edildi - gokceada.js/#uygunluk bu sayede yanlis pozitif olarak yakalandi (id var ama bir <h2> baslik capasi).",
    "uc_olcumu": "Her veri ucu yerel origin'e curl ile atildi; HTTP kodu ve govde semasi betigin okudugu alan adlariyla karsilastirildi. Parametre/metot kaynakli 400/405 yanitlari gercek istek ile yeniden olculdu (/mcp POST=200, /api/hesapla gercek senaryo=200).",
    "dokunulmayanlar": "Hicbir betik silindi/tasindi/degistirildi DEGIL (BLN-0004: ekle, yikma). Bu tur yalnizca bu JSON dosyasi yazildi."
  },
  "maliyet_sozlugu": {
    "kanca ekle": "Kapsayici div (+ gerekiyorsa birkac oznitelik) ve tek <script> satiri yeter.",
    "form yaz": "Cok sayida girdi alani / form isaretlemesi gerekir; tek div yetmez.",
    "veri yok": "Baglanacagi uc 404 - once veri uretilmeli. (Bu turda boyle kalem CIKMADI.)",
    "bilinçli ölü": "Dosyada @deprecated ya da esdegeri acik not var."
  },
  "kaptan_karari_bekleyen": [
    "gostergeler.js: /api/yerel_veri kaynagi 'sim_' onekli (simule istasyon). Dirilirse simule telemetri 'yerel olcum' rozetiyle gosterilir. Secenek A: karantina. Secenek B: 'sim_' onekli kaynagi reddeden kapi ekle. Secenek C: rozette acikca 'SIMULE' yaz.",
    "araclar.js + anlayici.js CIFT diriltme: araclar.js'i dirilten ajan anlayici.js'i de yuklemezse cumleyle-sor ozelligi 'Anlayici yuklenemedi' der. Sira: anlayici.js once.",
    "Bu dosya /api/olu_betik_envanteri.json olarak sunulacak; canli_uc.py ve deploy_durum.py bu ajanin sahipliginde OLMADIGI icin denetim kaydi EKLENMEDI."
  ],
  "betikler": [
    {
      "dosya": "/betik/araclar.js",
      "disk_yolu": "C:/AIOS/tarim.online/web/betik/araclar.js",
      "bayt": 37140,
      "satir": 998,
      "gercekten_olu": true,
      "olu_kaniti": "grep -rlE '<script[^>]*src=\"[^\"]*araclar\\.js' --include=*.html . -> 0 dosya  (tam-yol eslesme; alt-dizge DEGIL) | ALT-DIZGE TUZAGI: duz cip-eslesme yapilinca 7 HTML eslesir - hepsi 'araclar.json'dur, araclar.js DEGIL.",
      "ne_yapiyor": "Ureticinin hesap araclarini (alan/dekar donusumu, gubre saf besin, sulama mm->m3, kuru madde firesi, basabas) calistiran ana motor. NO-FAKE tasarim: tarimsal norm/katsayi TABLOSU YOK; tum girdileri kullanici verir, betik yalniz kesin donusum ve aritmetigi yapar. Girdiler yalniz localStorage'da tutulur, sunucuya gonderilmez.",
      "dom_kancalari": [
        {
          "kanca": "soru",
          "tip": "id",
          "sayfada_var_mi": false,
          "bulundugu_sayfalar": [],
          "aciklama": "cumleyle-sor kutusu"
        },
        {
          "kanca": "soru_dugme",
          "tip": "id",
          "sayfada_var_mi": false,
          "bulundugu_sayfalar": [],
          "aciklama": ""
        },
        {
          "kanca": "soru_sonuc",
          "tip": "id",
          "sayfada_var_mi": false,
          "bulundugu_sayfalar": [],
          "aciklama": ""
        },
        {
          "kanca": "temizle",
          "tip": "id",
          "sayfada_var_mi": false,
          "bulundugu_sayfalar": [],
          "aciklama": ""
        },
        {
          "kanca": "ilac_tur",
          "tip": "id",
          "sayfada_var_mi": false,
          "bulundugu_sayfalar": [],
          "aciklama": ""
        }
      ],
      "veri_uclari": [
        {
          "uc": "/api/uygunluk",
          "http": 200,
          "sema_uyumu": "uyumlu - siralama[32] + iklim dondu"
        }
      ],
      "diriltme_maliyeti": "form yaz",
      "oneri": "dirilt (BASKA AJAN TARAFINDAN SU ANDA DIRILTILIYOR - bu tur dokunulmadi)",
      "gerekce": "998 satir / 33 fonksiyon; her arac icin ayri girdi formu gerekir, tek div yetmez.",
      "notlar": [
        "BAGIMLILIK (kritik): araclar.js:769 'if (!window.TarimAnlayici)' ve araclar.js:774 'window.TarimAnlayici.coz(temiz)' - bu global /betik/anlayici.js tarafindan uretilir. anlayici.js ONCE yuklenmezse cumleyle-sor kutusu 'Anlayici yuklenemedi' uyarisi verir; araclar.js tek basina diriltilirse ozellik yarim kalir.",
        "Bu tur bu dosyaya YAZILMADI (baska ajanin sahipliginde)."
      ]
    },
    {
      "dosya": "/betik/anlayici.js",
      "disk_yolu": "C:/AIOS/tarim.online/web/betik/anlayici.js",
      "bayt": 18933,
      "satir": 420,
      "gercekten_olu": true,
      "olu_kaniti": "grep -rlE '<script[^>]*src=\"[^\"]*anlayici\\.js' --include=*.html . -> 0 dosya  (tam-yol eslesme; alt-dizge DEGIL)",
      "ne_yapiyor": "Dogal dil anlayici: serbest Turkce cumleyi ('25 donume 40 mm su vereceğim') deterministik olarak arac + alan degerlerine cozer. LLM DEGIL - dosya basligi olcumu kaydediyor: yerel qwen2.5:1.5b uc gercek ciftci cumlesinde yanlis arac secti ve cumlede gecmeyen sayilar uretti; tarimda uydurulmus sayi = yanlis gubre/ilac dozu. Bu yuzden sayiyi yalniz cumlede gordugu yerden alir, goremezse alani BOS birakir.",
      "dom_kancalari": [
        {
          "kanca": "(DOM kancasi yok)",
          "tip": "-",
          "sayfada_var_mi": true,
          "bulundugu_sayfalar": [],
          "aciklama": "Saf kutuphane: 'window.TarimAnlayici = (function () {' - anlayici.js:23. Kendi DOM'u yok; tuketicisi araclar.js."
        }
      ],
      "veri_uclari": [],
      "diriltme_maliyeti": "kanca ekle",
      "oneri": "dirilt",
      "gerekce": "Tek <script> satiri yeter (kapsayici div bile gerekmez). araclar.js'ten ONCE yuklenmeli.",
      "notlar": [
        "araclar.js'in sert bagimliligi - ikisi BIRLIKTE diriltilmeli, sira: anlayici.js sonra araclar.js.",
        "Eslestirmede alt-dizge yasagi dosyanin kendi basliginda yazili ('kar' kelimesi tuzagi)."
      ]
    },
    {
      "dosya": "/betik/gokceada.js",
      "disk_yolu": "C:/AIOS/tarim.online/web/betik/gokceada.js",
      "bayt": 16906,
      "satir": 355,
      "gercekten_olu": true,
      "olu_kaniti": "grep -rlE '<script[^>]*src=\"[^\"]*gokceada\\.js' --include=*.html . -> 0 dosya  (tam-yol eslesme; alt-dizge DEGIL) | alt-dizge tuzagi burada da var: duz eslesme 7 HTML dondurur (gokceada.json).",
      "ne_yapiyor": "Eski Gokceada sayfa motoru: cografya listesi, urun izgarasi, iklim uygunlugu, besin tablosu, kaynaklar ve /api/hesapla canli motor demosu (3 senaryo: girdi/sulama/basabas). Ayri dosya olma gerekcesi basliginda yazili: iki oturum ayni sicak index.html'i ezince eklenen mantik sessizce siliniyordu.",
      "dom_kancalari": [
        {
          "kanca": "urun_izgara",
          "tip": "id",
          "sayfada_var_mi": false,
          "bulundugu_sayfalar": [],
          "aciklama": ""
        },
        {
          "kanca": "cografya_liste",
          "tip": "id",
          "sayfada_var_mi": false,
          "bulundugu_sayfalar": [],
          "aciklama": ""
        },
        {
          "kanca": "uygunluk_liste",
          "tip": "id",
          "sayfada_var_mi": false,
          "bulundugu_sayfalar": [],
          "aciklama": ""
        },
        {
          "kanca": "besin_govde",
          "tip": "id",
          "sayfada_var_mi": false,
          "bulundugu_sayfalar": [],
          "aciklama": ""
        },
        {
          "kanca": "dene_girdiler",
          "tip": "id",
          "sayfada_var_mi": false,
          "bulundugu_sayfalar": [],
          "aciklama": ""
        },
        {
          "kanca": "dene_sonuc",
          "tip": "id",
          "sayfada_var_mi": false,
          "bulundugu_sayfalar": [],
          "aciklama": ""
        },
        {
          "kanca": "dene_url",
          "tip": "id",
          "sayfada_var_mi": false,
          "bulundugu_sayfalar": [],
          "aciklama": ""
        },
        {
          "kanca": "dene_hesapla",
          "tip": "id",
          "sayfada_var_mi": false,
          "bulundugu_sayfalar": [],
          "aciklama": ""
        },
        {
          "kanca": "link_kopya",
          "tip": "id",
          "sayfada_var_mi": false,
          "bulundugu_sayfalar": [],
          "aciklama": ""
        },
        {
          "kanca": "ai_link",
          "tip": "id",
          "sayfada_var_mi": false,
          "bulundugu_sayfalar": [],
          "aciklama": ""
        },
        {
          "kanca": "prompt_kopya",
          "tip": "id",
          "sayfada_var_mi": false,
          "bulundugu_sayfalar": [],
          "aciklama": ""
        },
        {
          "kanca": "ai_prompt",
          "tip": "id",
          "sayfada_var_mi": false,
          "bulundugu_sayfalar": [],
          "aciklama": ""
        },
        {
          "kanca": "senaryo",
          "tip": "id",
          "sayfada_var_mi": false,
          "bulundugu_sayfalar": [],
          "aciklama": ""
        },
        {
          "kanca": "uygunluk_kunye",
          "tip": "id",
          "sayfada_var_mi": false,
          "bulundugu_sayfalar": [],
          "aciklama": ""
        },
        {
          "kanca": "uygunluk_detay",
          "tip": "id",
          "sayfada_var_mi": false,
          "bulundugu_sayfalar": [],
          "aciklama": ""
        },
        {
          "kanca": "besin_kunye",
          "tip": "id",
          "sayfada_var_mi": false,
          "bulundugu_sayfalar": [],
          "aciklama": ""
        },
        {
          "kanca": "kaynak_liste",
          "tip": "id",
          "sayfada_var_mi": false,
          "bulundugu_sayfalar": [],
          "aciklama": ""
        },
        {
          "kanca": "uygunluk",
          "tip": "id",
          "sayfada_var_mi": "YANILTICI-VAR",
          "bulundugu_sayfalar": [
            "gokceada/index.html"
          ],
          "aciklama": "DIKKAT - YANLIS POZITIF: gokceada/index.html:294'te id=uygunluk bir <h2> BASLIK capasidir ('Koyler (12 koy)'), gokceada.js'in bekledigi veri KAPSAYICISI degil. Diriltilirse motor bir <h2> icine yazmaya calisir. Kullanilabilir kanca: 0/18."
        }
      ],
      "veri_uclari": [
        {
          "uc": "/api/gokceada.json",
          "http": 200,
          "sema_uyumu": "uyumlu"
        },
        {
          "uc": "/api/uygunluk",
          "http": 200,
          "sema_uyumu": "uyumlu"
        },
        {
          "uc": "/api/besin",
          "http": 200,
          "sema_uyumu": "uyumlu"
        },
        {
          "uc": "/api/hesapla",
          "http": 200,
          "sema_uyumu": "uyumlu - parametresiz 400, gercek senaryoyla 200: ?arac=girdi&alan_da=20&doz_kg_da=15&cuval_kg=50 -> sonuc.toplam_kg 300.0"
        }
      ],
      "diriltme_maliyeti": "form yaz",
      "oneri": "olduğu yerde bırak",
      "gerekce": "Sayfa YENIDEN INSA EDILDI: gokceada/index.html artik k2_terroir.js, gdd_sezon.js, gokceada_karakalem_harita.js yukluyor (satir 347-430). 18 kancanin 17'si yok, 1'i yanlis pozitif. Diriltmek sayfayi yeniden yazmak demektir - BLN-0004 'yikma' riski. Yalniz '/api/hesapla canli demo' bolumu esdegeri olmayan ozellik; istenirse O BOLUM ayri kucuk bir betige tasinabilir.",
      "notlar": [
        "Diriltme karari verilirse once hangi bolumun esdegeri olmadigi olculmeli; tum motoru geri takmak canli sayfayi ezme riskidir."
      ]
    },
    {
      "dosya": "/betik/harita_iklim.js",
      "disk_yolu": "C:/AIOS/tarim.online/web/betik/harita_iklim.js",
      "bayt": 12541,
      "satir": 212,
      "gercekten_olu": true,
      "olu_kaniti": "grep -rlE '<script[^>]*src=\"[^\"]*harita_iklim\\.js' --include=*.html . -> 0 dosya  (tam-yol eslesme; alt-dizge DEGIL) | TEK metin gecisi var: harita.html:205 <code>harita_iklim.js</code> - bu bir <script src> DEGIL, duz nesir.",
      "ne_yapiyor": "Iklim uygunluk haritasi (interaktif SVG): 32 urunu Sicaklik x Yagis duzlemine nokta olarak yerlestirir, rengi Gokceada uygunluk skoru. Bir urune dokununca FAO EcoCrop optimal iklim KUTUSU cizilir; Gokceada noktasi kutunun icindeyse iklim uygun (Liebig minimum yasasi gorsel).",
      "dom_kancalari": [
        {
          "kanca": "harita_tuval",
          "tip": "id",
          "sayfada_var_mi": false,
          "bulundugu_sayfalar": [],
          "aciklama": "ana SVG kapsayicisi"
        },
        {
          "kanca": "harita-stil",
          "tip": "id",
          "sayfada_var_mi": false,
          "bulundugu_sayfalar": [],
          "aciklama": "betigin kendi enjekte ettigi <style>; HTML'de gerekmez"
        }
      ],
      "veri_uclari": [
        {
          "uc": "/api/uygunluk",
          "http": 200,
          "sema_uyumu": "TAM UYUMLU - betik d.siralama + d.iklim okuyor (harita_iklim.js:31-32); API ikisini de donduruyor (siralama=32 kayit, her kayitta urun_zarfi.sicaklik_optimal_c)"
        }
      ],
      "diriltme_maliyeti": "kanca ekle",
      "oneri": "dirilt",
      "gerekce": "EN YUKSEK DEGER / EN DUSUK MALIYET: tek div id=harita_tuval + tek <script> satiri. Veri canli ve sema birebir uyuyor. Ustelik harita.html:205 bu ozelligi ZATEN METINDE VAAT EDIYOR ('Iklim gorseli (gercek API): ... harita_iklim.js') ama gorsel yok - su an bozuk vaat.",
      "notlar": [
        "Ag hatasinda sessizce liste gorunumune birakir (basliginda yazili) - guvenli bozulma."
      ]
    },
    {
      "dosya": "/betik/besin_radar.js",
      "disk_yolu": "C:/AIOS/tarim.online/web/betik/besin_radar.js",
      "bayt": 7655,
      "satir": 143,
      "gercekten_olu": true,
      "olu_kaniti": "grep -rlE '<script[^>]*src=\"[^\"]*besin_radar\\.js' --include=*.html . -> 0 dosya  (tam-yol eslesme; alt-dizge DEGIL)",
      "ne_yapiyor": "Besin radari: 29 gida x besin degerini (USDA FoodData Central) interaktif SVG radar grafigine cevirir; 3 gidaya kadar ust uste bindirip karsilastirir. Her eksen kendi veri-seti maksimumuna gore 0-1 olceklidir (sekiller karsilastirilabilsin) - mutlak deger DEGIL, gercek rakamlar lejantta yazilir.",
      "dom_kancalari": [
        {
          "kanca": "radar_tuval",
          "tip": "id",
          "sayfada_var_mi": false,
          "bulundugu_sayfalar": [],
          "aciklama": ""
        },
        {
          "kanca": "radar_secim",
          "tip": "id",
          "sayfada_var_mi": false,
          "bulundugu_sayfalar": [],
          "aciklama": ""
        },
        {
          "kanca": "radar_lejant",
          "tip": "id",
          "sayfada_var_mi": false,
          "bulundugu_sayfalar": [],
          "aciklama": ""
        },
        {
          "kanca": "besin-radar-stil",
          "tip": "id",
          "sayfada_var_mi": false,
          "bulundugu_sayfalar": [],
          "aciklama": "betik enjekte eder; HTML'de gerekmez"
        }
      ],
      "veri_uclari": [
        {
          "uc": "/api/besin",
          "http": 200,
          "sema_uyumu": "TAM UYUMLU - betigin 6 ekseni de API govdesinde bulundu: protein_g VAR, lif_g VAR, c_vitamini_mg VAR, potasyum_mg VAR, demir_mg VAR, kalsiyum_mg VAR"
        }
      ],
      "diriltme_maliyeti": "kanca ekle",
      "oneri": "dirilt",
      "gerekce": "Uc div + bir script satiri. Veri gercek USDA ve sema birebir uyuyor. Tarim ile sagligi birlestiren gorsel - duz tablodan belirgin ustunluk.",
      "notlar": [
        "Basliginda 'tibbi/diyet tavsiyesi degildir' sinirlamasi yazili - dirilirken bu kunye korunmali."
      ]
    },
    {
      "dosya": "/betik/gostergeler.js",
      "disk_yolu": "C:/AIOS/tarim.online/web/betik/gostergeler.js",
      "bayt": 6671,
      "satir": 165,
      "gercekten_olu": true,
      "olu_kaniti": "grep -rlE '<script[^>]*src=\"[^\"]*gostergeler\\.js' --include=*.html . -> 0 dosya  (tam-yol eslesme; alt-dizge DEGIL)",
      "ne_yapiyor": "Gokceada 3'lu reaktif gosterge paneli: toprak nemi, don riski, poyraz. Sayilar NOAA aylik normallerinden turetilir; varsa yerel istasyon olcumu uzerine biner.",
      "dom_kancalari": [
        {
          "kanca": "gokceada_gostergeler",
          "tip": "id",
          "sayfada_var_mi": false,
          "bulundugu_sayfalar": [],
          "aciklama": "ana panel"
        },
        {
          "kanca": "gg_yerel_rozet",
          "tip": "id",
          "sayfada_var_mi": false,
          "bulundugu_sayfalar": [],
          "aciklama": "yerel-veri rozeti"
        }
      ],
      "veri_uclari": [
        {
          "uc": "/api/gokceada.json",
          "http": 200,
          "sema_uyumu": "uyumlu - aylik_iklim alani mevcut"
        },
        {
          "uc": "/api/yerel_veri",
          "http": 200,
          "sema_uyumu": "SEMA UYUMLU ama KAYNAK SIMULE - asagidaki nota bak"
        }
      ],
      "diriltme_maliyeti": "kanca ekle",
      "oneri": "karantinaya al (VEYA sart kosularak dirilt - KAPTAN KARARI)",
      "gerekce": "Maliyet dusuk (iki div) ama NO-FAKE riski var: /api/yerel_veri kaynak='sim_davis_vantage_gokceada_01' donduruyor ('sim_' oneki = SIMULE istasyon) ve durum='yerel_veri_var'. gostergeler.js:106-108 bu durumda rozeti 'yerel olcum · <kaynak>' diye basar; :121-139 kartlari o sayilarla gunceller. Yani panel simule telemetriyi 'yerel olcum' diye gosterir. Bu, /js/gokceada_harita_tv.js'in gecmiste NO-FAKE RED aldigi kalibin AYNISIDIR. Diriltilecekse ya 'sim_' onekli kaynak reddedilmeli ya da rozet acikca 'SIMULE' yazmali.",
      "notlar": [
        "OLCUM DUZELTMESI (kendi hatam): once alan-adi uyusmazligi sandim - API'nin yalniz toprak_nemi/hava_sicaklik/ruzgar_hiz dondurdugunu, betigin ise nem_pct/sicaklik_c/ruzgar_kmh bekledigini. Tam govde olculunce API'nin AYRICA bu takma adlari da dondurdugu gorildu; kesisim TAM, sema uyumsuzlugu YOK. Ilk izlenim 240 baytlik kirpilmis ciktidan geliyordu.",
        "Asil risk sema degil, kaynagin simule olmasidir."
      ]
    },
    {
      "dosya": "/betik/gokceada_ada_harita.js",
      "disk_yolu": "C:/AIOS/tarim.online/web/betik/gokceada_ada_harita.js",
      "bayt": 5878,
      "satir": 144,
      "gercekten_olu": true,
      "olu_kaniti": "grep -rlE '<script[^>]*src=\"[^\"]*gokceada_ada_harita\\.js' --include=*.html . -> 0 dosya  (tam-yol eslesme; alt-dizge DEGIL)",
      "ne_yapiyor": "Ada silueti uzerine 12 koy pinini basan TV-guvenli SVG harita; pin=OpenStreetMap koy merkezi, faaliyet rozeti=gokceada.json. Klavye ile pinler arasi gezinme (onceki/sonraki).",
      "dom_kancalari": [
        {
          "kanca": "ada_harita_kahraman",
          "tip": "id",
          "sayfada_var_mi": false,
          "bulundugu_sayfalar": [],
          "aciklama": "ana kapsayici"
        },
        {
          "kanca": "ah_panel",
          "tip": "id",
          "sayfada_var_mi": false,
          "bulundugu_sayfalar": [],
          "aciklama": ""
        },
        {
          "kanca": "ah_sira",
          "tip": "id",
          "sayfada_var_mi": false,
          "bulundugu_sayfalar": [],
          "aciklama": ""
        },
        {
          "kanca": "ah_onceki",
          "tip": "id",
          "sayfada_var_mi": false,
          "bulundugu_sayfalar": [],
          "aciklama": ""
        },
        {
          "kanca": "ah_sonraki",
          "tip": "id",
          "sayfada_var_mi": false,
          "bulundugu_sayfalar": [],
          "aciklama": ""
        }
      ],
      "veri_uclari": [
        {
          "uc": "/api/gokceada_koy_koordinat.json",
          "http": 200,
          "sema_uyumu": "uyumlu - projeksiyon anahtarlari ['tv_svg','ada_svg']; 'ada_svg' VAR (viewBox '0 0 1000 560', pad_x 90, pad_y 50), 12 koy"
        },
        {
          "uc": "/api/gokceada.json",
          "http": 200,
          "sema_uyumu": "uyumlu (motor uzerinden)"
        }
      ],
      "diriltme_maliyeti": "kanca ekle",
      "oneri": "olduğu yerde bırak",
      "gerekce": "Teknik olarak diriltilebilir (bagimlilik KARSILANMIS: motor hem index.html:905 hem gokceada/index.html:348'de yuklu; 'ada' modu motor.js:73'te ozel destekli - cfg = koordDoc.projeksiyon[hedef === 'ada' ? 'ada_svg' : 'tv_svg']). ANCAK islevsel olarak UCUNCU harita olur: index.html:907 zaten gokceada_harita_engine.js (tv modu), gokceada/index.html:349 zaten gokceada_karakalem_harita.js calistiriyor. Ayni veriyi ucuncu kez cizmek drift riski uretir - ayri bir '/ada' gorunumu istenmedikce diriltilmemeli.",
      "notlar": [
        "OLCUM DUZELTMESI (kendi hatam): once 'bagimlilik karsilanmamis' sandim cunku grep 'window.GokceadaHaritaMotor' motor.js'te bos dondu. Gercek: motor.js:144 'global.GokceadaHaritaMotor = {' yaziyor ve IIFE '(typeof window !== \"undefined\" ? window : this)' ile cagriliyor - yani global==window. Desen cok darmis; bagimlilik KARSILANIYOR."
      ]
    },
    {
      "dosya": "/betik/takvim_isi.js",
      "disk_yolu": "C:/AIOS/tarim.online/web/betik/takvim_isi.js",
      "bayt": 4467,
      "satir": 89,
      "gercekten_olu": true,
      "olu_kaniti": "grep -rlE '<script[^>]*src=\"[^\"]*takvim_isi\\.js' --include=*.html . -> 0 dosya  (tam-yol eslesme; alt-dizge DEGIL)",
      "ne_yapiyor": "Ekim takvimi isi haritasi: 28 urun x 12 ay tek ekranda; satir=urun, sutun=ay, renk=sicaklik penceresi (optimal/uygun/disi). Ciftcinin en sik sorusu 'hangi ayda ne?' sorusuna tek bakista cevap.",
      "dom_kancalari": [
        {
          "kanca": "takvim_tuval",
          "tip": "id",
          "sayfada_var_mi": false,
          "bulundugu_sayfalar": [],
          "aciklama": ""
        },
        {
          "kanca": "takvim-stil",
          "tip": "id",
          "sayfada_var_mi": false,
          "bulundugu_sayfalar": [],
          "aciklama": "betik enjekte eder; HTML'de gerekmez"
        }
      ],
      "veri_uclari": [
        {
          "uc": "/api/takvim",
          "http": 200,
          "sema_uyumu": "TAM UYUMLU - betik d.urunler / d.ay_adlari / d.aylik_sicaklik_c / d.kunye okuyor (takvim_isi.js:29-60); API tam bu anahtarlari donduruyor: ['bolge','ay_adlari','aylik_sicaklik_c','aylik_yagis_mm','urunler','kunye']"
        }
      ],
      "diriltme_maliyeti": "kanca ekle",
      "oneri": "dirilt",
      "gerekce": "Tek div + tek script satiri; sema birebir uyuyor. /api/iz kuyrugunda bekleyen 'urun bazinda ekim/hasat takvimi' ihtiyacinin hazir karsiligi - kod zaten yazilmis, yalniz baglanmamis.",
      "notlar": [
        "Kunye YALNIZ SICAKLIK penceresi oldugunu acikca yaziyor (yagis/don/fenoloji haric) - dirilirken bu sinir ekranda kalmali."
      ]
    },
    {
      "dosya": "/betik/yerlesim.js",
      "disk_yolu": "C:/AIOS/tarim.online/web/betik/yerlesim.js",
      "bayt": 4036,
      "satir": 78,
      "gercekten_olu": true,
      "olu_kaniti": "grep -rlE '<script[^>]*src=\"[^\"]*yerlesim\\.js' --include=*.html . -> 0 dosya  (tam-yol eslesme; alt-dizge DEGIL)",
      "ne_yapiyor": "'Ne nerede' yerlesim paneli: adada tarimin nerede yapildigini gosterir (Eselek sebze-meyve, Ugurlu tarim+hayvancilik+balikcilik, Sahinkaya tarim+hayvancilik). Kaynakta faaliyet yazmayan yerlesimde rozet BASILMAZ.",
      "dom_kancalari": [
        {
          "kanca": "yerlesim_tuval",
          "tip": "id",
          "sayfada_var_mi": false,
          "bulundugu_sayfalar": [],
          "aciklama": ""
        },
        {
          "kanca": "yerlesim-stil",
          "tip": "id",
          "sayfada_var_mi": false,
          "bulundugu_sayfalar": [],
          "aciklama": "betik enjekte eder"
        }
      ],
      "veri_uclari": [
        {
          "uc": "/api/gokceada.json",
          "http": 200,
          "sema_uyumu": "TAM UYUMLU - betik yerlesim.js:24 'ciz(d.yerlesimler)' ve :32 'y.liste' okuyor; API yerlesimler{aciklama,kaynak,guven,koordinat_durumu,koordinat_api,liste,yerel_veri_bekliyor} donuyor, liste=11 kayit (ornek: {'ad':'Cinarli (Merkez)','konum':'ada merkezi','faaliyet':[]})"
        }
      ],
      "diriltme_maliyeti": "kanca ekle",
      "oneri": "dirilt",
      "gerekce": "Tek div + tek script. 11 gercek Wikipedia-kaynakli kayit hazir. Koordinat olmadigi icin harita cizmez, yalniz yon ifadeleri gosterir - bu sinir ekranda yazili (durustluk korunmus).",
      "notlar": [
        "Ada haritasi (motor/engine) ile kismi ortusme var: o da koy+faaliyet gosteriyor. Yerlesim paneli koordinatsiz, metinsel/erisilebilir alternatiftir - harita degil."
      ]
    },
    {
      "dosya": "/betik/kapilar.js",
      "disk_yolu": "C:/AIOS/tarim.online/web/betik/kapilar.js",
      "bayt": 3181,
      "satir": 69,
      "gercekten_olu": true,
      "olu_kaniti": "grep -rlE '<script[^>]*src=\"[^\"]*kapilar\\.js' --include=*.html . -> 0 dosya  (tam-yol eslesme; alt-dizge DEGIL)",
      "ne_yapiyor": "Ana sayfa gorsel kapi seridi: yasli ciftci gozu metin duvari yerine bir bakista kapilari gorsun diye dev ikon + dev sayi + kisa etiket. Sayilar HARDCODE DEGIL - API'nin kendisinden sayilir; API'ye ulasilamazsa sayi yerine '—' basar (uydurma yok).",
      "dom_kancalari": [
        {
          "kanca": "kapilar",
          "tip": "id",
          "sayfada_var_mi": false,
          "bulundugu_sayfalar": [],
          "aciklama": "serit kapsayicisi"
        },
        {
          "kanca": "[data-kapi=\"arac\"]",
          "tip": "secici",
          "sayfada_var_mi": false,
          "bulundugu_sayfalar": [],
          "aciklama": "araclar.json -> araclar.length"
        },
        {
          "kanca": "[data-kapi=\"urun\"]",
          "tip": "secici",
          "sayfada_var_mi": false,
          "bulundugu_sayfalar": [],
          "aciklama": "uygunluk -> siralama.length"
        },
        {
          "kanca": "[data-kapi=\"mcp\"]",
          "tip": "secici",
          "sayfada_var_mi": false,
          "bulundugu_sayfalar": [],
          "aciklama": "POST /mcp -> result.tools.length"
        },
        {
          "kanca": "[data-kapi=\"deploy\"]",
          "tip": "secici",
          "sayfada_var_mi": false,
          "bulundugu_sayfalar": [],
          "aciklama": "deploy_durum.json -> canli_gecen"
        },
        {
          "kanca": "kapilar-stil",
          "tip": "id",
          "sayfada_var_mi": false,
          "bulundugu_sayfalar": [],
          "aciklama": "betik enjekte eder"
        }
      ],
      "veri_uclari": [
        {
          "uc": "/api/araclar.json",
          "http": 200,
          "sema_uyumu": "uyumlu"
        },
        {
          "uc": "/api/uygunluk",
          "http": 200,
          "sema_uyumu": "uyumlu"
        },
        {
          "uc": "/mcp",
          "http": 200,
          "sema_uyumu": "uyumlu - GET 405 (Method Not Allowed) ama betik POST kullaniyor (kapilar.js:34-38, jsonrpc tools/list); POST olculdu = 200"
        },
        {
          "uc": "/api/deploy_durum.json",
          "http": 200,
          "sema_uyumu": "uyumlu"
        }
      ],
      "diriltme_maliyeti": "kanca ekle",
      "oneri": "dirilt",
      "gerekce": "Dort ucun DORDU de canli. Bir kapsayici div + icinde 4 adet data-kapi tasiyan eleman gerekir (duz bos div yetmez) - yine de 'form yaz' seviyesinin cok altinda.",
      "notlar": [
        "Erisilebilirlik acisindan degerli: dev dokunma hedefi + tek bakista yonlendirme."
      ]
    },
    {
      "dosya": "/betik/niyet.js",
      "disk_yolu": "C:/AIOS/tarim.online/web/betik/niyet.js",
      "bayt": 1444,
      "satir": 46,
      "gercekten_olu": true,
      "olu_kaniti": "grep -rlE '<script[^>]*src=\"[^\"]*niyet\\.js' --include=*.html . -> 0 dosya  (tam-yol eslesme; alt-dizge DEGIL) | ayrica data-niyet oznitelik taramasi 0 dosya dondu.",
      "ne_yapiyor": "First-party niyet/olay feromonu: HARICI ANALITIK YOK. data-niyet ozniteligi tasiyan ogelerin tiklamasini veya window.TarimNiyet.gonder(...) cagrisini /api/niyet'e yollar. Saf gezinme gondermez; 1500 ms cift-tik bastirmasi var.",
      "dom_kancalari": [
        {
          "kanca": "data-niyet",
          "tip": "oznitelik",
          "sayfada_var_mi": false,
          "bulundugu_sayfalar": [],
          "aciklama": "OLCULDU: grep -rlE 'data-niyet' --include=*.html . -> 0 dosya. Hicbir sayfada bu oznitelik yok; betik yuklense bile hicbir olay uretmez."
        }
      ],
      "veri_uclari": [
        {
          "uc": "/api/niyet",
          "http": 200,
          "sema_uyumu": "uc canli"
        }
      ],
      "diriltme_maliyeti": "kanca ekle",
      "oneri": "dirilt (dusuk oncelik)",
      "gerekce": "En ucuz kalem (1444 bayt): script satiri + CTA'lara data-niyet oznitelikleri. Ucu canli. Hangi araclarin gercekten kullanildigini olcmeyi saglar - su an bu korluk var.",
      "notlar": [
        "Mahremiyet: first-party, harici saglayici yok, saf gezinme gonderilmiyor - izleme yuzeyi dar tutulmus.",
        "Once hangi CTA'larin olculecegine karar verilmeli; oznitelik serpistirmek cok sayida sayfa dosyasina dokunmak demektir (sahiplik dagilmis)."
      ]
    },
    {
      "dosya": "/betik/gokceada_harita_tv.js",
      "disk_yolu": "C:/AIOS/tarim.online/web/betik/gokceada_harita_tv.js",
      "bayt": 1105,
      "satir": 44,
      "gercekten_olu": true,
      "olu_kaniti": "grep -rlE '<script[^>]*src=\"[^\"]*gokceada_harita_tv\\.js' --include=*.html . -> 0 dosya  (tam-yol eslesme; alt-dizge DEGIL)",
      "ne_yapiyor": "Eski TV-DOM'u (#tv_gokceada_svg) icin geriye-donuk uyum shim'i: motor+engine yukleyip GokceadaHarita.init cagirir. Sahte koy telemetrisi kaldirilmis.",
      "dom_kancalari": [
        {
          "kanca": "gokceada_harita_bolumu",
          "tip": "id",
          "sayfada_var_mi": true,
          "bulundugu_sayfalar": [
            "index.html",
            "gokceada/index.html"
          ],
          "aciklama": "Kapsayici VAR - ama shim gereksiz, gerekce alanina bak."
        },
        {
          "kanca": "ada_harita_kahraman",
          "tip": "id",
          "sayfada_var_mi": false,
          "bulundugu_sayfalar": [],
          "aciklama": ""
        },
        {
          "kanca": "tv_gokceada_svg",
          "tip": "id",
          "sayfada_var_mi": false,
          "bulundugu_sayfalar": [],
          "aciklama": "eski TV DOM'u; artik hicbir sayfada yok"
        }
      ],
      "veri_uclari": [],
      "diriltme_maliyeti": "bilinçli ölü",
      "oneri": "karantinaya al",
      "gerekce": "Dosyanin 2. satirinda ACIK isaret var: '@deprecated Legacy DOM (#tv_gokceada_svg) - /betik/gokceada_harita_engine.js kullanin.' Ustelik ISLEVSEL OLARAK GEREKSIZ: shim'in tek isi engine+motor yukleyip init cagirmakti, ama index.html bunlari ZATEN dogrudan yukluyor (satir 905 motor, satir 907 engine). Diriltmek ayni motoru ikinci kez yukler.",
      "notlar": [
        "Karantinaya alinirken /js/gokceada_harita_tv.js ile KARISTIRILMAMALI - o AYRI dosyadir (1005 bayt) ve denetim kaydinda duruyor; bkz. bir sonraki kalem.",
        "Karantina oncesi /api/canli_uc.json'da BU yolun (/betik/...) kayitli olmadigi dogrulanmali - olcumde yalniz /js/ yolu kayitli gorundu."
      ]
    },
    {
      "dosya": "/js/gokceada_harita_tv.js",
      "disk_yolu": "C:/AIOS/tarim.online/web/js/gokceada_harita_tv.js",
      "bayt": 1005,
      "satir": 39,
      "gercekten_olu": true,
      "olu_kaniti": "grep -rlE '<script[^>]*src=\"[^\"]*gokceada_harita_tv\\.js' --include=*.html . -> 0 dosya  (tam-yol eslesme; alt-dizge DEGIL) | ek: bu dosya /betik/ altindaki ayni adli dosyadan AYRIDIR (1005 vs 1105 bayt); ayirt etmek icin yol-oneki kullanildi.",
      "ne_yapiyor": "Eski YOL (/js/...) icin geriye-donuk uyum shim'i. Onceki surumu sahte nem/ruzgar/SIM telemetrisi iceriyordu ve NO-FAKE gerekcesiyle reddedildi; bugunku hali yalnizca motor+engine yukleyen, sensor uydurmayan bir shim.",
      "dom_kancalari": [
        {
          "kanca": "gokceada_harita_bolumu",
          "tip": "id",
          "sayfada_var_mi": true,
          "bulundugu_sayfalar": [
            "index.html",
            "gokceada/index.html"
          ],
          "aciklama": ""
        },
        {
          "kanca": "ada_harita_kahraman",
          "tip": "id",
          "sayfada_var_mi": false,
          "bulundugu_sayfalar": [],
          "aciklama": ""
        }
      ],
      "veri_uclari": [
        {
          "uc": "https://tarim.online/js/gokceada_harita_tv.js",
          "http": 200,
          "sema_uyumu": "api/canli_uc.json:199-205'te 'legacy_harita_js' adiyla KAYITLI (http 200, bayt 1005) - diskteki olcumle birebir ayni: 1005 bayt"
        }
      ],
      "diriltme_maliyeti": "bilinçli ölü",
      "oneri": "olduğu yerde bırak",
      "gerekce": "Ilk satirinda '@deprecated Legacy yol' yazili. AMA KARANTINAYA ALINMAMALI: bu dosya api/canli_uc.json denetim kaydinda 'legacy_harita_js' olarak canli uc sayiliyor. Tasinirsa/silinirse o uc 404 olur ve canli_uc 113/113 denetimi DUSER. Eski yer imi / dis link uyumu icin kasten yerinde tutulan bir artefakt - dokunulmamali.",
      "notlar": [
        "'Olu' burada 'hicbir sayfa <script src> ile yuklemiyor' demektir; 'sunulmuyor' demek DEGILDIR - HTTP 200 ile servis ediliyor ve denetleniyor."
      ]
    }
  ]
}