EgeSüt ERP
130+ hayvanlık süt çiftliği için offline-first web tabanlı yönetim sistemi.
Live: https://meliksahtokur.github.io/egesut-erp1/
Backend: Supabase (PostgreSQL)
Repo: github.com/Meliksahtokur/egesut-erp1
Teknik Stack
| Katman | Teknoloji |
|---|
| Frontend | Vanilla JS, tek index.html, framework yok |
| Backend | Supabase (PostgreSQL + RPC) |
| Offline Cache | IndexedDB (egesut_v9) |
| Deploy | GitHub Pages (her push otomatik) |
| DB Migration | GitHub Actions → Supabase CLI |
Modüller ve Durum
| Modül | Durum | Açıklama |
|---|
| Sürü | ✅ Tamamlandı | Hayvan kartı, grup/padok, 🐣 Doğurdu chip (#66), kızgınlık bar, search+filter |
| Görev | ✅ Tamamlandı | Otomatik üretim, cascade/orphan zincir-guard, hayvan çıkışında iptal, ertelenmiş commit |
| Stok | ✅ Tamamlandı | İlaç katalog + ledger (immutable), kritik eşik, atomik RPC |
| Üreme | ✅ Tamamlandı | Tohumlama → gebelik → doğum, per-cycle state machine, genç anne, polish devam ediyor |
| Klinik / Vaka | ✅ Tamamlandı | Tedavi seans (BUG-059) + şablon, Klinisyen Monitörü (Faz 5), undo, atomik RPC'ler |
| Aşı | ✅ Tamamlandı | İçerik-odaklı yönetim (vaccines + hastalıklar + protocol_steps), primer/muadil, çoklu uygulama |
| İstatistik | ✅ Tamamlandı | stat_suru_ozet + v_ureme_dongusu, üreme verimliliği (Düve/İnek ×3), sperma/PI |
| AI Asistan | ✅ Tamamlandı | Supabase Edge Function + MiniMax, agent loop, plan+undo (Faz 0–2.6), salt-okuma SQL + HITL yazma |
| Demo-Mirror | ✅ Tamamlandı | postgres_fdw → demo atomik klon (D0–D4), günlük backup, demo login → canlı klon |
Mimari Prensipler
- İş mantığı DB'de — frontend sadece render ve input toplar, hesap yapmaz, state machine işletmez, validasyon yapmaz. Frontend ERP'de güvenilmezdir (DevTools override, çoklu cihaz versiyon farkı, offline güncellik sorunu). Tüm iş mantığı PostgreSQL'de (RPC + trigger + view).
- Sadece RPC ile yaz — direkt REST INSERT/UPDATE/DELETE yasak; tüm yazma işlemleri Supabase RPC üzerinden geçer.
write() fonksiyonu geçici offline queue çözümüdür, yeni kodda RPC tercih edilir.
- Controlled entities — hastalık, ilaç, hayvan asla free-text; FK + dropdown zorunlu
- Stok ledger immutable —
stok_hareket asla silinmez; düzeltme yeni kayıt olarak girilir
- Offline-first — tüm okumalar IndexedDB'den, yazma Supabase'e kuyruğa alınır
- Migration idempotent — her migration
DROP IF EXISTS + CREATE OR REPLACE ile yazılır
Kaynak Dosyalar
index.html — HTML + CSS + tüm modaller (2246 satır)
js/
config.js — GRUP_PADOK + sabitler (129 satır)
state.js — AppState (92 satır)
api.js — Supabase client, IDB sync, RPC wrapper (606 satır)
app.js — Uygulama init + routing (719 satır)
ui.js — Tüm render (8210 satır)
forms.js — Form submit + validasyon (1898 satır)
auth.js — Login gate, kayıt, şifre sıfırlama (267 satır)
ai-asistan.js — AI Asistan frontend (385 satır)
demo.js — Demo-Mirror UI (87 satır)
utils/
helpers.js — DOM, toast, autocomplete, debounce (103 satır)
modal.js — openM/closeM/mClose (74 satır)
errorHandler.js — withErrorHandling (54 satır)
handlers.js — Global event handler'lar (354 satır)
events.js — Event emitter (49 satır)
supabase/migrations/ — 214 migration dosyası (PostgreSQL)
scripts/ — LSP, ground-truth-audit, sql-lsp daemon, vb.
lsp.json — OMP için SQL LSP kaydı (lsp-proxy)
plugins/ — OMP/Claude Code için LSP plugin manifestleri (sql-lsp, ts-lsp)
Veritabanı Özeti
50 public base tablo (canlı, 2026-07-04 LSP teyitli — ground_truth 41 + bugünden eklenenler; psql view ile 64 görünür çünkü extension nesneleri ve view'lar dahil).
hayvanlar (çekirdek)
├── tohumlama — üreme olayları (per-cycle state machine)
├── dogum — doğum kayıtları
├── kizginlik_log — kızgınlık takibi (tedavi-silme entegre)
├── gorev_log — görev sistemi (id text+uuid; cascade/orphan guard)
└── cases — klinik vakalar
├── treatment_days → drug_administrations → drugs → stok
├── tedavi_sablon_*, tedavi_sablon_uygulama — şablon motoru (#63)
└── tedavi (legacy) — BUG-XXX-TEDAVI-ORPHAN temizlendi
stok
└── stok_hareket — ledger (immutable)
vaccines + vaccine_diseases + protocol_steps — aşı yönetimi (içerik-odaklı)
agent_threads + agent_messages + agent_plans — AI Asistan hafıza + plan motoru
prod_fdw — Demo-Mirror FDW köprüsü (postgres_fdw → demo atomik klon)
diseases / drugs — controlled listeler