Form Mimarisi
Formlar birbirine bağlı beş bileşenden oluşur:- Form = Meta veriler, görünürlük ayarları ve dağıtım yapılandırması içeren konteyner
- FormElement = Form içindeki bireysel alanlar ve UI bileşenleri
- FormSite = Formları belirli site ve yıllara bağlayan dağıtım bağlantıları
- FormSubmission = Kullanıcı gönderim oturumu konteyneri
- FormElementSubmission = Bireysel alan değerleri ve veri depolama
Form Ayarları
Her form,updateForm çağrısında doğrulanan bir settings objesi taşır. Alanların tamamı opsiyoneldir; göndermediğiniz değerler organizasyon varsayılanına veya formdaki mevcut değere geri döner.
Halka açık gönderim seçenekleri
allowPublicSubmissionEdits:trueolduğunda halka açık katılımcılar mevcut gönderimlerini (veya taslaklarını) tekrar açıp düzenleyebilir; göndermezseniz platformun varsayılan düzenleme politikası uygulanır.allowPublicSubmissionSupportingDocuments: Halka açık gönderimlerde destekleyici doküman çekmecesini açar ve kullanıcıların kanıt dosyası yüklemesine izin verir. Tanımsız bırakmak varsayılan belge politikasını korur.
İş akışı geçersiz kılma
workflowOverride, tek bir type anahtarına sahip opsiyonel bir objedir. Desteklenen değerler DIRECT_APPROVAL ve REQUIRE_APPROVAL (aşağıda açıklanan iş akışlarıyla aynı). Nesneyi göndermemek veya null iletmek formun organizasyon düzeyindeki varsayılan iş akışını kullanmasını sağlar.
Planlama ve hatırlatmalar
Opsiyonelschedules objesi, sürecin iki fazı için son tarihleri ve hatırlatmaları zorlamanıza izin verir:
dataEntry: Katılımcıların veri girişi son tarihleriapproval: Onaylayıcıların inceleme son tarihleri
period: Şimdilik yalnızca"MONTHLY"değerine izin verilir; bu nedenle şemaz.literal("MONTHLY")kullanır.dueDay: UTC ayının 1–28 arasındaki günü.reminders: Opsiyonel{ enabled: boolean; offsets: number[] }bloğu.offsetsdizisi, son tarihten kaç gün önce hatırlatma gönderileceğini belirtir ve yalnızca{1, 3, 7}değerlerini kabul eder. Hatalı değerler şema tarafından reddedilir. Objeyi tamamen atlamak hatırlatmaları kapatır ancak son tarihi korur.
apps/azalt/src/server/api/routers/form/methods.ts) yer alan parseFormSettings ve getReminderConfig yardımcıları, saklanan JSON’u normalize eder ve hatalı dueDay/offset değerlerini işleme alınmadan önce eler.
Form Türleri ve Dağıtım
İç formlar (özel)- Ekip üyeleri verileri doğrudan platformda girer
- CSV toplu içe/dışa aktarma yetenekleri
- Otomatik veri gönderimi için API entegrasyonu
- Silinmemiş durumdayken her FormSite için tek gönderim
- Otomatik kaydetme UX’i görünüme göre değişebilir
- Her FormSite için benzersiz bir public URL
- Site/yıl başına birden çok gönderim
- Alan bazında onay (iş akışına göre)
- Marka başlığı (logo/renk) meta verileriyle
Akıllı Form Özellikleri
Koşullu Mantık: Kullanıcı yanıtlarına dayalı dinamik form davranışı- YEARLY: Tek periyot birimi (1)
- MONTHLY: 12 periyot birimi (1–12)
- QUARTERLY: 4 periyot birimi (1–4)
- TIMESTAMP: Zaman damgalı giriş;
recordedAtzorunlu, periyot birimi ay’dan türetilir
- total: Zaman içinde toplanabilen toplam değerler (ör. emisyon)
- snapshot: Zaman noktasındaki değerler (ör. faktör), dağıtılmaz
Gelişmiş Form Oluşturucu
Görsel editör: Form yapısı için sürükle-bırak arayüzü- Oluştururken gerçek zamanlı önizleme
- Element yeniden sıralama ve iç içe geçirme
- Formlar arasında copy/paste
- CSV’den oluşturma veya mevcut formu kopyalama
- CSV içe aktarma (toplu)
- Kopyala & özelleştir
- Manuel oluşturucu
- Sürükle-bırak koşul oluşturma
- Birden fazla koşul türü (eşittir, içerir, büyüktür, vb.)
- AND/OR mantığı ile iç içe koşul grupları
- Gerçek zamanlı doğrulama ve önizleme
Veri Toplama İş Akışı
1. Form Tasarımı: Elementler ve mantıkla form yapısı oluşturun 2. Dağıtım: Belirli site ve yıllara atayın- Doğrudan platform girişi
- Doğrulama ile CSV içe aktarma
- API entegrasyonu
- Halka açık form gönderimleri (açıksa)
- Gerekli alan zorunluluğu
- Veri türü ve format doğrulaması
- Çapraz alan doğrulama kuralları
- Birim uyumluluğu kontrolleri
- CSV/XLSX dışa aktarma
- API uç noktaları
- Dashboard entegrasyonu
- Özet istatistikler
İş Akışı ve Onaylar
Formlar organizasyonun varsayılan iş akışını devralır; form bazında ayarlarla (workflowOverride) değiştirilebilir:- DIRECT_APPROVAL: Yeni değerler APPROVED olarak kaydedilir
- REQUIRE_APPROVAL: Yeni değerler COMPLETED olarak kaydedilir ve onay bekler
REQUIRE_APPROVAL modunda gönderim arayüzünde şu ek kontroller yer alır:
- Satır içi onay kontrolleri: Her dönem satırı için Anında Onayla / Reddet / Geri Al düğmeleri ve canlı durum rozetleri bulunur. Reddedilen değerler, kullanıcı yeni veri girdiğinde otomatik olarak tekrar COMPLETED durumuna döner.
- Toplu işlemler: Aylık veya çeyreklik NUMBER / SINGLE_CHOICE / MULTIPLE_CHOICE / LONG_TEXT / SHORT_TEXT alanlarında tüm dolu dönemleri tek tıkla onaylayıp reddetmek mümkündür. ACTIVITY alanları da aynı dönem içindeki tüm satırlar için toplu onaya devam eder.
- Durum eşitlemesi: Durum değişiklikleri kullanıcı arayüzünde anında görünür ve raporlara gecikmesiz aktarılır.
DIRECT_APPROVAL modundaysa bu düğmeler gizlenir, yeni kayıtlar otomatik olarak APPROVED durumuna alınır.
Destekleyici Dokümanlar
Her element satırından açılabilen bir destekleyici doküman çekmecesi vardır:- Özel gönderimler: Dosyalar doğrudan ilgili FormElementSubmission kaydına eklenir. Yetkili kullanıcılar yeni dosya yükleyebilir, var olanları indirebilir ve silebilir.
- Halka açık gönderimler: Çekmece açıldığında, oturum açmadan dosya yükleyebilmek için taslak bir gönderim oluşturulur veya mevcut taslak kullanılır. Çekmece daha önce yüklenen dosyaları listeler; silme işlemleri yalnızca yetkili iç ekip tarafından yapılır.
- Sayaçlar ve göstergeler: Ataş simgesi, bağlı dosya sayısını rozet şeklinde gösterir; yükleme ve silme işlemleri anında yenilenir.
Geliştirici Modu
Geliştirici modu açıkken gönderim ekranında cURL kopyala eylemi görünür. Bu buton, ilgili element kimliği, site, yıl, periyot birimi ve mevcut değeri içeren çalıştırmaya hazır bircurl komutunu panoya kopyalar. Böylece ekipler REST entegrasyonlarını hızlıca başlatabilir veya manuel payload hazırlamadan test edebilir.
Görev İlerlemesi Takibi
Kullanıcılar veri girişi yaparken arayüz iyimser (optimistic) ilerleme metrikleri üretir:- Veri girişi ilerlemesi: İçinde bulunulan aya kadar olan doldurulmuş/doldurulması gereken alan sayısını hesaplar; hatırlatma günlerine göre geciken ayları vurgular.
- Onay ilerlemesi: Onay gerektiren formlarda, sıradaki onaylanması gereken değerlerin kalan/toplam sayısı ve gecikmedeki dönemler gösterilir.
Halka Açık Form Ayarları
allowPublicSubmissionEditsallowPublicSubmissionSupportingDocuments
Notlar
- FormElement anahtarları bir form içinde benzersizdir
- ACTIVITY elementleri TIMESTAMP periyodunu kullanamaz
- Özel formlarda her FormSite için tek (silinmemiş) FormSubmission bulunur
Gerçek Dünya Örnekleri
Enerji Takip Formu:- Aylık elektrik tüketimi (kWh birimi ile NUMBER)
- Enerji kaynağı seçimi (SINGLE_CHOICE: Şebeke/Güneş/Rüzgar)
- Koşullu yenilenebilir detayları (sadece yenilenebilir seçilirse gösterilir)
- Destekleyici dokümantasyon yüklemesi (FILE_UPLOAD)
- Çeyreklik atık akışları (birden fazla NUMBER alanı ile GROUP)
- Atık işleme yöntemi (MULTIPLE_CHOICE)
- Yönlendirme oranı hesaplaması (özel formülle ACTIVITY)
- Site-özel imha prosedürleri (LONG_TEXT)
- Şirket bilgileri (SHORT_TEXT alanları)
- Kapsam 1, 2, 3 emisyonları (tCO2e birimleri ile NUMBER)
- Aktivite tabanlı hesaplamalar (karmaşık emisyonlar için ACTIVITY)
- Aylık veri toplama (MONTHLY periyot ayarı)
Operasyonel Faydalar
- Tutarlılık: Tüm site ve zaman periyotları boyunca aynı form yapısı
- Verimlilik: Otomatik kaydetme, toplu işlemler ve şablon yeniden kullanımı
- Uyumluluk: Yerleşik doğrulama ve denetim izleri
- Ölçeklenebilirlik: Yüzlerce site ve binlerce gönderimi işleyin
- Esneklik: Geçmiş verileri kaybetmeden formları uyarlayın

