Skip to content

feature(ai): A03 & A04 — Zaman/Varlık Bazlı Veri Ayrımı, Sayısal Model Eğitimi ve Kalıcı İş Kuyruğu - #47

Merged
Firatasi merged 1 commit into
developfrom
feature/a03-a04-splits-numeric-training
Oct 24, 2026
Merged

Firatasi merged 1 commit into
developfrom
feature/a03-a04-splits-numeric-training

Conversation

@Firatasi

Copy link
Copy Markdown
Owner

📌 Özet

Bu PR, AI katmanında gelecekten veri sızıntısını (data leakage) önleyen zaman ve varlık ailesi tabanlı panel bölme yapısını (A03) ve güvenli JSON model serileştirmesi (ridge-json-v1), içerik adresli ArtifactStore ile PostgreSQL SKIP LOCKED / lease tabanlı eğitim iş kuyruğunu (A04) devreye alır.

🛠️ Yapılan Değişiklikler

  • Etiketleme ve Sızıntı Korumalı Veri Ayrımı (app/datasets/splits.py, build_numeric.py - A03):
    • Tam t + horizon gözlemi olmadığında ileri doldurma (forward-fill) yapmadan örneği dışlayan forward_label (log(P(t+h)/P(t))) yazıldı.
    • Global UTC sınırlarıyla (validation_start < test_start < test_end) çalışan split_panel eklendi; hedef aralığı (label_end) sonraki kesime taşan satırlar purged kümesine ayrıldı.
    • Holdout varlık aileleri (unseen_families) eğitim ve doğrulama aşamalarından tamamen izole edilerek yalnızca unseen_test kümesine yönlendirildi.
  • Sayısal Model Eğitimi ve Güvenli Serileştirme (app/training/numeric.py, run_numeric.py - A04):
    • StandardScaler ve Ridge pipeline'ı yalnızca train kümesi üzerinde fit edildi; validation kümesi sadece değerlendirme (validationMAE vs zeroReturnBaselineMAE) için kullanıldı.
    • Güvenlik riski taşıyan pickle yerine mean, scale, coef, intercept, volatilityEstimate, domainMin/domainMax ve featureSchemaHash taşıyan deterministik ridge-json-v1 formatı oluşturuldu.
  • İçerik Adresli Artifact Deposu (app/infrastructure/artifacts.py):
    • sha256 özet doğrulamalı, tempfile + os.fsync + os.replace ile atomik yazan, symlink/path traversal engelli ve 32 MiB okuma sınırlı ArtifactStore eklendi.
  • Veritabanı Şeması ve Kalıcı İş Kuyruğu (migrations/001_model_db.sql, app/infrastructure/jobs.py):
    • model_db üzerinde training_runs, idempotency_records, outbox, inbox, dataset_manifests, dataset_splits, model_versions, model_bundles, model_aliases, evaluation_results, promotion_audit ve inference_logs tabloları oluşturuldu.
    • pg_advisory_xact_lock destekli idempotent enqueue, FOR UPDATE SKIP LOCKED + worker_token fencing ile çalışan claim, heartbeat (LEASE_LOST korumalı) ve cancel_requested duyarlı finish akışı yazıldı.

🧪 Test ve Doğrulama Kanıtları

  • .\.venv\Scripts\python.exe -m pytest tests -q -> Tüm split, purge, unseen family, scaler leakage, JSON model reload ve job yaşam döngüsü testleri başarıyla geçti.
  • Bölüm sınırından (validation_start / test_start) hemen önceki uzun ufuklu örneklerin purged listesine düştüğü ve unseen_families örneklerinin train scaler parametrelerini etkilemediği doğrulandı.
  • Test kümesi özellik değerleri 1000 kat büyütüldüğünde train üzerinde fit edilen mean ve scale değerlerinin sabit kaldığı kanıtlandı.
  • Eğitilen ridge-json-v1 modelinin yeniden yüklendiğinde sklearn pipeline ile aynı tahmini ürettiği, bozuk hash veya yanlış özellik sırasında reddedildiği teyit edildi.

