{
  "json_schema_draft": "https://json-schema.org/draft/2020-12/schema",
  "belge_id": "https://hesapla.narch.tech/araclar/yakit-maliyet/yakit-maliyet.json",
  "sozlesme_turu": "istemci-tarafi-hesaplama-sozlesmesi",
  "arac": {
    "ad": "Yakıt Tüketimi ve Yol Maliyeti Hesaplama",
    "slug": "yakit-maliyet",
    "surum": "1.1.0",
    "guncelleme_tarihi": "2026-07-28",
    "dil": "tr-TR",
    "para_birimi": "TRY",
    "calisma_bicimi": "Statik HTML içindeki saf JavaScript fonksiyonu; ağ API'si değildir.",
    "fonksiyon": "yolMaliyeti(girdi)",
    "fiyat_politikasi": "Araç yakıt, elektrik, geçiş veya park fiyatı yayımlamaz. Birim fiyat ve tüm ek maliyetler çağıran tarafından sağlanır.",
    "gizlilik": "Hesap yerel cihazda yapılır; form verisi gönderilmez veya saklanmaz."
  },
  "islemler": [
    {
      "ad": "yol_maliyeti",
      "fonksiyon": "yolMaliyeti",
      "aciklama": "Sıvı yakıtlı veya elektrikli bir yolculuğun enerji, maliyet, kişi başı, kilometre başı ve uygun yakıtlarda doğrudan CO2 tahminini hesaplar."
    },
    {
      "ad": "senaryo_karsilastirma",
      "fonksiyonlar": [
        "aracSenaryoMaliyeti",
        "sabitSenaryoMaliyeti",
        "senaryolariKarsilastir"
      ],
      "aciklama": "İki yakıt/enerji senaryosunu veya bir araç senaryosuyla sabit/bilet senaryosunu karşılaştırır. Fark B eksi A'dır.",
      "sema_yolu": "#/yardimci_islem_semalari/senaryo_karsilastirma"
    },
    {
      "ad": "butceden_menzil",
      "fonksiyon": "tersButceHesapla",
      "aciklama": "Bütçeden sabit masrafları çıkarır ve kalan tutarı kilometre başı enerji maliyetine böler.",
      "girdi_semasi_yolu": "#/yardimci_islem_semalari/butceden_menzil/girdi_semasi",
      "cikti_semasi_yolu": "#/yardimci_islem_semalari/butceden_menzil/cikti_semasi"
    },
    {
      "ad": "depodan_menzil",
      "fonksiyon": "depoMenzili",
      "aciklama": "Sıvı yakıt deposu ve tüketimden menzil hesaplar.",
      "girdi_semasi_yolu": "#/yardimci_islem_semalari/depodan_menzil/girdi_semasi",
      "cikti_semasi_yolu": "#/yardimci_islem_semalari/depodan_menzil/cikti_semasi"
    },
    {
      "ad": "bataryadan_menzil",
      "fonksiyon": "bataryaMenzili",
      "aciklama": "Kullanılabilir batarya enerjisi ve sürüş tüketiminden menzil hesaplar.",
      "girdi_semasi_yolu": "#/yardimci_islem_semalari/bataryadan_menzil/girdi_semasi",
      "cikti_semasi_yolu": "#/yardimci_islem_semalari/bataryadan_menzil/cikti_semasi"
    },
    {
      "ad": "gercek_tuketim",
      "fonksiyon": "gercekTuketimHesapla",
      "aciklama": "Dolu-dolu yönteminde ikinci dolumdaki litreyi iki dolum arası kilometreye böler.",
      "girdi_semasi_yolu": "#/yardimci_islem_semalari/gercek_tuketim/girdi_semasi",
      "cikti_semasi_yolu": "#/yardimci_islem_semalari/gercek_tuketim/cikti_semasi"
    }
  ],
  "girdi_alanlari": [
    {
      "ad": "mesafe",
      "tip": "number",
      "birim": "km",
      "zorunlu": true,
      "aralik": {
        "exclusiveMinimum": 0
      },
      "aciklama": "gidis_donus false ise hesaplanacak toplam mesafe; true ise tek yön mesafe."
    },
    {
      "ad": "gidis_donus",
      "tip": "boolean",
      "birim": null,
      "zorunlu": false,
      "varsayilan": false,
      "aralik": {
        "enum": [
          true,
          false
        ]
      },
      "aciklama": "true olduğunda mesafe motor tarafından tam bir kez ikiyle çarpılır."
    },
    {
      "ad": "tuketim",
      "tip": "number",
      "birim": "tuketim_birimi alanına göre L/100km, km/L veya kWh/100km",
      "zorunlu": true,
      "aralik": {
        "exclusiveMinimum": 0
      },
      "aciklama": "Sıfır, negatif veya sonlu olmayan değer kabul edilmez."
    },
    {
      "ad": "tuketim_birimi",
      "tip": "string",
      "birim": null,
      "zorunlu": true,
      "aralik": {
        "enum": [
          "L/100km",
          "km/L",
          "kWh/100km"
        ]
      },
      "aciklama": "Elektrikte kWh/100km; sıvı yakıtta L/100km veya km/L gönderilir."
    },
    {
      "ad": "yakit_turu",
      "tip": "string",
      "birim": null,
      "zorunlu": true,
      "aralik": {
        "enum": [
          "benzin",
          "dizel",
          "lpg",
          "elektrik"
        ]
      },
      "aciklama": "LPG tüketimine otomatik katsayı uygulanmaz."
    },
    {
      "ad": "litre_fiyati",
      "tip": "number",
      "birim": "Sıvı yakıtta TL/L; elektrikte TL/kWh",
      "zorunlu": true,
      "aralik": {
        "exclusiveMinimum": 0
      },
      "aciklama": "Alan adı geriye dönük tutarlılık için litre_fiyati'dır; elektrik modunda kWh fiyatını taşır. Fiyatı çağıran sağlar."
    },
    {
      "ad": "kisi_sayisi",
      "tip": "integer",
      "birim": "kişi",
      "zorunlu": true,
      "aralik": {
        "minimum": 1
      },
      "aciklama": "Sürücü dahil toplam kişi sayısı."
    },
    {
      "ad": "hgs_otoyol",
      "tip": "number",
      "birim": "TL",
      "zorunlu": false,
      "varsayilan": 0,
      "aralik": {
        "minimum": 0
      }
    },
    {
      "ad": "kopru",
      "tip": "number",
      "birim": "TL",
      "zorunlu": false,
      "varsayilan": 0,
      "aralik": {
        "minimum": 0
      }
    },
    {
      "ad": "otopark",
      "tip": "number",
      "birim": "TL",
      "zorunlu": false,
      "varsayilan": 0,
      "aralik": {
        "minimum": 0
      }
    },
    {
      "ad": "diger",
      "tip": "number",
      "birim": "TL",
      "zorunlu": false,
      "varsayilan": 0,
      "aralik": {
        "minimum": 0
      }
    },
    {
      "ad": "sarj_verimi",
      "tip": "number",
      "birim": "%",
      "zorunlu": false,
      "varsayilan": 100,
      "aralik": {
        "exclusiveMinimum": 0,
        "maximum": 100
      },
      "aciklama": "Yalnız elektrik modunda kullanılır. Şebekeden alınan enerji = sürüş enerjisi / (verim/100)."
    }
  ],
  "girdi_semasi": {
    "$schema": "https://json-schema.org/draft/2020-12/schema",
    "title": "yolMaliyeti girdisi",
    "type": "object",
    "additionalProperties": false,
    "required": [
      "mesafe",
      "tuketim",
      "tuketim_birimi",
      "yakit_turu",
      "litre_fiyati",
      "kisi_sayisi"
    ],
    "properties": {
      "mesafe": {
        "type": "number",
        "exclusiveMinimum": 0
      },
      "gidis_donus": {
        "type": "boolean",
        "default": false
      },
      "tuketim": {
        "type": "number",
        "exclusiveMinimum": 0
      },
      "tuketim_birimi": {
        "type": "string",
        "enum": [
          "L/100km",
          "km/L",
          "kWh/100km"
        ]
      },
      "yakit_turu": {
        "type": "string",
        "enum": [
          "benzin",
          "dizel",
          "lpg",
          "elektrik"
        ]
      },
      "litre_fiyati": {
        "type": "number",
        "exclusiveMinimum": 0
      },
      "kisi_sayisi": {
        "type": "integer",
        "minimum": 1
      },
      "hgs_otoyol": {
        "type": "number",
        "minimum": 0,
        "default": 0
      },
      "kopru": {
        "type": "number",
        "minimum": 0,
        "default": 0
      },
      "otopark": {
        "type": "number",
        "minimum": 0,
        "default": 0
      },
      "diger": {
        "type": "number",
        "minimum": 0,
        "default": 0
      },
      "sarj_verimi": {
        "type": "number",
        "exclusiveMinimum": 0,
        "maximum": 100,
        "default": 100
      }
    },
    "allOf": [
      {
        "if": {
          "properties": {
            "yakit_turu": {
              "const": "elektrik"
            }
          },
          "required": [
            "yakit_turu"
          ]
        },
        "then": {
          "properties": {
            "tuketim_birimi": {
              "const": "kWh/100km"
            }
          }
        },
        "else": {
          "properties": {
            "tuketim_birimi": {
              "enum": [
                "L/100km",
                "km/L"
              ]
            }
          }
        }
      }
    ]
  },
  "cikti_semasi": {
    "$schema": "https://json-schema.org/draft/2020-12/schema",
    "title": "yolMaliyeti başarılı çıktısı",
    "type": "object",
    "additionalProperties": false,
    "required": [
      "yakit_turu",
      "tuketim_100km",
      "tuketim_birimi",
      "efektif_mesafe_km",
      "cekis_enerjisi",
      "toplam_yakit_enerji",
      "yakit_enerji_birimi",
      "sarj_verimi_yuzde",
      "yakit_maliyeti_tl",
      "ek_maliyetler_tl",
      "toplam_tutar_tl",
      "kisi_basi_tl",
      "km_basi_tl",
      "co2_kg",
      "emisyon_faktoru_kg_l"
    ],
    "properties": {
      "yakit_turu": {
        "type": "string",
        "enum": [
          "benzin",
          "dizel",
          "lpg",
          "elektrik"
        ]
      },
      "tuketim_100km": {
        "type": "number",
        "exclusiveMinimum": 0,
        "description": "Normalize edilmiş L/100km veya kWh/100km değeri."
      },
      "tuketim_birimi": {
        "type": "string",
        "enum": [
          "L/100km",
          "kWh/100km"
        ]
      },
      "efektif_mesafe_km": {
        "type": "number",
        "exclusiveMinimum": 0
      },
      "cekis_enerjisi": {
        "type": "number",
        "minimum": 0,
        "description": "Sıvı yakıtta litreyle aynıdır; elektrikte şarj kaybı öncesi sürüş kWh değeridir."
      },
      "toplam_yakit_enerji": {
        "type": "number",
        "minimum": 0,
        "description": "Sıvı yakıtta litre; elektrikte verim kaybı sonrası şebekeden alınan kWh."
      },
      "yakit_enerji_birimi": {
        "type": "string",
        "enum": [
          "L",
          "kWh"
        ]
      },
      "sarj_verimi_yuzde": {
        "type": "number",
        "exclusiveMinimum": 0,
        "maximum": 100
      },
      "yakit_maliyeti_tl": {
        "type": "number",
        "minimum": 0
      },
      "ek_maliyetler_tl": {
        "type": "number",
        "minimum": 0
      },
      "toplam_tutar_tl": {
        "type": "number",
        "minimum": 0
      },
      "kisi_basi_tl": {
        "type": "number",
        "minimum": 0
      },
      "km_basi_tl": {
        "type": "number",
        "minimum": 0
      },
      "co2_kg": {
        "type": [
          "number",
          "null"
        ],
        "minimum": 0,
        "description": "Elektrikte null; sıvı yakıtta doğrulanmış doğrudan Scope 1 CO2 faktörüyle tahmin."
      },
      "emisyon_faktoru_kg_l": {
        "type": [
          "number",
          "null"
        ],
        "minimum": 0
      }
    },
    "allOf": [
      {
        "if": {
          "properties": {
            "yakit_turu": {
              "const": "elektrik"
            }
          },
          "required": [
            "yakit_turu"
          ]
        },
        "then": {
          "properties": {
            "tuketim_birimi": {
              "const": "kWh/100km"
            },
            "yakit_enerji_birimi": {
              "const": "kWh"
            },
            "co2_kg": {
              "type": "null"
            },
            "emisyon_faktoru_kg_l": {
              "type": "null"
            }
          }
        },
        "else": {
          "properties": {
            "tuketim_birimi": {
              "const": "L/100km"
            },
            "yakit_enerji_birimi": {
              "const": "L"
            },
            "sarj_verimi_yuzde": {
              "const": 100
            },
            "co2_kg": {
              "type": "number",
              "minimum": 0
            },
            "emisyon_faktoru_kg_l": {
              "type": "number",
              "minimum": 0
            }
          }
        }
      },
      {
        "if": {
          "properties": {
            "yakit_turu": {
              "const": "benzin"
            }
          },
          "required": [
            "yakit_turu"
          ]
        },
        "then": {
          "properties": {
            "emisyon_faktoru_kg_l": {
              "const": 2.33955
            }
          }
        }
      },
      {
        "if": {
          "properties": {
            "yakit_turu": {
              "const": "dizel"
            }
          },
          "required": [
            "yakit_turu"
          ]
        },
        "then": {
          "properties": {
            "emisyon_faktoru_kg_l": {
              "const": 2.62818
            }
          }
        }
      },
      {
        "if": {
          "properties": {
            "yakit_turu": {
              "const": "lpg"
            }
          },
          "required": [
            "yakit_turu"
          ]
        },
        "then": {
          "properties": {
            "emisyon_faktoru_kg_l": {
              "const": 1.55491
            }
          }
        }
      }
    ]
  },
  "formuller": {
    "efektif_mesafe_km": "mesafe * (gidis_donus ? 2 : 1)",
    "sivi_yakit_litre": "efektif_mesafe_km * tuketim_L_100km / 100",
    "sivi_yakit_maliyeti_tl": "sivi_yakit_litre * litre_fiyati_TL_L",
    "elektrik_surus_enerjisi_kwh": "efektif_mesafe_km * tuketim_kWh_100km / 100",
    "elektrik_sebekeden_alinan_kwh": "elektrik_surus_enerjisi_kwh / (sarj_verimi / 100)",
    "elektrik_maliyeti_tl": "elektrik_sebekeden_alinan_kwh * fiyat_TL_kWh",
    "ek_maliyetler_tl": "hgs_otoyol + kopru + otopark + diger",
    "toplam_tutar_tl": "yakit_maliyeti_tl + ek_maliyetler_tl",
    "kisi_basi_tl": "toplam_tutar_tl / kisi_sayisi",
    "km_basi_tl": "toplam_tutar_tl / efektif_mesafe_km",
    "co2_kg": "sivi_yakit_litre * emisyon_faktoru_kg_l",
    "butceden_menzil_km": "(butce - sabit_masraflar) / (tuketim_100km / 100 * birim_fiyati / (sarj_verimi / 100))",
    "depodan_menzil_km": "depo_litre * 100 / tuketim_L_100km",
    "bataryadan_menzil_km": "kapasite_kwh * 100 / tuketim_kwh_100km",
    "gercek_tuketim_l_100km": "alinan_litre * 100 / gidilen_km",
    "karsilastirma_farki_tl": "senaryo_B_toplam - senaryo_A_toplam",
    "a_bazina_gore_yuzde_fark": "senaryo_A_toplam == 0 ? null : (senaryo_B_toplam - senaryo_A_toplam) / senaryo_A_toplam * 100"
  },
  "formul_turetimi": [
    "Tüketim oranı L/100km ise mesafe_km * (L / 100km) işleminde km birimleri sadeleşir ve litre kalır.",
    "Litre * (TL/L) işleminde litre birimleri sadeleşir ve TL kalır.",
    "Elektrikte kWh/100km aynı boyutsal mantıkla sürüş kWh değerini verir; verim yüzde 100'den küçükse kayıp için şebeke enerjisi büyür.",
    "Kişi başı ve kilometre başı değerler yakıt maliyetinden değil, ek maliyetler dahil toplamdan türetilir.",
    "Ara değerler yuvarlanmaz; Türkçe sayı biçimi yalnız sunum katmanında uygulanır."
  ],
  "birim_donusum_kurallari": [
    {
      "kaynak": "L/100km",
      "hedef": "km/L",
      "formul": "100 / tuketim_L_100km",
      "sifir_durumu": "Tanımsız; SIFIR_VEYA_NEGATIF hatası."
    },
    {
      "kaynak": "km/L",
      "hedef": "L/100km",
      "formul": "100 / verim_km_L",
      "sifir_durumu": "Tanımsız; SIFIR_VEYA_NEGATIF hatası."
    },
    {
      "kaynak": "kWh/100km",
      "hedef": "kWh/km",
      "formul": "tuketim_kWh_100km / 100",
      "sifir_durumu": "Sıfır tüketim kabul edilmez."
    }
  ],
  "emisyon_faktorleri": {
    "kapsam": "Doğrudan Scope 1 CO2; DESNZ 2026 Fuels tablosundaki litres ve kg CO2e of CO2 per unit alanı. CO2'nin GWP değeri 1 olduğundan sayısal sonuç kg CO2'dir.",
    "elektrik": null,
    "elektrik_notu": "Şebeke karışımı ve şarj kaynağı bilinmediği için elektrik için CO2 değeri hesaplanmaz.",
    "degerler_kg_co2_l": {
      "benzin": {
        "deger": 2.33955,
        "kaynak_etiketi": "Petrol (100% mineral petrol)"
      },
      "dizel": {
        "deger": 2.62818,
        "kaynak_etiketi": "Diesel (100% mineral diesel)"
      },
      "lpg": {
        "deger": 1.55491,
        "kaynak_etiketi": "LPG"
      }
    }
  },
  "ornek_cagri": {
    "mesafe": 500,
    "gidis_donus": false,
    "tuketim": 7,
    "tuketim_birimi": "L/100km",
    "yakit_turu": "benzin",
    "litre_fiyati": 45,
    "kisi_sayisi": 4,
    "hgs_otoyol": 0,
    "kopru": 0,
    "otopark": 0,
    "diger": 0
  },
  "ornek_yanit": {
    "yakit_turu": "benzin",
    "tuketim_100km": 7,
    "tuketim_birimi": "L/100km",
    "efektif_mesafe_km": 500,
    "cekis_enerjisi": 35,
    "toplam_yakit_enerji": 35,
    "yakit_enerji_birimi": "L",
    "sarj_verimi_yuzde": 100,
    "yakit_maliyeti_tl": 1575,
    "ek_maliyetler_tl": 0,
    "toplam_tutar_tl": 1575,
    "kisi_basi_tl": 393.75,
    "km_basi_tl": 3.15,
    "co2_kg": 81.88425,
    "emisyon_faktoru_kg_l": 2.33955
  },
  "ek_ornekler": {
    "elektrik": {
      "cagri": {
        "mesafe": 500,
        "gidis_donus": false,
        "tuketim": 18,
        "tuketim_birimi": "kWh/100km",
        "yakit_turu": "elektrik",
        "litre_fiyati": 3,
        "kisi_sayisi": 1,
        "hgs_otoyol": 0,
        "kopru": 0,
        "otopark": 0,
        "diger": 0,
        "sarj_verimi": 90
      },
      "yanit_ozeti": {
        "efektif_mesafe_km": 500,
        "cekis_enerjisi": 90,
        "toplam_yakit_enerji": 100,
        "yakit_maliyeti_tl": 300,
        "toplam_tutar_tl": 300,
        "kisi_basi_tl": 300,
        "km_basi_tl": 0.6,
        "co2_kg": null
      }
    },
    "butceden_menzil": {
      "cagri": {
        "butce": 2000,
        "sabit_masraflar": 425,
        "tuketim": 7,
        "tuketim_birimi": "L/100km",
        "birim_fiyati": 45,
        "yakit_turu": "benzin"
      },
      "yanit": {
        "kalan_butce_tl": 1575,
        "km_basi_enerji_maliyeti_tl": 3.1500000000000004,
        "menzil_km": 499.99999999999994
      }
    },
    "gercek_tuketim": {
      "cagri": {
        "gidilen_km": 500,
        "alinan_litre": 35
      },
      "yanit": {
        "gercek_tuketim_l_100km": 7,
        "gercek_verim_km_l": 14.285714285714286
      }
    }
  },
  "yardimci_islem_semalari": {
    "senaryo_karsilastirma": {
      "fonksiyonlar": [
        "aracSenaryoMaliyeti(girdi)",
        "sabitSenaryoMaliyeti(girdi)",
        "senaryolariKarsilastir(a, b)"
      ],
      "karsilastirma_cagri_bicimi": "Önce iki senaryo sonucu üretin; sonra A ve B sonuçlarını senaryolariKarsilastir(a, b) argümanları olarak verin.",
      "ortak_yolculuk_girdi_semasi": {
        "$schema": "https://json-schema.org/draft/2020-12/schema",
        "title": "Senaryo karşılaştırması ortak yolculuk girdisi",
        "type": "object",
        "additionalProperties": false,
        "required": [
          "mesafe",
          "kisi_sayisi"
        ],
        "properties": {
          "mesafe": {
            "type": "number",
            "exclusiveMinimum": 0,
            "birim": "km",
            "description": "gidis_donus false ise toplam, true ise tek yön yolculuk mesafesi."
          },
          "gidis_donus": {
            "type": "boolean",
            "default": false,
            "birim": null,
            "description": "true olduğunda yalnız efektif mesafe bir kez ikiyle çarpılır."
          },
          "kisi_sayisi": {
            "type": "integer",
            "minimum": 1,
            "birim": "kişi",
            "description": "Sürücü dahil toplam yolcu sayısı."
          }
        }
      },
      "arac_senaryosu_girdi_semasi": {
        "$schema": "https://json-schema.org/draft/2020-12/schema",
        "title": "aracSenaryoMaliyeti girdisi",
        "type": "object",
        "additionalProperties": false,
        "required": [
          "mesafe",
          "tuketim",
          "tuketim_birimi",
          "yakit_turu",
          "litre_fiyati",
          "kisi_sayisi"
        ],
        "properties": {
          "ad": {
            "type": "string",
            "minLength": 1,
            "default": "Araç",
            "birim": null,
            "description": "Karşılaştırmada gösterilecek araç senaryosu adı."
          },
          "mesafe": {
            "type": "number",
            "exclusiveMinimum": 0,
            "birim": "km",
            "description": "gidis_donus false ise toplam, true ise tek yön yolculuk mesafesi."
          },
          "gidis_donus": {
            "type": "boolean",
            "default": false,
            "birim": null,
            "description": "true olduğunda mesafe motor tarafından tam bir kez ikiyle çarpılır."
          },
          "tuketim": {
            "type": "number",
            "exclusiveMinimum": 0,
            "birim": "tuketim_birimi alanına göre L/100km, km/L veya kWh/100km",
            "description": "Araç yakıt veya sürüş enerjisi tüketimi."
          },
          "tuketim_birimi": {
            "type": "string",
            "enum": [
              "L/100km",
              "km/L",
              "kWh/100km"
            ],
            "birim": null,
            "description": "Elektrikte kWh/100km; sıvı yakıtta L/100km veya km/L."
          },
          "yakit_turu": {
            "type": "string",
            "enum": [
              "benzin",
              "dizel",
              "lpg",
              "elektrik"
            ],
            "birim": null,
            "description": "Hesaplanacak yakıt veya enerji türü."
          },
          "litre_fiyati": {
            "type": "number",
            "exclusiveMinimum": 0,
            "birim": "Sıvı yakıtta TL/L; elektrikte TL/kWh",
            "description": "Çağıranın sağladığı birim fiyat; araç fiyat yayımlamaz."
          },
          "kisi_sayisi": {
            "type": "integer",
            "minimum": 1,
            "birim": "kişi",
            "description": "Sürücü dahil toplam yolcu sayısı."
          },
          "hgs_otoyol": {
            "type": "number",
            "minimum": 0,
            "default": 0,
            "birim": "TL",
            "description": "Seçili yolculuğun tamamına ait HGS ve otoyol gideri."
          },
          "kopru": {
            "type": "number",
            "minimum": 0,
            "default": 0,
            "birim": "TL",
            "description": "Seçili yolculuğun tamamına ait köprü gideri."
          },
          "otopark": {
            "type": "number",
            "minimum": 0,
            "default": 0,
            "birim": "TL",
            "description": "Seçili yolculuğun tamamına ait otopark gideri."
          },
          "diger": {
            "type": "number",
            "minimum": 0,
            "default": 0,
            "birim": "TL",
            "description": "Kiralama gibi senaryoya eklenen diğer toplam gider."
          },
          "sarj_verimi": {
            "type": "number",
            "exclusiveMinimum": 0,
            "maximum": 100,
            "default": 100,
            "birim": "%",
            "description": "Yalnız elektrikte şebekeden alınan enerjiyi belirleyen şarj verimi."
          }
        },
        "allOf": [
          {
            "if": {
              "properties": {
                "yakit_turu": {
                  "const": "elektrik"
                }
              },
              "required": [
                "yakit_turu"
              ]
            },
            "then": {
              "properties": {
                "tuketim_birimi": {
                  "const": "kWh/100km"
                }
              }
            },
            "else": {
              "properties": {
                "tuketim_birimi": {
                  "enum": [
                    "L/100km",
                    "km/L"
                  ]
                }
              }
            }
          }
        ]
      },
      "arac_senaryosu_cikti_semasi": {
        "$schema": "https://json-schema.org/draft/2020-12/schema",
        "title": "aracSenaryoMaliyeti başarılı çıktısı",
        "type": "object",
        "additionalProperties": false,
        "required": [
          "hesap_turu",
          "ad",
          "efektif_mesafe_km",
          "toplam_yakit_enerji",
          "yakit_enerji_birimi",
          "temel_maliyet_tl",
          "ek_maliyetler_tl",
          "toplam_tutar_tl",
          "kisi_basi_tl",
          "km_basi_tl"
        ],
        "properties": {
          "hesap_turu": {
            "type": "string",
            "const": "arac",
            "birim": null,
            "description": "Sonucun araç yakıt/enerji hesabından geldiğini belirtir."
          },
          "ad": {
            "type": "string",
            "minLength": 1,
            "birim": null,
            "description": "Karşılaştırmada gösterilecek senaryo adı."
          },
          "efektif_mesafe_km": {
            "type": "number",
            "exclusiveMinimum": 0,
            "birim": "km",
            "description": "Gidiş-dönüş bayrağı uygulandıktan sonraki toplam mesafe."
          },
          "toplam_yakit_enerji": {
            "type": "number",
            "exclusiveMinimum": 0,
            "birim": "yakit_enerji_birimi alanına göre L veya kWh",
            "description": "Sıvı yakıtta litre; elektrikte şebekeden alınan enerji."
          },
          "yakit_enerji_birimi": {
            "type": "string",
            "enum": [
              "L",
              "kWh"
            ],
            "birim": null,
            "description": "toplam_yakit_enerji alanının birimi."
          },
          "temel_maliyet_tl": {
            "type": "number",
            "exclusiveMinimum": 0,
            "birim": "TL",
            "description": "Ek giderler hariç yakıt veya enerji maliyeti."
          },
          "ek_maliyetler_tl": {
            "type": "number",
            "minimum": 0,
            "birim": "TL",
            "description": "HGS, köprü, otopark ve diğer giderlerin toplamı."
          },
          "toplam_tutar_tl": {
            "type": "number",
            "exclusiveMinimum": 0,
            "birim": "TL",
            "description": "Temel ve ek maliyetlerin toplamı."
          },
          "kisi_basi_tl": {
            "type": "number",
            "exclusiveMinimum": 0,
            "birim": "TL/kişi",
            "description": "Toplam tutarın kişi sayısına bölümü."
          },
          "km_basi_tl": {
            "type": "number",
            "exclusiveMinimum": 0,
            "birim": "TL/km",
            "description": "Toplam tutarın efektif mesafeye bölümü."
          }
        }
      },
      "sabit_senaryo_girdi_semasi": {
        "$schema": "https://json-schema.org/draft/2020-12/schema",
        "title": "sabitSenaryoMaliyeti girdisi",
        "type": "object",
        "additionalProperties": false,
        "required": [
          "mesafe",
          "kisi_sayisi"
        ],
        "properties": {
          "ad": {
            "type": "string",
            "minLength": 1,
            "default": "Sabit ücret",
            "birim": null,
            "description": "Karşılaştırmada gösterilecek sabit veya bilet senaryosu adı."
          },
          "mesafe": {
            "type": "number",
            "exclusiveMinimum": 0,
            "birim": "km",
            "description": "gidis_donus false ise toplam, true ise tek yön yolculuk mesafesi."
          },
          "gidis_donus": {
            "type": "boolean",
            "default": false,
            "birim": null,
            "description": "true olduğunda efektif mesafe iki kat olur; sabit ücret yeniden çarpılmaz."
          },
          "kisi_sayisi": {
            "type": "integer",
            "minimum": 1,
            "birim": "kişi",
            "description": "Biletin kişi başı olduğu durumda ücretin çarpılacağı yolcu sayısı."
          },
          "sabit_ucret": {
            "type": "number",
            "minimum": 0,
            "default": 0,
            "birim": "TL",
            "description": "Seçili gidiş-dönüş dahil yolculuğun tamamı için toplam veya kişi başı ücret."
          },
          "ucret_kapsami": {
            "type": "string",
            "enum": [
              "toplam",
              "kisi_basi"
            ],
            "default": "toplam",
            "birim": null,
            "description": "toplam ücreti bir kez, kisi_basi ücreti kişi sayısıyla çarpar."
          },
          "ek_maliyet": {
            "type": "number",
            "minimum": 0,
            "default": 0,
            "birim": "TL",
            "description": "Sabit/bilet temel ücretine bir kez eklenecek yolculuk toplamı."
          }
        }
      },
      "sabit_senaryo_cikti_semasi": {
        "$schema": "https://json-schema.org/draft/2020-12/schema",
        "title": "sabitSenaryoMaliyeti başarılı çıktısı",
        "type": "object",
        "additionalProperties": false,
        "required": [
          "hesap_turu",
          "ad",
          "efektif_mesafe_km",
          "toplam_yakit_enerji",
          "yakit_enerji_birimi",
          "temel_maliyet_tl",
          "ek_maliyetler_tl",
          "toplam_tutar_tl",
          "kisi_basi_tl",
          "km_basi_tl"
        ],
        "properties": {
          "hesap_turu": {
            "type": "string",
            "const": "sabit",
            "birim": null,
            "description": "Sonucun sabit/bilet hesabından geldiğini belirtir."
          },
          "ad": {
            "type": "string",
            "minLength": 1,
            "birim": null,
            "description": "Karşılaştırmada gösterilecek senaryo adı."
          },
          "efektif_mesafe_km": {
            "type": "number",
            "exclusiveMinimum": 0,
            "birim": "km",
            "description": "Gidiş-dönüş bayrağı uygulandıktan sonraki toplam mesafe."
          },
          "toplam_yakit_enerji": {
            "type": "null",
            "const": null,
            "birim": null,
            "description": "Sabit/bilet senaryosunda yakıt veya enerji hesaplanmadığı için null."
          },
          "yakit_enerji_birimi": {
            "type": "null",
            "const": null,
            "birim": null,
            "description": "Sabit/bilet senaryosunda enerji birimi olmadığı için null."
          },
          "temel_maliyet_tl": {
            "type": "number",
            "minimum": 0,
            "birim": "TL",
            "description": "Ücret kapsamı uygulandıktan sonraki sabit veya toplam bilet tutarı."
          },
          "ek_maliyetler_tl": {
            "type": "number",
            "minimum": 0,
            "birim": "TL",
            "description": "Temel ücrete bir kez eklenen diğer maliyet."
          },
          "toplam_tutar_tl": {
            "type": "number",
            "minimum": 0,
            "birim": "TL",
            "description": "Temel ve ek maliyetin toplamı."
          },
          "kisi_basi_tl": {
            "type": "number",
            "minimum": 0,
            "birim": "TL/kişi",
            "description": "Toplam tutarın kişi sayısına bölümü."
          },
          "km_basi_tl": {
            "type": "number",
            "minimum": 0,
            "birim": "TL/km",
            "description": "Toplam tutarın efektif mesafeye bölümü."
          }
        }
      },
      "karsilastirma_cikti_semasi": {
        "$schema": "https://json-schema.org/draft/2020-12/schema",
        "title": "senaryolariKarsilastir başarılı çıktısı",
        "type": "object",
        "additionalProperties": false,
        "required": [
          "fark_tl",
          "kisi_basi_fark_tl",
          "a_bazina_gore_yuzde_fark",
          "yon"
        ],
        "properties": {
          "fark_tl": {
            "type": "number",
            "minimum": -1.7976931348623157e+308,
            "maximum": 1.7976931348623157e+308,
            "birim": "TL",
            "description": "B toplamından A toplamının çıkarılması; negatif değer B'nin ucuz olduğunu gösterir."
          },
          "kisi_basi_fark_tl": {
            "type": "number",
            "minimum": -1.7976931348623157e+308,
            "maximum": 1.7976931348623157e+308,
            "birim": "TL/kişi",
            "description": "B kişi başı tutarından A kişi başı tutarının çıkarılması."
          },
          "a_bazina_gore_yuzde_fark": {
            "type": [
              "number",
              "null"
            ],
            "minimum": -1.7976931348623157e+308,
            "maximum": 1.7976931348623157e+308,
            "birim": "%",
            "description": "fark_tl / A.toplam_tutar_tl × 100; A toplamı sıfırsa null."
          },
          "yon": {
            "type": "string",
            "enum": [
              "B daha ucuz",
              "eşit",
              "B daha pahalı"
            ],
            "birim": null,
            "description": "Farkın 1e-9 TL toleransına göre sözel yönü."
          }
        }
      },
      "ornekler": {
        "gecerli": {
          "arac_cagri": {
            "ad": "Araç",
            "mesafe": 500,
            "gidis_donus": false,
            "tuketim": 7,
            "tuketim_birimi": "L/100km",
            "yakit_turu": "benzin",
            "litre_fiyati": 45,
            "kisi_sayisi": 4,
            "hgs_otoyol": 0,
            "kopru": 0,
            "otopark": 0,
            "diger": 0
          },
          "arac_yanit": {
            "hesap_turu": "arac",
            "ad": "Araç",
            "efektif_mesafe_km": 500,
            "toplam_yakit_enerji": 35,
            "yakit_enerji_birimi": "L",
            "temel_maliyet_tl": 1575,
            "ek_maliyetler_tl": 0,
            "toplam_tutar_tl": 1575,
            "kisi_basi_tl": 393.75,
            "km_basi_tl": 3.15
          },
          "sabit_cagri": {
            "ad": "Otobüs",
            "mesafe": 500,
            "gidis_donus": false,
            "kisi_sayisi": 4,
            "sabit_ucret": 550,
            "ucret_kapsami": "kisi_basi",
            "ek_maliyet": 0
          },
          "sabit_yanit": {
            "hesap_turu": "sabit",
            "ad": "Otobüs",
            "efektif_mesafe_km": 500,
            "toplam_yakit_enerji": null,
            "yakit_enerji_birimi": null,
            "temel_maliyet_tl": 2200,
            "ek_maliyetler_tl": 0,
            "toplam_tutar_tl": 2200,
            "kisi_basi_tl": 550,
            "km_basi_tl": 4.4
          },
          "karsilastirma_yanit": {
            "fark_tl": 625,
            "kisi_basi_fark_tl": 156.25,
            "a_bazina_gore_yuzde_fark": 39.682539682539684,
            "yon": "B daha pahalı"
          }
        },
        "gecersiz": {
          "hedef_sema": "sabit_senaryo_girdi_semasi",
          "cagri": {
            "mesafe": 500,
            "kisi_sayisi": 4,
            "sabit_ucret": 550,
            "ucret_kapsami": "tek_yon"
          },
          "aciklama": "ucret_kapsami yalnız toplam veya kisi_basi olabilir."
        }
      }
    },
    "butceden_menzil": {
      "fonksiyon": "tersButceHesapla(girdi)",
      "girdi_semasi": {
        "$schema": "https://json-schema.org/draft/2020-12/schema",
        "title": "tersButceHesapla girdisi",
        "type": "object",
        "additionalProperties": false,
        "required": [
          "butce",
          "tuketim",
          "tuketim_birimi",
          "birim_fiyati",
          "yakit_turu"
        ],
        "properties": {
          "butce": {
            "type": "number",
            "minimum": 0,
            "birim": "TL",
            "description": "Sabit masraf ve enerji harcaması için ayrılan toplam bütçe."
          },
          "sabit_masraflar": {
            "type": "number",
            "minimum": 0,
            "default": 0,
            "birim": "TL",
            "description": "Menzilden önce bütçeden bir kez çıkarılan toplam sabit gider."
          },
          "tuketim": {
            "type": "number",
            "exclusiveMinimum": 0,
            "birim": "tuketim_birimi alanına göre L/100km, km/L veya kWh/100km",
            "description": "Kilometre başı enerji maliyetine dönüştürülecek tüketim."
          },
          "tuketim_birimi": {
            "type": "string",
            "enum": [
              "L/100km",
              "km/L",
              "kWh/100km"
            ],
            "birim": null,
            "description": "Elektrikte kWh/100km; sıvı yakıtta L/100km veya km/L."
          },
          "birim_fiyati": {
            "type": "number",
            "exclusiveMinimum": 0,
            "birim": "Sıvı yakıtta TL/L; elektrikte TL/kWh",
            "description": "Çağıranın sağladığı yakıt veya elektrik birim fiyatı."
          },
          "yakit_turu": {
            "type": "string",
            "enum": [
              "benzin",
              "dizel",
              "lpg",
              "elektrik"
            ],
            "birim": null,
            "description": "Bütçenin kullanılacağı yakıt veya enerji türü."
          },
          "sarj_verimi": {
            "type": "number",
            "exclusiveMinimum": 0,
            "maximum": 100,
            "default": 100,
            "birim": "%",
            "description": "Yalnız elektrik hesabında şebeke kaybını belirleyen verim."
          }
        },
        "allOf": [
          {
            "if": {
              "properties": {
                "yakit_turu": {
                  "const": "elektrik"
                }
              },
              "required": [
                "yakit_turu"
              ]
            },
            "then": {
              "properties": {
                "tuketim_birimi": {
                  "const": "kWh/100km"
                }
              }
            },
            "else": {
              "properties": {
                "tuketim_birimi": {
                  "enum": [
                    "L/100km",
                    "km/L"
                  ]
                }
              }
            }
          }
        ]
      },
      "cikti_semasi": {
        "$schema": "https://json-schema.org/draft/2020-12/schema",
        "title": "tersButceHesapla başarılı çıktısı",
        "type": "object",
        "additionalProperties": false,
        "required": [
          "kalan_butce_tl",
          "km_basi_enerji_maliyeti_tl",
          "menzil_km"
        ],
        "properties": {
          "kalan_butce_tl": {
            "type": "number",
            "minimum": 0,
            "birim": "TL",
            "description": "Toplam bütçeden sabit masraflar çıktıktan sonra kalan tutar."
          },
          "km_basi_enerji_maliyeti_tl": {
            "type": "number",
            "exclusiveMinimum": 0,
            "birim": "TL/km",
            "description": "Şarj kaybı dahil kilometre başı yakıt veya enerji maliyeti."
          },
          "menzil_km": {
            "type": "number",
            "minimum": 0,
            "birim": "km",
            "description": "Kalan bütçenin kilometre başı enerji maliyetine bölümü."
          }
        }
      },
      "ornekler": {
        "gecerli": {
          "cagri": {
            "butce": 2000,
            "sabit_masraflar": 425,
            "tuketim": 7,
            "tuketim_birimi": "L/100km",
            "birim_fiyati": 45,
            "yakit_turu": "benzin"
          },
          "yanit": {
            "kalan_butce_tl": 1575,
            "km_basi_enerji_maliyeti_tl": 3.1500000000000004,
            "menzil_km": 499.99999999999994
          }
        },
        "gecersiz": {
          "cagri": {
            "butce": 2000,
            "tuketim": 7,
            "tuketim_birimi": "L/100km",
            "birim_fiyati": 0,
            "yakit_turu": "benzin"
          },
          "aciklama": "Birim fiyat sıfırdan büyük olmalıdır."
        }
      }
    },
    "depodan_menzil": {
      "fonksiyon": "depoMenzili(girdi)",
      "girdi_semasi": {
        "$schema": "https://json-schema.org/draft/2020-12/schema",
        "title": "depoMenzili girdisi",
        "type": "object",
        "additionalProperties": false,
        "required": [
          "depo_litre",
          "tuketim"
        ],
        "properties": {
          "depo_litre": {
            "type": "number",
            "minimum": 0,
            "birim": "L",
            "description": "Hesapta kullanılacak sıvı yakıt depo miktarı."
          },
          "tuketim": {
            "type": "number",
            "exclusiveMinimum": 0,
            "birim": "tuketim_birimi alanına göre L/100km veya km/L",
            "description": "Aracın sıvı yakıt tüketimi veya verimi."
          },
          "tuketim_birimi": {
            "type": "string",
            "enum": [
              "L/100km",
              "km/L"
            ],
            "default": "L/100km",
            "birim": null,
            "description": "Tüketim alanının birimi; verilmezse motor L/100km kabul eder."
          }
        }
      },
      "cikti_semasi": {
        "$schema": "https://json-schema.org/draft/2020-12/schema",
        "title": "depoMenzili başarılı çıktısı",
        "type": "object",
        "additionalProperties": false,
        "required": [
          "menzil_km"
        ],
        "properties": {
          "menzil_km": {
            "type": "number",
            "minimum": 0,
            "birim": "km",
            "description": "Depo miktarının normalize L/100km tüketime göre sağlayacağı menzil."
          }
        }
      },
      "ornekler": {
        "gecerli": {
          "cagri": {
            "depo_litre": 50,
            "tuketim": 7,
            "tuketim_birimi": "L/100km"
          },
          "yanit": {
            "menzil_km": 714.2857142857143
          }
        },
        "gecersiz": {
          "cagri": {
            "depo_litre": 50,
            "tuketim": 0,
            "tuketim_birimi": "L/100km"
          },
          "aciklama": "Tüketim sıfırdan büyük olmalıdır."
        }
      }
    },
    "bataryadan_menzil": {
      "fonksiyon": "bataryaMenzili(girdi)",
      "girdi_semasi": {
        "$schema": "https://json-schema.org/draft/2020-12/schema",
        "title": "bataryaMenzili girdisi",
        "type": "object",
        "additionalProperties": false,
        "required": [
          "kapasite_kwh",
          "tuketim_kwh_100km"
        ],
        "properties": {
          "kapasite_kwh": {
            "type": "number",
            "minimum": 0,
            "birim": "kWh kullanılabilir enerji",
            "description": "Brüt katalog değeri değil, sürüşe ayrılabilen kullanılabilir batarya enerjisi."
          },
          "tuketim_kwh_100km": {
            "type": "number",
            "exclusiveMinimum": 0,
            "birim": "kWh/100km",
            "description": "Bataryada depolanmış enerjiden ölçülen sürüş tüketimi; şarj verimi yeniden uygulanmaz."
          }
        }
      },
      "cikti_semasi": {
        "$schema": "https://json-schema.org/draft/2020-12/schema",
        "title": "bataryaMenzili başarılı çıktısı",
        "type": "object",
        "additionalProperties": false,
        "required": [
          "menzil_km"
        ],
        "properties": {
          "menzil_km": {
            "type": "number",
            "minimum": 0,
            "birim": "km",
            "description": "Kullanılabilir batarya enerjisinin sürüş tüketimine göre sağlayacağı menzil."
          }
        }
      },
      "ornekler": {
        "gecerli": {
          "cagri": {
            "kapasite_kwh": 90,
            "tuketim_kwh_100km": 18
          },
          "yanit": {
            "menzil_km": 500
          }
        },
        "gecersiz": {
          "cagri": {
            "kapasite_kwh": -1,
            "tuketim_kwh_100km": 18
          },
          "aciklama": "Kullanılabilir batarya kapasitesi negatif olamaz."
        }
      }
    },
    "gercek_tuketim": {
      "fonksiyon": "gercekTuketimHesapla(girdi)",
      "girdi_semasi": {
        "$schema": "https://json-schema.org/draft/2020-12/schema",
        "title": "gercekTuketimHesapla girdisi",
        "type": "object",
        "additionalProperties": false,
        "required": [
          "gidilen_km",
          "alinan_litre"
        ],
        "properties": {
          "gidilen_km": {
            "type": "number",
            "exclusiveMinimum": 0,
            "birim": "km",
            "description": "İki tam dolum arasında kat edilen pozitif mesafe."
          },
          "alinan_litre": {
            "type": "number",
            "exclusiveMinimum": 0,
            "birim": "L",
            "description": "İkinci tam dolumda depoya alınan pozitif yakıt miktarı."
          }
        }
      },
      "cikti_semasi": {
        "$schema": "https://json-schema.org/draft/2020-12/schema",
        "title": "gercekTuketimHesapla başarılı çıktısı",
        "type": "object",
        "additionalProperties": false,
        "required": [
          "gercek_tuketim_l_100km",
          "gercek_verim_km_l"
        ],
        "properties": {
          "gercek_tuketim_l_100km": {
            "type": "number",
            "exclusiveMinimum": 0,
            "birim": "L/100km",
            "description": "Alınan litrenin gidilen mesafeye göre normalize edilmiş gerçek tüketimi."
          },
          "gercek_verim_km_l": {
            "type": "number",
            "exclusiveMinimum": 0,
            "birim": "km/L",
            "description": "Gerçek tüketimin tersinden hesaplanan kilometre/litre verimi."
          }
        }
      },
      "ornekler": {
        "gecerli": {
          "cagri": {
            "gidilen_km": 500,
            "alinan_litre": 35
          },
          "yanit": {
            "gercek_tuketim_l_100km": 7,
            "gercek_verim_km_l": 14.285714285714286
          }
        },
        "gecersiz": {
          "cagri": {
            "gidilen_km": 0,
            "alinan_litre": 35
          },
          "aciklama": "Gidilen mesafe sıfırdan büyük olmalıdır."
        }
      }
    }
  },
  "karsilastirma_sozlesmesi": {
    "ortak_alanlar": [
      "mesafe",
      "gidis_donus",
      "kisi_sayisi"
    ],
    "arac_senaryosu_alanlari": [
      "ad",
      "tuketim",
      "tuketim_birimi",
      "yakit_turu",
      "litre_fiyati",
      "sarj_verimi",
      "diger"
    ],
    "sabit_senaryo_alanlari": [
      "ad",
      "sabit_ucret",
      "ucret_kapsami",
      "ek_maliyet"
    ],
    "ucret_kapsami_enum": [
      "toplam",
      "kisi_basi"
    ],
    "cikti_alanlari": [
      "fark_tl",
      "kisi_basi_fark_tl",
      "a_bazina_gore_yuzde_fark",
      "yon"
    ],
    "sifir_baz_kurali": "A toplamı 0 ise TL farkı hesaplanır fakat yüzde fark null döner."
  },
  "hatalar": [
    {
      "kod": "GECERSIZ_GIRDI",
      "kosul": "Girdi nesne değil."
    },
    {
      "kod": "BOS_ALAN",
      "kosul": "Zorunlu sayısal alan boş."
    },
    {
      "kod": "GECERSIZ_SAYI",
      "kosul": "Değer geçerli sayısal dize/sayı değil, NaN veya sonsuz."
    },
    {
      "kod": "HESAP_TASMASI",
      "kosul": "Sonlu girdilerle yapılan ara veya son hesap JavaScript'in sonlu sayı aralığını aşıyor."
    },
    {
      "kod": "SIFIR_VEYA_NEGATIF",
      "kosul": "Mesafe, tüketim, birim fiyat veya gerekli pozitif değer 0 ya da negatif."
    },
    {
      "kod": "NEGATIF_DEGER",
      "kosul": "Ek maliyet, bütçe, depo veya batarya değeri negatif."
    },
    {
      "kod": "GECERSIZ_KISI",
      "kosul": "Kişi sayısı 1'den küçük veya tam sayı değil."
    },
    {
      "kod": "GECERSIZ_BIRIM",
      "kosul": "Sıvı yakıt tüketim birimi L/100km veya km/L değil ya da elektrik tüketim birimi kWh/100km değil."
    },
    {
      "kod": "GECERSIZ_YAKIT",
      "kosul": "Yakıt türü izin verilen enum dışında."
    },
    {
      "kod": "GECERSIZ_BAYRAK",
      "kosul": "gidis_donus boolean değil."
    },
    {
      "kod": "GECERSIZ_VERIM",
      "kosul": "Şarj verimi yüzde 100'den büyük."
    },
    {
      "kod": "BUTCE_YETERSIZ",
      "kosul": "Bütçe sabit masraflardan küçük; negatif menzil döndürülmez."
    },
    {
      "kod": "GECERSIZ_KAPSAM",
      "kosul": "Sabit ücret kapsamı toplam veya kisi_basi değil."
    },
    {
      "kod": "GECERSIZ_SENARYO",
      "kosul": "Karşılaştırmaya iki geçerli sonuç verilmedi."
    }
  ],
  "agent_uyarilari": [
    "Kullanıcı km/L verdiyse hesap öncesinde 100/x ile L/100km'ye çevirin veya tuketim_birimi alanını km/L gönderin; x=0 ise durun.",
    "Mesafeyi gidiş-dönüş toplamına elle iki katladıysanız gidis_donus false olmalıdır. Hem iki kat mesafe hem true göndermek çift sayar.",
    "Yakıt veya elektrik fiyatını bu araç sağlamaz. Çağıran kendi güncel ve güvenilir kaynağından bulup litre_fiyati alanına girmelidir.",
    "LPG tüketimini benzinden türetmeyin; kullanıcıdan LPG'ye özgü gerçek tüketim alın.",
    "Ondalık JSON sayılarında nokta kullanın. Tarayıcı arayüzü ayrıca Türkçe virgüllü metin girişini kabul eder.",
    "CO2 sonucu yalnız sıvı yakıtın doğrudan kullanım tahminidir; elektrik için null değerini başka bir faktör uydurarak doldurmayın."
  ],
  "kaynaklar": [
    {
      "id": "desnz-2026-yayin",
      "kurum": "UK Department for Energy Security and Net Zero",
      "baslik": "Greenhouse gas reporting: conversion factors 2026",
      "yayin_tarihi": "2026-06-11",
      "url": "https://www.gov.uk/government/publications/greenhouse-gas-reporting-conversion-factors-2026",
      "dogrulanan": "2026 faktör setinin resmî yayın sayfası ve faaliyet verisinden emisyon hesabında kullanılma kapsamı."
    },
    {
      "id": "desnz-2026-full-xlsx",
      "kurum": "UK Department for Energy Security and Net Zero",
      "baslik": "Conversion factors 2026: full set",
      "url": "https://assets.publishing.service.gov.uk/media/6a29392bade52dc0882218a8/ghg-conversion-factors-2026-full-set.xlsx",
      "dogrulanan": "Fuels sayfası, litres birimi, kg CO2e of CO2 per unit sütunu: Petrol (100% mineral petrol) 2.33955; Diesel (100% mineral diesel) 2.62818; LPG 1.55491 kg CO2/L."
    },
    {
      "id": "desnz-2026-metodoloji",
      "kurum": "UK Department for Energy Security and Net Zero",
      "baslik": "2026 Government greenhouse gas conversion factors for company reporting: Methodology paper",
      "url": "https://assets.publishing.service.gov.uk/media/6a2940543b15d05a7ce3202e/2026-GHG-conversion-factors-methodology-report.pdf",
      "dogrulanan": "Doğrudan yakıt faktörlerinin dayanağı, tam oksidasyon yaklaşımı ve enerji faktörlerinin hacim/kütle birimlerine dönüşüm yöntemi."
    },
    {
      "id": "kgm-guncel-tarife",
      "kurum": "Karayolları Genel Müdürlüğü",
      "baslik": "Otoyol ve Köprü Geçiş Ücretleri",
      "url": "https://www.kgm.gov.tr/Sayfalar/KGM/SiteTr/Otoyollar/UcretlerYeni.aspx",
      "dogrulanan": "Güncel resmî tarife dizini; araçta hiçbir tarife tutarı gömülü değildir."
    }
  ]
}
