Ana içeriğe atla
FormElementSubmission, bir FormSubmission içindeki tek bir form alanının gerçek değerini saklar. Çok dönemli veri, TIMESTAMP kayıtları, değer bazında iş akışı durumu ve aynı dönem için çoklu girişleri destekler.

Temel Amaç

FormElementSubmission, formlarda girilen gerçek veri değerlerini saklar:
  • Bireysel Alan Değerleri: Her form alanı yanıtı bir FormElementSubmission olur
  • Çok dönemli destek: Yıllık, çeyreklik, aylık veya TIMESTAMP
  • Çoklu Girişler: Birden fazla yanıtı alan başına destekle (dış formlar, tedarikçi verileri)
  • Hesaplama Sonuçları: Hem giriş değerlerini hem de hesaplanan çıktıları sakla

Veri Depolama Mimarisi

Çok Dönemli Veri Depolama: Her gönderim birden fazla zaman periyodunda değer saklayabilir
FormElementSubmission {
  formElementId: "energy-consumption-field",
  periodUnit: 3,        // Mart (aylık: 1..12)
  sequence: 0,          // Bu periyot için ilk giriş
  value: 1250.5,        // Gerçek kWh değeri
  activityId: null      // Karmaşık hesaplama gerekli değil
}
Karmaşık Hesaplama Depolama: Gelişmiş hesaplamalar için Activity sonuçlarına bağlantı
FormElementSubmission {
  formElementId: "emissions-calculation",
  periodUnit: 1,        // Q1 (çeyreklik: 1..4)
  sequence: 0,
  value: 2847.3,        // Hesaplanan tCO2e sonucu
  activityId: "act_123" // Activity hesaplamasına referans
}
Çoklu Giriş Desteği: Alan/periyot başına birden fazla gönderimi işle (özellikle dış formlar için)
// Tedarikçi A'nın verisi
FormElementSubmission { periodUnit: 6, sequence: 0, value: 850 }
// Tedarikçi B'nin verisi
FormElementSubmission { periodUnit: 6, sequence: 1, value: 1200 }
// İç tahmin
FormElementSubmission { periodUnit: 6, sequence: 2, value: 1000 }

Esnek Değer Depolama

JSON tabanlı depolama her veri türünü destekler:
  • Sayılar: 1250.5 (enerji tüketimi, emisyonlar, maliyetler)
  • Metin: "Sertifikalı tedarikçiden doğal gaz" (açıklamalar, notlar)
  • Diziler: ["Şebeke elektriği", "Güneş panelleri"] (çoklu seçimler)
  • Nesneler: {"scope1": 450, "scope2": 280, "total": 730} (karmaşık hesaplamalar)

Zaman Periyodu Yönetimi

Periyot Birimleri: Veri toplama için farklı ayrıntı düzeyleri
  • Yıllık (periodUnit = 1)
  • Aylık (periodUnit 1–12)
  • Çeyreklik (periodUnit 1–4)
  • TIMESTAMP: UTC recordedAt zorunludur; periodUnit ay bilgisinden türetilir
Sıra Numaraları: Aynı periyot için birden fazla gönderimi işle — sequence = 1, 2, 3…: Aynı periyottaki ek girişler

Veri Türleri ve Doğrulama

Veri Türleri ve Doğrulama

Örnekler:
  • Sayısal: {"value": 1250.75}
  • Metin: {"value": "Yenilenebilir elektrik satın alındı"}
  • Seçim (tek/çoklu): {"value": ["Güneş", "Rüzgar"]}

Activity Entegrasyonu

Hesaplanan Değerler: FormElement’ler karmaşık hesaplamalar için Activity’leri kullandığında
FormElementSubmission {
  formElementId: "scope1-emissions",
  value: 2847.3,           // Nihai hesaplanan sonuç
  activityId: "act_xyz789", // Girişler/formül ile Activity'ye bağlantı
  status: "COMPLETED"
}

Ekler (destekleyici dokümanlar)

Destekleyici dokümanlar değer (FormElementSubmission) bazında ilişkilendirilir ve API’lerle değer kimliği üzerinden alınır. Dosyalar value JSON içinde saklanmaz.
  • Çekmece akışı: Gönderim arayüzünde element/periyot başına açılan yan çekmece aracılığıyla dosya yüklenir veya indirilir. Özel gönderimlerde dosyalar doğrudan FormElementSubmission kaydına eklenir; halka açık gönderimlerde önce taslak gönderim oluşturularak yükleme yapılır.
  • Rozetler: Ataş simgesi, mevcut dosya sayısını rozet olarak gösterdiği için onaycılar kanıtların varlığını hemen görür.
  • Silme yetkileri: Yükleme yapabilen anonim kullanıcılar dosya silemez; silme işlemleri yalnızca yetkili dahili kullanıcılar tarafından yapılır.

Veri Toplama ve Toplama

Site Hiyerarşisi Toplama: Alt site verileri ana sitelere toplanır
Kurumsal (tüm bölgelerin toplamı)
├── Kuzey Amerika Bölgesi (tesislerin toplamı)
│   ├── Tesis A: 1.250 kWh
│   └── Tesis B: 980 kWh
└── Avrupa Bölgesi (tesislerin toplamı)
    └── Tesis C: 1.100 kWh
Zaman Periyodu Toplama: Aylık veriler çeyreklik veya yıllık olarak toplanabilir
Yıllık Toplam = Q1 + Q2 + Q3 + Q4
Q1 Toplam = Ocak + Şubat + Mart

Gerçek Dünya Örnekleri

Enerji tüketimi (TIMESTAMP)
{
  "formElementId": "electricity",
  "periodUnit": 3,
  "sequence": 1,
  "value": 15420.5,
  "recordedAt": "2024-03-31T23:59:59Z",
  "status": "COMPLETED"
}
Tedarikçi değerlendirme (YILLIK)
{
  "formElementId": "supplier-emissions",
  "periodUnit": 1,
  "sequence": 1,
  "value": {
    "scope1": 450.2,
    "scope2": 280.7,
    "scope3": 125.9,
    "total": 856.8
  },
  "status": "APPROVED"
}
Doküman yükleme: Dosyalar değerle ilişkilidir; value JSON dosyayı değil, gerekirse referansları barındırır.

Sorgu ve Alma Desenleri

Form Elementine Göre: Siteler/periyotlar boyunca belirli bir alan için tüm gönderimleri al Site ve Periyoda Göre: Belirli bir zaman periyodunda bir site için tüm alan değerlerini al Gönderime Göre: Tek bir form gönderim oturumu içindeki tüm alan değerlerini al Toplanmış Görünümler: Birden fazla gönderim boyunca değerleri topla veya say

İş Akışı Durumu

Her değer, yapılandırılmış iş akışına göre bir duruma sahiptir (COMPLETED, APPROVED, REJECTED). Onaylar değer bazında uygulanır; ACTIVITY için toplu işlemler mevcuttur.

Operasyonel Faydalar

Esneklik: JSON tabanlı değer depolama ile her türlü veriyi sakla Ölçeklenebilirlik: Büyük organizasyonlar boyunca milyonlarca veri noktasını işle Entegrasyon: Hesaplamalar, dashboard’lar ve raporlama ile bağlantı