⚠️ Doğrulama Sınırı

Bu PR çevrimdışı veri bölme, sayısal baseline eğitimi, artifact saklama ve iş kuyruğu altyapısını kapsar. Canlı model yükleme (serving registry loader), tahmin önbelleği, şablon/prompt açıklamaları ve Strategy servisiyle uçtan uca entegrasyon bir sonraki görevde (A05) ele alınacaktır.

@Firatasi Firatasi left a comment

Copy link
Copy Markdown
Owner Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🔍 Code Review Değerlendirmesi: ONAYLANDI (LGTM)

Zaman/varlık ayrımı (A03), sayısal model eğitimi ve kalıcı iş kuyruğu (A04) incelendi:

  • Veri Sızıntısı (Leakage) Önlemleri: forward_label içinde eksik gözlemlerde forward-fill yapılmaması, split_panel içinde label_end taşmalarının purged olarak ayrılması ve unseen_families izolasyonu finansal ML standartlarına tam uyumlu.
  • Güvenli Model Serileştirme ve Depolama: pickle kullanılmadan ridge-json-v1 formatında scaler (mean, scale) ve model katsayılarının birlikte saklanması, ArtifactStore içindeki atomik yazım (fsync + os.replace) ve SHA-256 doğrulaması güvenliği garanti altına almış.
  • Dağıtık İş Kuyruğu: FOR UPDATE SKIP LOCKED, worker_token fencing ve cancel_requested kontrolleri yarış durumlarını kapatmış.

Testler ve kabul kriterleri eksiksiz sağlandığı için develop branch'ine birleştirilmeye uygundur.

@github-actions

Copy link
Copy Markdown

🛡️ Otomatik Kod ve Güvenlik İncelemesi

⚠️ Gemini API kota/sunucu hatası nedeniyle otomatik güvenlik incelemesi tamamlanamadı. Lütfen workflow'u yeniden tetikleyin.

🤖 Tetiklenen commit: d3ac93e

@github-actions github-actions Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🛡️ Otomatik Kod ve Güvenlik İncelemesi

⚠️ Gemini API kota/sunucu hatası nedeniyle otomatik güvenlik incelemesi tamamlanamadı. Lütfen workflow'u yeniden tetikleyin.

🤖 Tetiklenen commit: d3ac93e

@Firatasi
Firatasi merged commit 9a9082e into develop Oct 24, 2026
3 of 5 checks passed
@github-actions

Copy link
Copy Markdown

🛡️ Otomatik Kod ve Güvenlik İncelemesi

⚠️ Gemini API kota/sunucu hatası nedeniyle otomatik güvenlik incelemesi tamamlanamadı. Lütfen workflow'u yeniden tetikleyin.

🤖 Tetiklenen commit: 9a9082e

@github-actions github-actions Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🛡️ Otomatik Kod ve Güvenlik İncelemesi

⚠️ Gemini API kota/sunucu hatası nedeniyle otomatik güvenlik incelemesi tamamlanamadı. Lütfen workflow'u yeniden tetikleyin.

🤖 Tetiklenen commit: 9a9082e

@github-actions

Copy link
Copy Markdown

🛡️ Otomatik Kod ve Güvenlik İncelemesi

⚠️ Gemini API kota/sunucu hatası nedeniyle otomatik güvenlik incelemesi tamamlanamadı. Lütfen workflow'u yeniden tetikleyin.

🤖 Tetiklenen commit: 9a9082e

@github-actions github-actions Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🛡️ Otomatik Kod ve Güvenlik İncelemesi

⚠️ Gemini API kota/sunucu hatası nedeniyle otomatik güvenlik incelemesi tamamlanamadı. Lütfen workflow'u yeniden tetikleyin.

🤖 Tetiklenen commit: 9a9082e

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant