Go backend (önizleme)
Şu an neler var
Bölüm başlığı “Şu an neler var”| Alan | Durum |
|---|---|
| Sağlık ve hazır olma kontrolleri | Hazır |
| Giriş, mevcut kullanıcı, kendi şifresini değiştirme | Hazır |
| Beş rolle kullanıcı yönetimi | Hazır |
| Laboratuvar ayarları (kurulum başına tek laboratuvar) | Hazır |
| Denekler, deneyler, aşamalar, gruplar ve katılımlar | Hazır |
| Hastalık modelleri, maddeler, müdahale planları ve uygulamalar | Hazır |
| On bir paradigmanın metrik tanımlarıyla paradigma kataloğu | Hazır |
| Ölçüm revizyonlarıyla ortamlar ve deney test protokolleri | Hazır |
| Testler, denemeler ve test yorumları | Hazır |
| Google Cloud Storage’a video yükleme | Hazır, gerçek depolama testi bekliyor |
| Video başına kalibrasyon | Hazır |
| Analiz çalıştırmaları ve worker protokolü | Hazır, görüntü işleme worker’ı henüz yok |
| Raporlar, CSV/JSON dışa aktarma ve grup karşılaştırmaları | Hazır |
| Yeni API üzerinde Vue paneli | Henüz yok |
Kurulum
Bölüm başlığı “Kurulum”Docker ve Docker Compose gerekir. Komutları new-backend branch’inde, reponun
kök dizininde çalıştırın:
docker compose up -d dbdocker compose --profile setup run --rm schemadocker compose --profile setup run --rm setupdocker compose up --build -d backendcurl --fail http://127.0.0.1:4000/api/readydb, PostgreSQL’i yeni bir volume ile başlatır. Eski kurulumun verisine dokunulmaz.schema, boş veritabanında tabloları oluşturur. Tekrar çalıştırılırsa reddeder ve hiçbir şey silmez.setup, laboratuvarı ve ilk yöneticiyi oluşturur; yöneticinin e-postasını ve üretilen şifreyi terminalinize yalnızca bir kez yazar. Tekrar çalıştırılırsa hiçbir şey oluşturmaz.backend, API’yi127.0.0.1:4000adresinde başlatır.
setup terminal olmadan çalışırsa (örneğin CI içinde) -credentials-file YOL
verilmedikçe başlamayı reddeder. Bu durumda şifre, yalnızca sahibinin
okuyabildiği yeni bir dosyaya yazılır. Şifre hiçbir zaman loglara yazılmaz.
Compose veritabanı yerine kendi PostgreSQL sunucunuzu kullanıyorsanız sürüm
PostgreSQL 18 veya üzeri olmalıdır. Şema, PostgreSQL ile birlikte gelen
btree_gist eklentisini etkinleştirdiği için schema komutunu çalıştıran
kullanıcının veritabanında nesne oluşturma izni olmalıdır.
Ayarlar
Bölüm başlığı “Ayarlar”Compose dosyasındaki değerler yalnızca geliştirme içindir. Gerçek bir kurulumda kendi değerlerinizi verin:
| Değişken | Varsayılan | Anlamı |
|---|---|---|
JWT_SECRET |
geliştirme değeri | Giriş token’larını imzalayan anahtar. En az 32 rastgele bayt kullanın. |
TOKEN_TTL |
12h |
Bir girişin geçerlilik süresi; 5 dakika ile 7 gün arası. |
BCRYPT_COST |
12 |
Şifre hash gücü; 10 ile 14 arası. |
ADMIN_EMAIL |
admin@misko.local |
setup ile oluşturulan ilk yöneticinin e-postası. |
LAB_NAME |
Misko Laboratory |
Laboratuvar adı. |
LAB_TIMEZONE |
UTC |
Laboratuvarın saat dilimi; Europe/Istanbul gibi bir IANA adı. |
Veritabanı ve zaman aşımı ayarları dahil tüm değişkenler backend README dosyasındadır.
Kullanım
Bölüm başlığı “Kullanım”curl -X POST http://127.0.0.1:4000/api/auth/login \ -H 'Content-Type: application/json' \ -d '{"email":"admin@misko.local","password":"SETUP_CIKTISINDAKI_SIFRE"}'Yanıtta bir token bulunur. Diğer tüm isteklerde bunu
Authorization: Bearer TOKEN başlığıyla gönderin. GET /api/auth/me
kullanıcınızı ve rolünüzün izinlerini döndürür. Üretilen şifreyi hemen
POST /api/auth/password (currentPassword, newPassword) ile değiştirin.
Yanıt yeni bir token içerir ve eski token’ların hepsi geçersiz olur.
Şifreler en az 8 karakter ve en fazla 72 bayt olmalıdır. ş veya ğ gibi İngilizce dışı harfler birden fazla bayt kaplar.
Roller
Bölüm başlığı “Roller”| Rol | Yapabilecekleri |
|---|---|
| SUPERADMIN, LAB_MANAGER | Kullanıcı ve laboratuvar ayarları yönetimi dahil her şey |
| RESEARCHER | Çalışma, denek, düzenek ve testleri yönetmek; her şeyi okumak |
| TECHNICIAN | Ağırlık kaydetmek ve test çalıştırmak; her şeyi okumak |
| VIEWER | Yalnızca okuma |
Rol değişikliği kullanıcının bir sonraki isteğinde geçerli olur. Kullanıcı silindiğinde oturumu anında kapanır.
Kullanıcı yönetimi
Bölüm başlığı “Kullanıcı yönetimi”Bu uç noktaları yalnızca SUPERADMIN ve LAB_MANAGER kullanabilir:
GET /api/users, kullanıcılarısearch,role,sort,order,pagevepageSizeile listeler.POST /api/users,email,name,roleve isteğe bağlıpasswordile kullanıcı oluşturur. Şifre verilmezse güçlü bir şifre üretilir ve bir kez döndürülür.PATCH /api/users/{id},nameveyaroledeğiştirir.POST /api/users/{id}/reset-password, yeni şifre belirler (ya da üretir) ve o kullanıcının tüm oturumlarını kapatır.DELETE /api/users/{id}, kullanıcıyı siler.
İki güvenlik kuralı her zaman geçerlidir. Kendi hesabınızı silemezsiniz; son SUPERADMIN veya LAB_MANAGER silinemez ya da daha düşük bir role alınamaz. Herkese açık kayıt yoktur.
Laboratuvar ayarları
Bölüm başlığı “Laboratuvar ayarları”Giriş yapmış her kullanıcı GET /api/lab ile okuyabilir. SUPERADMIN ve
LAB_MANAGER, PATCH /api/lab ile name, code ve timezone alanlarını
değiştirebilir. Boş code değeri kodu temizler. GET /api/meta herkese açıktır
ve giriş ekranı için laboratuvar adını döndürür.
Denekler
Bölüm başlığı “Denekler”Giriş yapmış her kullanıcı denekleri okuyabilir. SUPERADMIN, LAB_MANAGER ve RESEARCHER denekleri değiştirebilir.
POST /api/subjects,code,species(MOUSEveyaRAT),sex(FEMALE,MALEveyaUNKNOWN) ve isteğe bağlıstrain,birthDate(YYYY-AA-GG) venotesile denek oluşturur. Kodlar büyük/küçük harf farkı gözetmeden benzersizdir.GET /api/subjects, deneklerisearch,species,sex,sort,order,pagevepageSizeile listeler.PATCH /api/subjects/{id}, gönderdiğiniz alanları değiştirir. Boşstrain,birthDateveyanotesdeğeri alanı temizler.DELETE /api/subjects/{id}, hiçbir deneye katılmamış bir deneği siler.GET /api/subjects/{id}/enrollments, deneğin katıldığı tüm deneyleri gösterir.
Denek kendi başına bir kayıttır; aynı hayvan kopyalanmadan birden fazla deneye katılabilir.
Deneyler
Bölüm başlığı “Deneyler”Giriş yapmış her kullanıcı deneyleri okuyabilir. SUPERADMIN, LAB_MANAGER ve RESEARCHER deney tasarlayabilir ve denek katabilir.
- Deneyi
POST /api/experiments(code,title, isteğe bağlıdescriptionverequiresControl) ile oluşturun. Deney detayındakicontrolRequirementMet, kontrol grubu eklendiğinde true olur. - Ölçüm aşamalarını
POST /api/experiments/{id}/phases(name,position) ile ekleyin; örneğin 1. sırada Baseline, 2. sırada Post-treatment. - Grupları
POST /api/experiments/{id}/groups(name,CONTROLveyaTREATMENTdeğerlirole, isteğe bağlıtargetSize) ile ekleyin.GET /api/experiments/{id}/groupsher grubun hedefini ve şu an gruptaki denek sayısını gösterir. - Deneği
POST /api/experiments/{id}/enrollments(subjectId,enrolledAt, isteğe bağlıgroupId) ile deneye katın. Bir denek aynı deneye yalnızca bir kez katılabilir. - Deneği başka bir gruba
POST /api/experiments/{id}/enrollments/{enrollmentId}/assignments(groupId,effectiveFrom) ile taşıyın. Önceki grup dönemi o anda biter veGET /api/experiments/{id}/enrollments/{enrollmentId}ile görülen geçmişte kalır.
Aşamalar ve gruplar bilerek ayrıdır. Aşama deneğin ne zaman ölçüldüğünü, grup hangi kola ait olduğunu söyler. Sağlıklı baseline ölçümü yapılan, tedavi grubuna atanmış bir denek tedavi grubunda kalır.
Sistem şunları reddeder:
- başka bir deneye ait aşama, grup veya katılım kayıtları,
- başka bir dönemle çakışan, katılımdan önce başlayan ya da mevcut dönemden sonra başlamayan grup dönemleri,
- hâlâ ataması olan bir grubun ya da deneye katılmış bir deneğin silinmesi.
Deneyler ve katılımlar henüz silinemez; araştırma kayıtları korunur.
Müdahaleler
Bölüm başlığı “Müdahaleler”Hastalık modelleri ve maddeler ortak listelerdir. SUPERADMIN, LAB_MANAGER ve
RESEARCHER bunları POST /api/disease-models ve POST /api/substances
(name, isteğe bağlı description) ile yönetir.
- Planlar:
POST /api/experiments/{id}/intervention-plansbir grubun ne alması gerektiğini tanımlar (groupId,substanceId,amount,unit,route,schedule, isteğe bağlıphaseId). Plan, bir şeyin verildiğini asla kaydetmez. - Ağırlıklar: TECHNICIAN ve üstü roller vücut ağırlığını
POST /api/subjects/{id}/weights(grams,measuredAt) ile kaydeder. - Durumlar: TECHNICIAN ve üstü roller gözlemleri
POST /api/subjects/{id}/conditions(diseaseModelId,status,observedAt) ile kaydeder. İndüksiyon (INDUCED) ve doğrulama (CONFIRMEDveyaNOT_CONFIRMED) ayrı gözlemler olarak kaydedilir.GET /api/subjects/{id}/conditionsgeçmişi ve güncel durumu gösterir;GET /api/conditions?current=true&status=CONFIRMEDdenekleri güncel durumlarına göre bulur. - Uygulamalar: TECHNICIAN ve üstü roller gerçekten verileni
POST /api/experiments/{id}/enrollments/{enrollmentId}/administrations(substanceId,amount,unit,route,administeredAt, isteğe bağlıplanIdveweightMeasurementId) ile kaydeder. Kilogram başına dozlar (mg/kg,ug/kg,IU/kg) aynı hayvanın son 7 gün içindeki ağırlığını gerektirir ve yanıt mutlak dozu gösterir.GET /api/subjects/{id}/administrationsveGET /api/administrations,substanceId,experimentId,fromvetoile filtrelenir.
Miktarları "0.25" gibi ondalık metin olarak yazın. Kayıtlar, madde adı
değişse veya plan sonradan güncellense bile kaydedildikleri ad ve dozu korur.
Paradigma kataloğu
Bölüm başlığı “Paradigma kataloğu”Giriş yapmış her kullanıcı paradigma kataloğunu okuyabilir. Paradigmalar kodda tanımlıdır ve API üzerinden oluşturulamaz, değiştirilemez veya silinemez.
GET /api/paradigms, paradigmaları yayımlanmış sürümleriyle ve otomatik video analizinin kullanılabilir olup olmadığıyla (automatedAnalysis) listeler. On bir paradigma yayımlanmıştır:BARNES_MAZE,EPM,LIGHT_DARK,MWM,NOVEL_OBJECT,OPEN_FIELD,POLE,ROTAROD,THREE_CHAMBER,TREADMILLveY_MAZE. Hiçbiri için otomatik analiz henüz yoktur.GET /api/paradigms/{key}en son sürümü,GET /api/paradigms/{key}/versions/{version}ise tam olarak bir sürümü döndürür. Her sürüm; birim, izin verilen aralık ve varsayılan değerleriyle düzenek ve oturum parametrelerini, bölgelerini ve olaylarını, her metrik için de tanımı, formülü, girdileri ve veri eksik olduğunda ne olacağını listeler.
Bazı paradigmalar izlenen konumdan fazlasına ihtiyaç duyar:
calibratedolarak işaretlenen bölgeler (örneğin yükseltilmiş artı labirent kolları veya Barnes labirenti delikleri) her video için daire ya da çokgen olarak çizilir. Su labirenti platformu gibi diğer bölgeler düzenek parametrelerinden hesaplanır.inputEvents, izlenmek yerine puanlanan gözlemleri listeler: rotarod düşüşü, pole testi dönüşleri veya yeni nesne keşfi gibi. Puanlanmamış bir olay türü sıfır değil, eksik metrik üretir.
Sonuçlar her zaman hesaplandıkları paradigma sürümünü, metrik motoru sürümünü ve
sonuç şeması sürümünü belirtir. Hesaplanamayan bir metrik sıfır olarak değil,
nedeniyle birlikte eksik olarak raporlanır. Örneğin kaçışın olmadığı bir probe
denemesi EVENT_NOT_OBSERVED, üçten az kol girişi olan bir Y labirenti denemesi
INSUFFICIENT_ENTRIES bildirir. Yayımlanmış bir sürüm asla değişmez; değişen
bir tanım yeni bir sürüm olarak yayımlanır.
Ortamlar ve protokoller
Bölüm başlığı “Ortamlar ve protokoller”Ortam, tek bir paradigma için kurulmuş fiziksel bir düzenektir; örneğin belirli bir su tankı. Araştırmacılar, laboratuvar yöneticileri ve süper yöneticiler ortam ve protokol oluşturup güncelleyebilir; giriş yapmış her kullanıcı bunları okuyabilir.
POST /api/environmentsbir ortamı ilk revizyonuyla birlikte oluşturur. Paradigma sürümünün tüm düzenek ölçülerini verin; örneğinMWMiçin tank ve platform boyutları. İzin verilen aralık dışındaki değerler veya tank dışında kalan bir platform gibi tutarsız değerler reddedilir.- Düzenek değiştiğinde
POST /api/environments/{id}/revisionsile yeni bir revizyon ekleyin. Önceki revizyonlar asla değişmez ve silinemez. Ortamın adını ve notlarını yine de düzenleyebilirsiniz.
Protokol, bir deneyin deneklerini nasıl test ettiğini tanımlar. Tek bir deneye aittir ve birden fazla paradigmayı birleştirebilir; örneğin açık alan testinin ardından yükseltilmiş artı labirent.
POST /api/experiments/{id}/protocolsbir protokolü ilk sürümüyle birlikte oluşturur. Her adım; sırasını, paradigmayı ve sürümünü, o paradigma için kurulmuş bir ortam revizyonunu, deneme türünü, deneme sayısını, denemeler arasındaki bekleme süresini saniye olarak ve varsa oturum parametrelerini verir.- Adımları boşluk bırakmadan 1’den başlayarak numaralandırın. Başka bir paradigmanın ortamı, paradigmanın tanımlamadığı bir deneme türü ve aralık dışındaki oturum değerleri reddedilir. Vermediğiniz oturum parametreleri paradigmanın varsayılanlarını alır ve kaydedilen sürüm bunları gösterir.
- Bir protokolü değiştirmek için
POST /api/experiments/{id}/protocols/{protocolId}/versionsile yeni bir sürüm ekleyin. Kaydedilmiş sürümler asla değişmez; yeni bir ortam revizyonu, önceki bir revizyonu kullanan sürümü değiştirmez.
Testler, denemeler ve yorumlar
Bölüm başlığı “Testler, denemeler ve yorumlar”Test, katılımı olan bir deneğin bir protokol adımındaki tek oturumudur. Adım; paradigmayı, ortamı ve kaç deneme planlandığını belirler.
- Araştırmacılar, laboratuvar yöneticileri ve süper yöneticiler testleri
POST /api/experiments/{id}/testsile planlar: katılımı, isteğe bağlı olarak aşamayı, protokol sürümünü, adımı ve planlanan zamanı seçin. Denek ve o zamandaki grubu otomatik doldurulur. - Teknisyenler ve üstündeki roller testleri yürütür:
POST /api/tests/{id}/start, ardından her denemeyiPOST /api/tests/{id}/trialsile kaydedin ve sonundaPOST /api/tests/{id}/completeçağırın. Bir deneme tekrarlanırsa aynı tekrar numarasını yeniden kaydedin; sonraki deneme sayısını alır ve önceki kayıt korunur. - Tamamlanmamış bir test gerekçe yazılarak iptal edilebilir. Denek planlamadan sonra başka bir gruba geçtiyse test başlatılamaz; testi iptal edip yeniden planlayın.
Görüntüleyiciler dahil giriş yapmış herkes bir teste yorum yazabilir. Yalnızca kendi yorumlarınızı düzenleyebilirsiniz. Laboratuvar yöneticileri ve süper yöneticiler her yorumu silebilir. Her kullanıcı dakikada en fazla 20 yorum yazabilir veya düzenleyebilir.
Videolar
Bölüm başlığı “Videolar”Videolar özel bir Google Cloud Storage bucket’ında saklanır. Bir yönetici
GCS_BUCKET (ve workload identity kullanılıyorsa GCS_SIGNER_EMAIL) ayarlayana
kadar video uç noktaları media.storageNotConfigured koduyla 503 döner. Bucket,
CORS ve izin kurulumu için backend/README.md dosyasına bakın.
- Teknisyenler ve üstündeki roller
POST /api/tests/{id}/recordingsile yüklemeyi başlatır; dosya adını, türünü (MP4, MOV veya WebM), boyutunu ve CRC32C sağlamasını verir. Yanıt imzalı bir istek içerir; tarayıcı dosyayı bununla doğrudan depolamaya yükler. - Yükleme bitince aynı kişi (veya bir laboratuvar yöneticisi ya da süper yönetici)
POST /api/tests/{id}/recordings/{recordingId}/finalizeçağırır. Sunucu saklanan dosyayı kontrol eder. Eşleşmeyen dosya,CHECKSUM_MISMATCHgibi bir nedenleREJECTEDolarak işaretlenir. - Giriş yapmış herkes doğrulanmış bir video için
GET /api/tests/{id}/recordings/{recordingId}/read-urlile kısa ömürlü bir bağlantı alabilir. Oynatıcılar bu bağlantıda ileri geri sarabilir.
Kalibrasyon
Bölüm başlığı “Kalibrasyon”Bir videodan mesafe ve bölgelerde geçen süre hesaplanabilmesi için kamera piksellerinin santimetreye nasıl karşılık geldiği bilinmelidir.
- Video doğrulandıktan sonra bir teknisyen (veya üstündeki bir rol) düzeneğin
göründüğü bir kareyi açıp noktaları işaretler: en az 4 FIT noktası ve bunlardan
ayrı en az 3 CHECK noktası; her biri piksel konumu ve santimetre cinsinden gerçek
konumuyla. Noktaları
POST /api/tests/{id}/recordings/{recordingId}/calibrationsile gönderin. - FIT noktaları dönüşümü belirler, CHECK noktaları ise onu sınar. Bir CHECK noktası
paradigmanın izin verdiğinden (iz izleme paradigmalarında 2 cm) fazla saparsa
kalibrasyon
REJECTEDolarak saklanır. - Bir kalibrasyonu düzeltmek için
supersedesIdalanı en son kalibrasyonu gösteren yeni bir kalibrasyon gönderin. Kamera ve kare boyutu aynı kalmalıdır. Önceki kalibrasyonlar saklanır. GET /api/tests/{id}/recordings/{recordingId}/calibration-status, geçerli bir kalibrasyon olana kadarWAITING_FOR_CALIBRATION, sonraCALIBRATEDgösterir. Rotarod gibi video ölçümü olmayan paradigmalarNOT_REQUIREDgösterir.
Video analizi
Bölüm başlığı “Video analizi”İz takibi, API ile konuşan ayrı analiz worker’larında çalışır. Sabit kamerayla
kaydedilmiş, tek denekli açık alan videoları için ilk worker worker/
klasöründedir. Şimdiye kadar yalnızca sentetik videolarla test edilmiştir; elle
işaretlenmiş gerçek bir kayıtla doğrulanana kadar sonuçlarını araştırmada
kullanmayın.
-
Worker her karede hayvanı bulur, konumunu videonun kalibrasyonuyla santimetreye çevirir ve konumları (trajectory) ile yolu ve merkez bölgesini gösteren işaretli bir videoyu yükler.
-
Mişko her metriği ve olayı, paradigma kataloğunun tarif ettiği hesaplarla, yüklenen trajectory’den kendisi hesaplar. Worker kendi sayılarını gönderemez.
-
Çok fazla kare kaybolursa (açık alanda %10’dan fazla) veya takip güveni çok düşükse çalıştırma
QC_FAILEDnedeniyleFAILEDolur ve hiçbir şey yayınlanmaz. -
Çalıştırmak için
OPEN_FIELDsürüm 1 için bir worker kaydedin, sonraMISKO_WORKER_TOKENayarlıyken başlatın; örneğindocker compose --profile worker up -d worker. -
Bir laboratuvar yöneticisi
POST /api/analysis/workersile worker’ın adını, model sürümünü ve desteklediği paradigma sürümlerini vererek worker kaydeder. Yanıt worker token’ını yalnızca bir kez gösterir; bunu worker’ın gizli ayarlarında saklayın.POST /api/analysis/workers/{id}/disabletoken’ı iptal eder. -
Zamanlayıcıyı API’nin yanında
docker compose up --build -d backend jobsile başlatın. HerJOB_INTERVALsüresinde (varsayılan 10 saniye), doğrulanmış, gerekiyorsa geçerli kalibrasyonu olan ve paradigmasını destekleyen bir worker bulunan her video için bir çalıştırmayı kuyruğa ekler. -
Bir çalıştırma neyin analiz edildiğini tam olarak kaydeder: depolamadaki video sürümü, kesit, kalibrasyon, paradigma sürümü ve parametreler. Bir çalıştırmanın hiçbir bilgisi sonradan değişmez.
-
Bir videoyu yeniden analiz etmek için (örneğin yeni bir kalibrasyondan sonra veya yeni bir worker modeliyle) bir teknisyen (veya üstündeki bir rol)
POST /api/tests/{id}/recordings/{recordingId}/analysis-runsçağırır. Bu yeni bir çalıştırma oluşturur; önceki sonuçlar korunur. -
Giriş yapmış herkes çalıştırmaları
GET /api/tests/{id}/analysis-runsile listeleyebilir veGET /api/analysis-runs/{runId}ile açabilir; çalıştırmaSUCCEEDEDolduğunda metrikler ve olaylar da gelir.GET /api/analysis-runs/{runId}/video-pair, orijinal videoya ve o çalıştırmanın analiz edilmiş videosuna kısa ömürlü bağlantılar ile ikisini senkron oynatmak için gereken zaman kaymalarını döner. -
Yanıt vermeyi bırakan bir worker 5 dakika sonra çalıştırmayı kaybeder ve başka bir worker onu alabilir. Bir çalıştırma en fazla 3 kez denenir, sonra
FAILEDolur. Çalıştırmayı kaybetmiş bir worker’ın sonuçları reddedilir ve bir sonuç, API yüklenen her dosyayı depolamada kontrol ettikten sonra yayınlanır.
frontend/ içindeki Vue paneli iş akışını bu API üzerinden yürütür. Giriş yapın,
bir deney açın ve testlerinden birini seçin.
- Test ekranı kayıtları video durumu ve kalibrasyon durumuyla birlikte listeler; teknisyen (veya üstü bir rol) video yükleyebilir. Dosya tarayıcıdan doğrudan depolamaya gider; yükleme kaldığı yerden devam edebilir. Panel dosyanın sağlama değerini önce hesaplar, böylece API nesneyi depolamadan geri okuyup eşleşmeyeni reddeder. Bir kayıt ancak API bunu yaptıktan sonra doğrulanmış görünür.
- Testin analiz çalıştırmaları düğme olarak görünür. Ekran, sonuç yayınlamış en yeni çalıştırmayı açar; böylece sonradan başarısız olan bir deneme okunabilir sonucu gizlemez. Kuyruktaki veya çalışan bir iş bunu söyler, başarısız olan ise nedenini gösterir, örneğin kalite kontrol hatası. Bir kayıt birden çok kez analiz edilebilir ve her çalıştırma kendi videolarını saklar: daha eski bir çalıştırma açıldığında ekranda o çalıştırmanın videosu ve olayları görünür, öncekiler değil.
- Yayınlanmış bir çalıştırmada panel metrikleri ve olayları gösterir. Bir olaya tıklamak, örneğin “Merkezde 00:03-00:04”, yan panelde tam olarak o aralığı oynatır ve sonunda durur. Orijinal ve analiz edilmiş video yan yana, aynı zaman çizgisinde durur; ikisi de aynı anı gösterir. Olay zamanları klipten ölçülür ve klip videonun başından başlamak zorunda değildir; bu yüzden panel her iki oynatıcıyı da çalıştırmanın video çiftindeki kaydırma değerleriyle öteler.
- Her olaya klavyeyle erişilebilir: Tab olaylar arasında gezer, Enter seçili olanı oynatır.
- Okuma bağlantıları kısa ömürlüdür. Biri geçersizleşince panel API’den yeni bir video çifti ister ve okuyucuyu başa döndürmek yerine kaldığı yere geri koyar.
- İzleyici rolü sonuçları okur ama yükleme veya yeniden analiz denetimlerini görmez; API de bu işlemleri reddederdi.
Raporlar ve dışa aktarma
Bölüm başlığı “Raporlar ve dışa aktarma”Giriş yapmış herkes raporları okuyabilir. Raporlar yalnızca sonuçları okur; araştırma kayıtlarında hiçbir şeyi değiştirmez.
GET /api/reports/metrics, metrik sonuçlarını nereden geldikleriyle listeler: testin deneyi, deneği, grubu ve aşaması, test, ortam, video ve model ile metrik motoru sürümleriyle analiz çalıştırması. Deney, denek, grup, aşama, test, ortam, video, çalıştırma, hastalık modeli, madde, paradigma, metrik motoru sürümü veya metrik anahtarına göre filtreleyin ve satırlardapageilepageSizekullanarak gezinin.- Varsayılan olarak her test bir kez sayılır: yalnızca en yeni başarılı
çalıştırması kullanılır (metrik motoru sürümü başına). Eski çalıştırmaları da
görmek için
selection=allekleyin. - Worker’ın ölçemediği bir sonuç nedeniyle birlikte boş kalır. Hiçbir zaman sıfır olarak gösterilmez.
GET /api/reports/events, olayları ait oldukları denemeyle listeler.- Eşleşen tüm satırları CSV olarak,
format=jsonile de JSON olarak indirmek için iki rapordan birine/exportekleyin (/api/reports/metrics/export). Bir dışa aktarma en fazla 100.000 satır içerir; daha fazlası için filtreleri daraltın. GET /api/reports/metric-summary?experimentId=...&metricKey=...bir deneyin gruplarını karşılaştırır. Her hayvan, testlerinin ortalamasıyla bir kez sayılır; böylece tekrarlanan testler hayvan sayısını şişirmez. Sonuçlar farklı paradigma veya metrik motoru sürümlerinden geliyorsa API bunları karıştırmayı reddeder ve hangi sürümleri seçmeniz gerektiğini söyler.
Hatalar
Bölüm başlığı “Hatalar”Her hata auth.forbidden veya user.lastPrivileged gibi sabit bir code ve
İngilizce bir mesaj içerir. 401 durumu giriş yapmadığınızı ya da token’ınızın
artık geçerli olmadığını gösterir. 403 durumu rolünüzün bu işleme izin
vermediğini gösterir.