> ## Documentation Index
> Fetch the complete documentation index at: https://docs.azalt.co/llms.txt
> Use this file to discover all available pages before exploring further.

# FormElementSubmission

> Dönem yönetimi, durum ve eklerle bireysel alan değerleri

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)**

```json theme={null}
{
  "formElementId": "electricity",
  "periodUnit": 3,
  "sequence": 1,
  "value": 15420.5,
  "recordedAt": "2024-03-31T23:59:59Z",
  "status": "COMPLETED"
}
```

**Tedarikçi değerlendirme (YILLIK)**

```json theme={null}
{
  "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ı
