Yaşam Döngüsü
- ActivityDefinition ile bağlantılı form elementi seçilir
- UI üzerinden girişler toplanır
- Sunucuda
calculatefonksiyonu çalıştırılır - Sonuç Activity olarak kaydedilir ve FormElementSubmission ile ilişkilendirilir
- Görüntüleme, dışa aktarma veya yeniden hesaplama yapılır
Veri Modeli
Bir Activity şu alanları içerir:definitionId: kullanılan ActivityDefinition kimliğiinput: gönderilen giriş değerleri (JSON)value: hesaplama sonucu sayısal değermetadata: hesaplamaya dair detaylar (JSON)- form submission, form elementi, site, yıl, periyot bağlantıları
Aktivitelerle Çalışma
Aktiviteler Activities router üzerinden yönetilir (TRPC prosedürleri ve eşleşen REST uçları).-
activities.addActivity- Girdi:
{ formId, key, siteId, year, periodUnit, input } formId + keyile elementi bulur, bağlı ActivityDefinition’ı kullanır, hesaplar ve kaydeder.
- Girdi:
-
activities.getActivities- Girdi:
{ formId, key, siteIds?, years?, periodUnits? } - Elemandaki aktiviteleri döndürür;
input/metadataparse edilir, bağlamsal alanlar (siteId,siteName,year,periodUnit) eklenir.
- Girdi:
-
activities.importActivities- Toplu içe aktarma; tüm satırların aynı ActivityDefinition’a bağlı elementleri hedeflediğini doğrular; satır bazlı hesaplama ve hata raporlar.
-
activities.exportActivities- CSV/XLSX dışa aktarım; sabit sütun sırası: bağlam alanları, düzleştirilmiş
input_*, düzleştirilmişmetadata_*, vevalue.
- CSV/XLSX dışa aktarım; sabit sütun sırası: bağlam alanları, düzleştirilmiş
-
activities.removeActivity- Aktivite ve bağlı FormElementSubmission kayıtlarını siler; periyot durumunu iş akışına göre ayarlar.
-
activities.recalculateActivity/activities.recalculateActivities- Tekil veya filtrelenmiş bir grup aktiviteyi, güncel ActivityDefinition
calcCodeile yeniden hesaplar.
- Tekil veya filtrelenmiş bir grup aktiviteyi, güncel ActivityDefinition
Dışa Aktarım Formatı
Sütunlar şu sırayla üretilir:activityId,site,year,periodUnit,value- ActivityDefinition
inputslistesindeki her giriş (adlarıyla eşleşen sütunlar) - Her metadata anahtarı için
metadata_*sütunları
metadata içinde döndürülmelidir.
Örnek sütunlar:
- Bağlam:
activityId,site,year,periodUnit,value - Girdiler:
electricityKwh,gridRegion, … (tanımdaki girişler) - Metadata:
metadata_factor,metadata_year, … (düzleştirilmiş anahtarlar)
İçe Aktarım Kuralları ve Hatalar
- Tüm satırlar, aynı ActivityDefinition’a bağlı elementleri hedeflemelidir (anahtar üzerinden eşleşir).
- Site erişimi satır bazında doğrulanır.
- Hatalar satır numarası ve bağlam (key/site/yıl/periyot) ile birlikte kullanıcı dostu mesajla döner; örn.:
Satır 3 (energy - siteA 2024 Period 1): electricityKwh sıfırdan büyük eşit olmalıdır.
Yeniden Hesaplama
- Yeniden hesaplama
- güncel ActivityDefinition
calcCode, - kayıtlı
input, - güncel bağlam (site/yıl/periyot) ve dataset’leri kullanır.
- güncel ActivityDefinition
- NaN/Infinity değerleri hem
valuehem de sayısalmetadataalanlarında0’a normalize edilir.
UI & Spreadsheet
- Aktivite UI’si ActivityDefinition’ın
uiCode’una göre dinamik render edilir.onAddActivity(values)çağrısıaddActivity’yi tetikler. - Zengin tablo görünümü; site/yıl/periyot filtreleri, tanımda yer alan “standart” giriş sütunlarını vurgulama, ekstra giriş ve meta sütunlarını gösterme desteği içerir.
İş Akışı & Durum
- Form veya organizasyon iş akışı onay gerektiriyorsa ilgili periyottaki gönderimler
COMPLETEDolur. - Aksi durumda gönderimler anında
APPROVEDolur.
Hata Yönetimi & Kalite
- Hesaplama hatalarında açık ve anlaşılır mesajlar fırlatın; UI bunları kullanıcıya gösterir.
- NaN/Infinity değerleri
valueve sayısal meta veride0’a normalize edilir. - Girdi alanlarını sade ve anlamlı seçin;
exampledeğerleri CSV tespiti ve UI ipuçlarını iyileştirir.
Güvenlik
- Tüm işlemlerde site erişim kuralları uygulanır.
$datasets/$kpis/$sitesyardımcıları, organizasyon bağlamına göre RLS ile sınırlandırılır.
Bkz.
- ActivityDefinition (girdi/UI/hesaplama ve önizleme)
- Activity Calculation Variables (bağlam değişkenleri ve örnekler)
- Dataset Access Examples (uçtan uca kullanım örnekleri)
- API Örnekleri
YOUR_TOKEN ve kimlikleri değiştirin):
Aktivite listeleme
Sorun Giderme
- Ekle/ithal işlemi kullanıcı hatasıyla başarısız → Hesaplama
Error("...")fırlatmış olabilir; girdi veya mantığı mesaj doğrultusunda düzeltin. - İthalatta çoklu satır hatası → Hata detaylarındaki satır indeksini ve bağlamı kullanarak veriyi düzeltin.
- Yeniden hesaplama sıfırlar üretiyor → İlgili yıl için dataset değerlerini/anahtarlarını kontrol edin; yedek kullanın.
- Dışa aktarımdan sütun eksik → ActivityDefinition
inputsşemasında alanın mevcut olduğundan emin olun.
Performans İpuçları
- Gerekliyse tek seferde
getCoefficientsile alın ve tekrar kullanın. - Aktivite başına metadata’yı küçük tutun; dışa aktarım hızlanır.
Metadata Kuralları
- Açık anahtarlar ve birimleri tercih edin (ör.:
efKgCO2ePerKWh). - Analizi kolaylaştırmak için uygun olduğunda
year,periodveyasiteIdekleyin.

