Hızlı Başlangıç
- Yeni ActivityDefinition oluşturun (Özelleştirme → Activity Definitions → New)
- Girişleri tanımlayın (manuel veya Smart CSV ile)
- Hesaplama kodunu yazın (
{ value, metadata }döndüren async fonksiyon) - UI’yi oluşturun (
ActivityUI→onAddActivity(values)çağırır) - Test bağlamı ile önizleyin → Kaydedin
Neleri İçerir?
- Giriş şeması: UI’nin toplaması gereken tipli, zorunlu/opsiyonel alanlar
- Hesaplama kodu: sayısal bir değer ve meta veriyi üreten async JS fonksiyonu
- UI kodu: kullanıcıların değer girdiği React bileşeni
Giriş Şeması
Aşağıdaki sade şema uygulama genelinde kullanılır (doğrulama, UI oluşturma, CSV tahmini vb.):"number" | "string". Her girişte name, type, required ve opsiyonel example bulunur.
Girdi Adlandırma Rehberi
- camelCase kullanın (ör.:
fuelType,electricityKwh). - Boşluk/özel karakterlerden kaçının. Smart CSV başlıkları otomatik olarak camelCase’e temizler.
- İsimleri stabil tutun; dışa aktarımdaki sütunlar bu isimlerle gelir.
exampledeğerleri tespiti ve önizlemeyi iyileştirir.
Hesaplama Kodu
Hesaplama, tam bir fonksiyon deklarasyonu olarak kaydedilir ve mutlaka{ value, metadata } döndürür.
value ve sayısal meta verideki NaN/Infinity değerlerini 0’a çevirir. Giriş doğrulama hatalarında anlaşılır Error mesajları fırlatın (UI bunları kullanıcıya gösterir).
UI Bileşeni
UI, tek prop alanActivityUI adlı bir React bileşenidir: onAddActivity(values). Kullanıcı gönderdiğinde bu fonksiyon çağrılır.
- Bir giriş, bilinen bir dataset’ten seçimi ifade ediyorsa
DatasetItemSelectorkullanın (hesaplama kodundaki dataset adıyla aynı olmalıdır). - UI ve hesaplama kodunu taslak/iyileştirme için AI yardımcısı mevcuttur; kodu her zaman manuel düzenleyebilirsiniz.
UI Kod Sözleşmesi
- Snippet içinde
function ActivityUI({ onAddActivity }) { ... }tanımlayın. - Tıklama ile gönderin:
onClick={handleAddActivity}; varsayılan form submit akışını kullanmayın. - İçe aktarma yok; kapsamda sunulan bileşenleri kullanın (Mantine ve
DatasetItemSelector). - Canlı çalışma zamanı için bileşeni bağımsız tutun.
Akıllı CSV Girdi Tespiti
Yeni bir tanım oluştururken CSV örneğinden girişleri hızlıca çıkartabilirsiniz:- Yeni Activity Definition sayfasında “Smart” sekmesine bir CSV dosyası yükleyin.
- Sistem başlık ve örnek satırlardan alan adlarını/tiplerini ve örnek değerleri çıkarır.
- Üretilen “AI notları” UI oluşturmayı besleyebilir. Sonrasında Manuel sekmeye geçip düzenleyebilirsiniz.
name, type, required ve opsiyonel example alanları desteklenir.
Önizleme ve Test Bağlamı
Hesaplama ve UI sekmelerinde gerçek verilerle önizleme yapabilirsiniz:- Hesaplama önizlemesi, dataset/KPI/site erişimini güvenli sunucu API’leri üzerinden kullanır.
- Test bağlamını ayarlayın:
year,period(YEARLY/QUARTERLY/MONTHLY),periodUnit,siteId. - Hesaplamada yapılan dataset/KPI/site çağrılarında
awaitkullanılmalıdır.
Genel/Özel Tanımlar
- Özel (varsayılan): yalnızca organizasyonunuza görünür.
- Genel (isCommon): tüm organizasyonlara açık. Genel tanım oluşturmak için ADMIN rolü gerekir.
Hesaplamada Kullanılabilen Yardımcılar
$datasets:getItem,getDataset,getCoefficient,getCoefficients$kpis:getIndicator,getIndicatorById,getAllIndicators,getIndicatorsByTag,getIndicatorVariables$sites:getSite,getSiteByName,getAllSites,getChildSites,getSitesByCity,getSitesByTag,getTotalFloorArea,getTotalEmployees$year,$period,$periodUnit,$siteId
Form Entegrasyonu
- ACTIVITY form elementi ekleyip bir ActivityDefinition ile ilişkilendirin.
- Elementin
keydeğeri, bu tanım için aktivite ekleme/ithal/yeniden hesaplama işlemlerinde kullanılır. - UI kodu inline render edilir ve
onAddActivity(values)çağırarak hesaplama sonrası yeni bir Activity oluşturur.
- Onay gerektiren iş akışında, ilgili periyottaki gönderimler
COMPLETEDolur; aksi halde kayıtlar anındaAPPROVEDdurumundadır.
Ne Zaman Yeniden Hesaplamalı?
- Hesaplama mantığını güncelledikten sonra mevcut aktiviteleri hizalamak için toplu yeniden hesaplama (
activities.recalculateActivities) kullanın (site/yıl/periyot filtreleri ile). - Hesaplamada kullanılan dataset’ler değiştiyse ilgili periyotlar için yeniden hesaplayın.
İyi Uygulamalar
- Girişleri erken doğrulayın ve anlaşılır hata mesajları fırlatın.
- Her zaman
{ value: number, metadata: Record<string, any> }dönün. - Dataset adlarını UI ve hesaplama kodunda tutarlı kullanın.
- Mümkünse meta veride sayısal değerleri tercih edin (grafik/filtrelerde kolaylık sağlar).
- Örnek değerler (
example) UI/CSV tespitini ve ön izlemeyi iyileştirir.
Operasyonel Notlar
Tutarlılık: Aynı hesaplama mantığı tüm kullanımlarda aynı sonuçları sağlar Verimlilik: Hesaplama mantığını yeniden yazmak yerine yeniden kullanın Kalite: Anlaşılır doğrulama ve meta verilerle ölçülebilirlik Uyumluluk: Standart hesaplama yöntemlerini uygulayın Şeffaflık: Hesaplama fonksiyonu ve metadata, varsayımları görünür kılarSorun Giderme
- “Function parse failed” → Tam
async function calculate(inputValues) { ... }kaydettiğinizden emin olun. - “ dönmeli” →
{ value: number, metadata: object }döndürün. - “Eksik dataset öğesi” → Yedek kullanın:
const ef = (await $datasets.getCoefficient(...)) ?? 0. - NaN/Infinity → Sayısal girdileri doğrulayın; sunucu 0’a normalleştirir fakat kök nedeni düzeltin.
- Erişim hatası → Site erişimi/filtreleri kontrol edin.
Performans İpuçları
- Çoklu katsayım için
$datasets.getCoefficients(dataset, $year)ile tek seferde alın ve tekrar kullanın. - Sık döngülerde tekrar tekrar
awaitkullanmaktan kaçının. - Metadata’yı kısa tutun; yalnız gerektiğinde detaylandırın.
Metadata Kuralları
- Birimler ve kaynakları ekleyin (ör.:
emissionFactorKgCO2ePerKWh,factorSource: "EPA"). - Sayısal alanları sayısal tutun; metinleri etiket/kimlik için kullanın.

