Ana içeriğe atla
ImportDefinition, dış kaynaklardan (CSV, Excel) form gönderimlerine otomatik veri aktarımı sağlar. Her tanım, giriş sütunlarını, dönüşüm mantığını ve form elemanlarına çıkış eşlemelerini belirtir.

Temel Amaç

  • Veri Dönüşümü: Harici veri formatlarını form uyumlu değerlere dönüştürür
  • Çoklu Site Desteği: Tek bir içe aktarmada birden fazla site için veri işler
  • Tür Koruma: Sayısal, metin ve boolean çıkış değerlerini destekler
  • Dönem İşleme: Verileri YILLIK, AYLIK veya ÇEYREKLİK dönemlere eşler

Tanım Yapısı

ImportDefinition {
  id: "impdef-...",
  name: "Enerji Fatura İçe Aktarma",
  description: "Aylık enerji tüketimini faturalardan içe aktar",
  inputSchema: [...],      // Beklenen giriş sütunları
  outputSchema: [...],     // Üretilen çıkış alanları
  processorCode: "...",    // JavaScript dönüşüm mantığı
  organizationId: "org-..." // Sistem geneli tanımlar için null
}

Giriş Şeması

Kaynak dosyadan beklenen sütunları tanımlar:
{
  "inputSchema": [
    {
      "name": "site_adi",
      "type": "string",
      "required": true,
      "role": "site_identifier",
      "aliases": ["tesis", "lokasyon"]
    },
    {
      "name": "tuketim_kwh",
      "type": "number",
      "required": true
    },
    {
      "name": "yenilenebilir_mi",
      "type": "boolean",
      "required": false
    }
  ]
}
Sütun Türleri:
  • string: Metin değerleri
  • number: Sayısal değerler (metinden otomatik dönüştürülür)
  • boolean: Doğru/yanlış (“true”, “1”, “evet” kabul eder)
Sütun Rolleri:
  • site_identifier: Gruplu çıktılarda satırları sitelerle eşleştirmek için kullanılır

Çıkış Şeması

Dönüşüm tarafından üretilen alanları tanımlar:
{
  "outputSchema": [
    {
      "key": "toplam_enerji",
      "label": "Toplam Enerji Tüketimi",
      "type": "number",
      "periodUnit": "YEARLY"
    },
    {
      "key": "aylik_tuketim",
      "label": "Aylık Tüketim",
      "type": "number",
      "periodUnit": "MONTHLY"
    },
    {
      "key": "enerji_kaynagi",
      "label": "Enerji Kaynağı",
      "type": "string"
    }
  ]
}
Dönem Birimleri:
  • YEARLY: Yıl başına tek değer (varsayılan)
  • MONTHLY: 1-12 dönemleri için değerler
  • QUARTERLY: 1-4 dönemleri için değerler

İşlemci Kodu

Giriş satırlarını çıkış değerlerine dönüştüren JavaScript kodu:
// Basit toplama
const toplam = inputValues.reduce((sum, row) => sum + row.tuketim_kwh, 0);
return { toplam_enerji: toplam };
Kullanılabilir Değişkenler:
  • inputValues: Giriş satır nesnelerinin dizisi
  • $year: İçe aktarma için hedef yıl
Çıkış Formatları: Tekil çıkış (tüm siteler):
return {
  toplam_enerji: 15420.5,
  enerji_kaynagi: "Şebeke Elektriği"
};
Gruplu çıkış (site başına):
return {
  $grouped: true,
  $groupKey: "site_adi",
  results: {
    "Tesis A": { toplam_enerji: 8500 },
    "Tesis B": { toplam_enerji: 6920 }
  }
};
Aylık veri:
return {
  aylik_tuketim: {
    "1": 1250,
    "2": 1180,
    "3": 1340
  }
};

Değer Türü Desteği

İçe aktarma sistemi tüm çıkış türlerini korur: Sayısal değerler:
return { toplam_enerji: 15420.5 };
// Kaydedilir: 15420.5
Metin değerler:
return { enerji_kaynagi: "Yenilenebilir - Güneş" };
// Kaydedilir: "Yenilenebilir - Güneş"
Boolean değerler:
return { sertifikali_mi: true };
// Kaydedilir: true
Null değerler (mevcutu sil):
return { kaldirilmis_alan: null };
// Bu alan için mevcut gönderimi siler

İçe Aktarma Yürütme Akışı

1. Sütun Algılama: Sistem dosya sütunlarını giriş şemasıyla eşleştirir 2. Sütun Eşleme: Kullanıcı sütun atamalarını onaylar veya düzenler 3. Önizleme: İşlemci örnek veriler üzerinde çalışarak beklenen sonuçları gösterir 4. Çıkış Eşleme: Kullanıcı çıkış alanlarını form elemanlarıyla eşler 5. Yürütme: Sistem tüm satırları işler ve gönderimleri oluşturur 6. Sonuçlar: ImportResult kayıtları neyin içe aktarıldığını takip eder

Çoklu Site İçe Aktarmaları

Birden fazla site için veri içeren dosyalar için: Giriş dosyası:
site,ay,kwh
Tesis A,Ocak,1250
Tesis A,Şubat,1180
Tesis B,Ocak,980
Tesis B,Şubat,1020
Gruplama ile işlemci:
const siteBasina = {};
for (const row of inputValues) {
  if (!siteBasina[row.site]) siteBasina[row.site] = {};
  const ay = getMonthNumber(row.ay);
  siteBasina[row.site][ay] = row.kwh;
}

return {
  $grouped: true,
  $groupKey: "site",
  results: Object.fromEntries(
    Object.entries(siteBasina).map(([site, data]) => [
      site,
      { aylik_tuketim: data }
    ])
  )
};
Sistem grup anahtarlarını otomatik olarak site adlarıyla eşleştirir ve her site için ayrı gönderimler oluşturur.

Erişim Kontrolü

  • İçe aktarmalar site erişim izinlerine uyar
  • Kullanıcılar yalnızca erişim yetkisi olan sitelere içe aktarabilir
  • Erişilemeyen siteler için gruplar sessizce atlanır

İçe Aktarma Kayıtları

Her içe aktarma yürütmesi şunları oluşturur: Import: Durum ve satır sayısı ile ana kayıt ImportResult: Site başına sonuçlar:
  • İşlenmiş veri anlık görüntüsü
  • Eklenen değerlerle alan eşlemeleri
  • Dönem meta verileri

Gerçek Dünya Örnekleri

Fatura İçe Aktarma:
  • Giriş: CSV formatında aylık faturalar
  • Çıkış: Site başına aylık enerji tüketimi
  • Eşleme: Tüketim alanı → Enerji form elemanı
Tedarikçi Veri Toplama:
  • Giriş: Tedarikçi emisyon tablosu
  • Çıkış: Kategori etiketleriyle Kapsam 1, 2, 3 değerleri
  • Eşleme: Birden fazla çıkış → Değerlendirme formu
Çeyreklik Finansal Veri:
  • Giriş: Çeyreklik rakamlarla finansal raporlar
  • Çıkış: Çeyrek bazında gelir ve maliyet
  • Eşleme: Q1-Q4 değerleri → Finansal form elemanları

Operasyonel Faydalar

Verimlilik: Saniyeler içinde yüzlerce değeri toplu içe aktar Doğruluk: Otomatik dönüşüm manuel giriş hatalarını azaltır Esneklik: Özel işlemciler her veri formatını işleyebilir Denetlenebilirlik: Veri anlık görüntüleriyle tam içe aktarma geçmişi Tür Güvenliği: Sayısal, metin ve boolean değerleri doğru şekilde korur