<mxfile host="app.diagrams.net" modified="2026-05-30T00:00:00.000Z" agent="Codex" version="24.7.17" type="device"><diagram id="system-complete-clean" name="Flowchart Sistem Lengkap"><mxGraphModel dx="2200" dy="3500" grid="1" gridSize="10" guides="1" tooltips="1" connect="1" arrows="1" fold="1" page="1" pageScale="1" pageWidth="2200" pageHeight="3500" math="0" shadow="0"><root><mxCell id="0"/><mxCell id="1" parent="0"/><mxCell id="title" value="Flowchart Sistem Lengkap Aplikasi Tobaku Sulastri" style="text;html=1;strokeColor=none;fillColor=none;fontFamily=Arial;fontSize=24;fontStyle=1;fontColor=#2D2520;" vertex="1" parent="1"><mxGeometry x="520" y="25" width="1160" height="44" as="geometry" /></mxCell><mxCell id="auth_lane" value="A. Alur Autentikasi Pengguna" style="rounded=1;whiteSpace=wrap;html=1;fillColor=#FFFDF9;strokeColor=#8B5E3C;strokeWidth=2;fontFamily=Arial;fontSize=16;fontStyle=1;fontColor=#2D2520;arcSize=4;" vertex="1" parent="1"><mxGeometry x="70" y="90" width="2060" height="2180" as="geometry" /></mxCell><mxCell id="login_lane" value="Login Normal" style="rounded=1;whiteSpace=wrap;html=1;fillColor=#FFFDF9;strokeColor=#8B5E3C;strokeWidth=2;fontFamily=Arial;fontSize=16;fontStyle=1;fontColor=#2D2520;arcSize=4;" vertex="1" parent="1"><mxGeometry x="110" y="650" width="760" height="620" as="geometry" /></mxCell><mxCell id="otp_lane" value="Lupa Password dengan OTP Email" style="rounded=1;whiteSpace=wrap;html=1;fillColor=#FFFDF9;strokeColor=#8B5E3C;strokeWidth=2;fontFamily=Arial;fontSize=16;fontStyle=1;fontColor=#2D2520;arcSize=4;" vertex="1" parent="1"><mxGeometry x="950" y="650" width="1140" height="1520" as="geometry" /></mxCell><mxCell id="menu_lane" value="B. Alur Menu Utama Setelah Masuk Dashboard" style="rounded=1;whiteSpace=wrap;html=1;fillColor=#FFFDF9;strokeColor=#8B5E3C;strokeWidth=2;fontFamily=Arial;fontSize=16;fontStyle=1;fontColor=#2D2520;arcSize=4;" vertex="1" parent="1"><mxGeometry x="70" y="2300" width="2060" height="1120" as="geometry" /></mxCell><mxCell id="start" value="Mulai" style="ellipse;whiteSpace=wrap;html=1;fillColor=#EAF8EF;strokeColor=#2E7D32;strokeWidth=2;fontFamily=Arial;fontSize=13;fontStyle=1;fontColor=#1F3D2A;" vertex="1" parent="1"><mxGeometry x="1010" y="130" width="180" height="55" as="geometry" /></mxCell><mxCell id="splash" value="Splash Screen" style="rounded=1;whiteSpace=wrap;html=1;fillColor=#FFFFFF;strokeColor=#8B5E3C;strokeWidth=2;fontFamily=Arial;fontSize=13;fontColor=#2D2520;arcSize=10;" vertex="1" parent="1"><mxGeometry x="1005" y="210" width="190" height="55" as="geometry" /></mxCell><mxCell id="session" value="Apakah sesi login
masih aktif?" style="rhombus;whiteSpace=wrap;html=1;fillColor=#FFF7D6;strokeColor=#B7791F;strokeWidth=2;fontFamily=Arial;fontSize=13;fontColor=#2D2520;" vertex="1" parent="1"><mxGeometry x="970" y="310" width="260" height="90" as="geometry" /></mxCell><mxCell id="auth_ok_session" value="Sesi aktif, lanjut
ke aplikasi" style="ellipse;whiteSpace=wrap;html=1;fillColor=#EAF8EF;strokeColor=#2E7D32;strokeWidth=2;fontFamily=Arial;fontSize=13;fontStyle=1;fontColor=#1F3D2A;" vertex="1" parent="1"><mxGeometry x="1330" y="325" width="270" height="65" as="geometry" /></mxCell><mxCell id="login_page" value="Halaman Login" style="rounded=1;whiteSpace=wrap;html=1;fillColor=#FFFFFF;strokeColor=#8B5E3C;strokeWidth=2;fontFamily=Arial;fontSize=13;fontColor=#2D2520;arcSize=10;" vertex="1" parent="1"><mxGeometry x="985" y="490" width="230" height="60" as="geometry" /></mxCell><mxCell id="login_choice" value="Pilih aksi pada
halaman login" style="rhombus;whiteSpace=wrap;html=1;fillColor=#FFF7D6;strokeColor=#B7791F;strokeWidth=2;fontFamily=Arial;fontSize=13;fontColor=#2D2520;" vertex="1" parent="1"><mxGeometry x="960" y="590" width="280" height="85" as="geometry" /></mxCell><mxCell id="input_login" value="Input username/email
dan password" style="shape=parallelogram;perimeter=parallelogramPerimeter;whiteSpace=wrap;html=1;fillColor=#EAF4FF;strokeColor=#2B6CB0;strokeWidth=2;fontFamily=Arial;fontSize=13;fontColor=#1A365D;" vertex="1" parent="1"><mxGeometry x="300" y="740" width="340" height="70" as="geometry" /></mxCell><mxCell id="api_login" value="Kirim data ke API
/api/login" style="rounded=1;whiteSpace=wrap;html=1;fillColor=#FFFFFF;strokeColor=#8B5E3C;strokeWidth=2;fontFamily=Arial;fontSize=13;fontColor=#2D2520;arcSize=10;" vertex="1" parent="1"><mxGeometry x="325" y="850" width="290" height="65" as="geometry" /></mxCell><mxCell id="db_login" value="Validasi akun pada
tabel login" style="shape=cylinder3d;whiteSpace=wrap;html=1;boundedLbl=1;backgroundOutline=1;size=15;fillColor=#EFF2F5;strokeColor=#4B5563;strokeWidth=2;fontFamily=Arial;fontSize=13;fontColor=#2D2520;" vertex="1" parent="1"><mxGeometry x="325" y="950" width="290" height="65" as="geometry" /></mxCell><mxCell id="valid_login" value="Apakah data
login valid?" style="rhombus;whiteSpace=wrap;html=1;fillColor=#FFF7D6;strokeColor=#B7791F;strokeWidth=2;fontFamily=Arial;fontSize=13;fontColor=#2D2520;" vertex="1" parent="1"><mxGeometry x="340" y="1060" width="260" height="85" as="geometry" /></mxCell><mxCell id="login_ok" value="Login berhasil
dan simpan sesi" style="ellipse;whiteSpace=wrap;html=1;fillColor=#EAF8EF;strokeColor=#2E7D32;strokeWidth=2;fontFamily=Arial;fontSize=13;fontStyle=1;fontColor=#1F3D2A;" vertex="1" parent="1"><mxGeometry x="310" y="1190" width="320" height="65" as="geometry" /></mxCell><mxCell id="login_fail" value="Tampilkan pesan
login gagal" style="rounded=1;whiteSpace=wrap;html=1;fillColor=#FFECEC;strokeColor=#DC2626;strokeWidth=2;fontFamily=Arial;fontSize=13;fontColor=#7F1D1D;arcSize=10;" vertex="1" parent="1"><mxGeometry x="90" y="1190" width="270" height="65" as="geometry" /></mxCell><mxCell id="login_retry" value="Ulangi input
data login" style="rounded=1;whiteSpace=wrap;html=1;fillColor=#FFFFFF;strokeColor=#8B5E3C;strokeWidth=2;fontFamily=Arial;fontSize=13;fontColor=#2D2520;arcSize=10;" vertex="1" parent="1"><mxGeometry x="90" y="1285" width="270" height="55" as="geometry" /></mxCell><mxCell id="input_email" value="Input username/email
akun" style="shape=parallelogram;perimeter=parallelogramPerimeter;whiteSpace=wrap;html=1;fillColor=#EAF4FF;strokeColor=#2B6CB0;strokeWidth=2;fontFamily=Arial;fontSize=13;fontColor=#1A365D;" vertex="1" parent="1"><mxGeometry x="1400" y="740" width="330" height="70" as="geometry" /></mxCell><mxCell id="api_send_otp" value="Request OTP ke API
/api/forgot-password/send-otp" style="rounded=1;whiteSpace=wrap;html=1;fillColor=#FFFFFF;strokeColor=#8B5E3C;strokeWidth=2;fontFamily=Arial;fontSize=13;fontColor=#2D2520;arcSize=10;" vertex="1" parent="1"><mxGeometry x="1365" y="850" width="390" height="70" as="geometry" /></mxCell><mxCell id="db_account" value="Cek akun pada
tabel login" style="shape=cylinder3d;whiteSpace=wrap;html=1;boundedLbl=1;backgroundOutline=1;size=15;fillColor=#EFF2F5;strokeColor=#4B5563;strokeWidth=2;fontFamily=Arial;fontSize=13;fontColor=#2D2520;" vertex="1" parent="1"><mxGeometry x="1410" y="960" width="300" height="65" as="geometry" /></mxCell><mxCell id="account_found" value="Apakah akun
ditemukan?" style="rhombus;whiteSpace=wrap;html=1;fillColor=#FFF7D6;strokeColor=#B7791F;strokeWidth=2;fontFamily=Arial;fontSize=13;fontColor=#2D2520;" vertex="1" parent="1"><mxGeometry x="1430" y="1070" width="260" height="85" as="geometry" /></mxCell><mxCell id="account_fail" value="Tampilkan pesan akun
tidak ditemukan" style="rounded=1;whiteSpace=wrap;html=1;fillColor=#FFECEC;strokeColor=#DC2626;strokeWidth=2;fontFamily=Arial;fontSize=13;fontColor=#7F1D1D;arcSize=10;" vertex="1" parent="1"><mxGeometry x="1790" y="1078" width="300" height="65" as="geometry" /></mxCell><mxCell id="account_retry" value="Ulangi input email/username
yang terdaftar" style="rounded=1;whiteSpace=wrap;html=1;fillColor=#FFFFFF;strokeColor=#8B5E3C;strokeWidth=2;fontFamily=Arial;fontSize=13;fontColor=#2D2520;arcSize=10;" vertex="1" parent="1"><mxGeometry x="1790" y="1175" width="300" height="65" as="geometry" /></mxCell><mxCell id="gen_otp" value="Generate OTP 6 digit
masa berlaku 10 menit" style="rounded=1;whiteSpace=wrap;html=1;fillColor=#FFFFFF;strokeColor=#8B5E3C;strokeWidth=2;fontFamily=Arial;fontSize=13;fontColor=#2D2520;arcSize=10;" vertex="1" parent="1"><mxGeometry x="1375" y="1195" width="370" height="70" as="geometry" /></mxCell><mxCell id="save_otp" value="Simpan OTP ke tabel
password_reset_otps" style="shape=cylinder3d;whiteSpace=wrap;html=1;boundedLbl=1;backgroundOutline=1;size=15;fillColor=#EFF2F5;strokeColor=#4B5563;strokeWidth=2;fontFamily=Arial;fontSize=13;fontColor=#2D2520;" vertex="1" parent="1"><mxGeometry x="1375" y="1305" width="370" height="70" as="geometry" /></mxCell><mxCell id="send_email" value="Kirim OTP ke email
pengguna via SMTP" style="rounded=1;whiteSpace=wrap;html=1;fillColor=#F0FDF4;strokeColor=#16A34A;strokeWidth=2;fontFamily=Arial;fontSize=13;fontColor=#14532D;arcSize=10;" vertex="1" parent="1"><mxGeometry x="1375" y="1415" width="370" height="70" as="geometry" /></mxCell><mxCell id="input_otp" value="Input kode OTP
dari email" style="shape=parallelogram;perimeter=parallelogramPerimeter;whiteSpace=wrap;html=1;fillColor=#EAF4FF;strokeColor=#2B6CB0;strokeWidth=2;fontFamily=Arial;fontSize=13;fontColor=#1A365D;" vertex="1" parent="1"><mxGeometry x="1395" y="1525" width="330" height="70" as="geometry" /></mxCell><mxCell id="api_verify" value="Verifikasi OTP ke API
/api/forgot-password/verify-otp" style="rounded=1;whiteSpace=wrap;html=1;fillColor=#FFFFFF;strokeColor=#8B5E3C;strokeWidth=2;fontFamily=Arial;fontSize=13;fontColor=#2D2520;arcSize=10;" vertex="1" parent="1"><mxGeometry x="1365" y="1635" width="390" height="70" as="geometry" /></mxCell><mxCell id="db_otp" value="Cek OTP: sesuai, belum dipakai,
dan belum kedaluwarsa" style="shape=cylinder3d;whiteSpace=wrap;html=1;boundedLbl=1;backgroundOutline=1;size=15;fillColor=#EFF2F5;strokeColor=#4B5563;strokeWidth=2;fontFamily=Arial;fontSize=13;fontColor=#2D2520;" vertex="1" parent="1"><mxGeometry x="1365" y="1745" width="390" height="70" as="geometry" /></mxCell><mxCell id="otp_valid" value="Apakah OTP
valid?" style="rhombus;whiteSpace=wrap;html=1;fillColor=#FFF7D6;strokeColor=#B7791F;strokeWidth=2;fontFamily=Arial;fontSize=13;fontColor=#2D2520;" vertex="1" parent="1"><mxGeometry x="1430" y="1855" width="260" height="85" as="geometry" /></mxCell><mxCell id="otp_fail" value="Tampilkan pesan OTP
salah/kedaluwarsa" style="rounded=1;whiteSpace=wrap;html=1;fillColor=#FFECEC;strokeColor=#DC2626;strokeWidth=2;fontFamily=Arial;fontSize=13;fontColor=#7F1D1D;arcSize=10;" vertex="1" parent="1"><mxGeometry x="1790" y="1863" width="300" height="65" as="geometry" /></mxCell><mxCell id="otp_retry" value="Ulangi OTP atau
kirim OTP baru" style="rounded=1;whiteSpace=wrap;html=1;fillColor=#FFFFFF;strokeColor=#8B5E3C;strokeWidth=2;fontFamily=Arial;fontSize=13;fontColor=#2D2520;arcSize=10;" vertex="1" parent="1"><mxGeometry x="1790" y="1960" width="300" height="65" as="geometry" /></mxCell><mxCell id="new_pass" value="Input password baru" style="shape=parallelogram;perimeter=parallelogramPerimeter;whiteSpace=wrap;html=1;fillColor=#EAF4FF;strokeColor=#2B6CB0;strokeWidth=2;fontFamily=Arial;fontSize=13;fontColor=#1A365D;" vertex="1" parent="1"><mxGeometry x="1000" y="1960" width="320" height="70" as="geometry" /></mxCell><mxCell id="api_reset" value="Request reset password
/api/forgot-password/reset" style="rounded=1;whiteSpace=wrap;html=1;fillColor=#FFFFFF;strokeColor=#8B5E3C;strokeWidth=2;fontFamily=Arial;fontSize=13;fontColor=#2D2520;arcSize=10;" vertex="1" parent="1"><mxGeometry x="995" y="2070" width="350" height="70" as="geometry" /></mxCell><mxCell id="db_reset" value="Update password tabel login
dan tandai OTP digunakan" style="shape=cylinder3d;whiteSpace=wrap;html=1;boundedLbl=1;backgroundOutline=1;size=15;fillColor=#EFF2F5;strokeColor=#4B5563;strokeWidth=2;fontFamily=Arial;fontSize=13;fontColor=#2D2520;" vertex="1" parent="1"><mxGeometry x="1380" y="2070" width="390" height="70" as="geometry" /></mxCell><mxCell id="reset_ok" value="Reset berhasil,
kembali ke halaman login" style="ellipse;whiteSpace=wrap;html=1;fillColor=#EAF8EF;strokeColor=#2E7D32;strokeWidth=2;fontFamily=Arial;fontSize=13;fontStyle=1;fontColor=#1F3D2A;" vertex="1" parent="1"><mxGeometry x="1405" y="2180" width="330" height="65" as="geometry" /></mxCell><mxCell id="auth_success" value="Autentikasi berhasil
atau sesi masih aktif" style="ellipse;whiteSpace=wrap;html=1;fillColor=#EAF8EF;strokeColor=#2E7D32;strokeWidth=2;fontFamily=Arial;fontSize=13;fontStyle=1;fontColor=#1F3D2A;" vertex="1" parent="1"><mxGeometry x="930" y="2180" width="340" height="70" as="geometry" /></mxCell><mxCell id="dashboard" value="Dashboard Utama
Ringkasan stok, bahan digunakan hari ini, stok kritis" style="rounded=1;whiteSpace=wrap;html=1;fillColor=#FFFFFF;strokeColor=#8B5E3C;strokeWidth=2;fontFamily=Arial;fontSize=13;fontColor=#2D2520;arcSize=10;" vertex="1" parent="1"><mxGeometry x="800" y="2410" width="600" height="75" as="geometry" /></mxCell><mxCell id="menu" value="Pilih menu aplikasi" style="rhombus;whiteSpace=wrap;html=1;fillColor=#FFF7D6;strokeColor=#B7791F;strokeWidth=2;fontFamily=Arial;fontSize=13;fontColor=#2D2520;" vertex="1" parent="1"><mxGeometry x="960" y="2530" width="280" height="85" as="geometry" /></mxCell><mxCell id="products" value="Menu Produk/Stok" style="rounded=1;whiteSpace=wrap;html=1;fillColor=#FFFFFF;strokeColor=#8B5E3C;strokeWidth=2;fontFamily=Arial;fontSize=13;fontColor=#2D2520;arcSize=10;" vertex="1" parent="1"><mxGeometry x="110" y="2680" width="300" height="60" as="geometry" /></mxCell><mxCell id="products_get" value="Ambil data produk
GET /products" style="shape=cylinder3d;whiteSpace=wrap;html=1;boundedLbl=1;backgroundOutline=1;size=15;fillColor=#EFF2F5;strokeColor=#4B5563;strokeWidth=2;fontFamily=Arial;fontSize=13;fontColor=#2D2520;" vertex="1" parent="1"><mxGeometry x="110" y="2775" width="300" height="65" as="geometry" /></mxCell><mxCell id="products_action" value="Lihat/filter stok, cek status kritis,
dan tambah bahan" style="rounded=1;whiteSpace=wrap;html=1;fillColor=#FFFFFF;strokeColor=#8B5E3C;strokeWidth=2;fontFamily=Arial;fontSize=13;fontColor=#2D2520;arcSize=10;" vertex="1" parent="1"><mxGeometry x="90" y="2880" width="340" height="80" as="geometry" /></mxCell><mxCell id="products_save" value="Jika tambah bahan:
simpan ke tabel products" style="shape=cylinder3d;whiteSpace=wrap;html=1;boundedLbl=1;backgroundOutline=1;size=15;fillColor=#EFF2F5;strokeColor=#4B5563;strokeWidth=2;fontFamily=Arial;fontSize=13;fontColor=#2D2520;" vertex="1" parent="1"><mxGeometry x="105" y="3000" width="310" height="70" as="geometry" /></mxCell><mxCell id="products_end" value="Data stok diperbarui
dan dashboard bisa direfresh" style="ellipse;whiteSpace=wrap;html=1;fillColor=#EAF8EF;strokeColor=#2E7D32;strokeWidth=2;fontFamily=Arial;fontSize=13;fontStyle=1;fontColor=#1F3D2A;" vertex="1" parent="1"><mxGeometry x="105" y="3115" width="310" height="60" as="geometry" /></mxCell><mxCell id="stockin" value="Menu Transaksi
Stok Masuk" style="rounded=1;whiteSpace=wrap;html=1;fillColor=#FFFFFF;strokeColor=#8B5E3C;strokeWidth=2;fontFamily=Arial;fontSize=13;fontColor=#2D2520;arcSize=10;" vertex="1" parent="1"><mxGeometry x="520" y="2680" width="300" height="65" as="geometry" /></mxCell><mxCell id="stockin_input" value="Pilih bahan, jumlah,
harga, dan tanggal" style="shape=parallelogram;perimeter=parallelogramPerimeter;whiteSpace=wrap;html=1;fillColor=#EAF4FF;strokeColor=#2B6CB0;strokeWidth=2;fontFamily=Arial;fontSize=13;fontColor=#1A365D;" vertex="1" parent="1"><mxGeometry x="520" y="2780" width="300" height="70" as="geometry" /></mxCell><mxCell id="stockin_save" value="Simpan transaksi
POST /transaksi" style="rounded=1;whiteSpace=wrap;html=1;fillColor=#FFFFFF;strokeColor=#8B5E3C;strokeWidth=2;fontFamily=Arial;fontSize=13;fontColor=#2D2520;arcSize=10;" vertex="1" parent="1"><mxGeometry x="520" y="2890" width="300" height="65" as="geometry" /></mxCell><mxCell id="stock_update" value="Update current_stock
dan tabel Stock In/transactions" style="shape=cylinder3d;whiteSpace=wrap;html=1;boundedLbl=1;backgroundOutline=1;size=15;fillColor=#EFF2F5;strokeColor=#4B5563;strokeWidth=2;fontFamily=Arial;fontSize=13;fontColor=#2D2520;" vertex="1" parent="1"><mxGeometry x="500" y="3000" width="340" height="75" as="geometry" /></mxCell><mxCell id="stockin_end" value="Stok masuk tersimpan
dan stok bahan bertambah" style="ellipse;whiteSpace=wrap;html=1;fillColor=#EAF8EF;strokeColor=#2E7D32;strokeWidth=2;fontFamily=Arial;fontSize=13;fontStyle=1;fontColor=#1F3D2A;" vertex="1" parent="1"><mxGeometry x="500" y="3125" width="340" height="60" as="geometry" /></mxCell><mxCell id="prediction" value="Menu Prediksi/Produksi" style="rounded=1;whiteSpace=wrap;html=1;fillColor=#FFFFFF;strokeColor=#8B5E3C;strokeWidth=2;fontFamily=Arial;fontSize=13;fontColor=#2D2520;arcSize=10;" vertex="1" parent="1"><mxGeometry x="930" y="2680" width="330" height="60" as="geometry" /></mxCell><mxCell id="recipe_get" value="Ambil data resep dan produk
GET /recipes, GET /products" style="shape=cylinder3d;whiteSpace=wrap;html=1;boundedLbl=1;backgroundOutline=1;size=15;fillColor=#EFF2F5;strokeColor=#4B5563;strokeWidth=2;fontFamily=Arial;fontSize=13;fontColor=#2D2520;" vertex="1" parent="1"><mxGeometry x="930" y="2775" width="330" height="70" as="geometry" /></mxCell><mxCell id="recipe_input" value="Pilih resep, jumlah produksi,
dan bahan yang digunakan" style="shape=parallelogram;perimeter=parallelogramPerimeter;whiteSpace=wrap;html=1;fillColor=#EAF4FF;strokeColor=#2B6CB0;strokeWidth=2;fontFamily=Arial;fontSize=13;fontColor=#1A365D;" vertex="1" parent="1"><mxGeometry x="925" y="2885" width="340" height="75" as="geometry" /></mxCell><mxCell id="calc_needs" value="Hitung kebutuhan bahan
berdasarkan recipe_ingredients" style="rounded=1;whiteSpace=wrap;html=1;fillColor=#FFFFFF;strokeColor=#8B5E3C;strokeWidth=2;fontFamily=Arial;fontSize=13;fontColor=#2D2520;arcSize=10;" vertex="1" parent="1"><mxGeometry x="920" y="3000" width="350" height="70" as="geometry" /></mxCell><mxCell id="stock_check" value="Apakah stok
cukup?" style="rhombus;whiteSpace=wrap;html=1;fillColor=#FFF7D6;strokeColor=#B7791F;strokeWidth=2;fontFamily=Arial;fontSize=13;fontColor=#2D2520;" vertex="1" parent="1"><mxGeometry x="965" y="3110" width="260" height="85" as="geometry" /></mxCell><mxCell id="stock_low" value="Tampilkan bahan kurang
dan arahkan update stok" style="rounded=1;whiteSpace=wrap;html=1;fillColor=#FFECEC;strokeColor=#DC2626;strokeWidth=2;fontFamily=Arial;fontSize=13;fontColor=#7F1D1D;arcSize=10;" vertex="1" parent="1"><mxGeometry x="690" y="3130" width="280" height="65" as="geometry" /></mxCell><mxCell id="consume" value="Submit produksi
POST /stock/consume" style="rounded=1;whiteSpace=wrap;html=1;fillColor=#FFFFFF;strokeColor=#8B5E3C;strokeWidth=2;fontFamily=Arial;fontSize=13;fontColor=#2D2520;arcSize=10;" vertex="1" parent="1"><mxGeometry x="995" y="3230" width="320" height="65" as="geometry" /></mxCell><mxCell id="usage_save" value="Kurangi stok products, simpan
stock_usage_history dan predictions" style="shape=cylinder3d;whiteSpace=wrap;html=1;boundedLbl=1;backgroundOutline=1;size=15;fillColor=#EFF2F5;strokeColor=#4B5563;strokeWidth=2;fontFamily=Arial;fontSize=13;fontColor=#2D2520;" vertex="1" parent="1"><mxGeometry x="965" y="3330" width="380" height="75" as="geometry" /></mxCell><mxCell id="pred_end" value="Produksi tersimpan
laporan prediksi terbarui" style="ellipse;whiteSpace=wrap;html=1;fillColor=#EAF8EF;strokeColor=#2E7D32;strokeWidth=2;fontFamily=Arial;fontSize=13;fontStyle=1;fontColor=#1F3D2A;" vertex="1" parent="1"><mxGeometry x="980" y="3445" width="350" height="60" as="geometry" /></mxCell><mxCell id="reports" value="Menu Laporan" style="rounded=1;whiteSpace=wrap;html=1;fillColor=#FFFFFF;strokeColor=#8B5E3C;strokeWidth=2;fontFamily=Arial;fontSize=13;fontColor=#2D2520;arcSize=10;" vertex="1" parent="1"><mxGeometry x="1400" y="2680" width="300" height="60" as="geometry" /></mxCell><mxCell id="reports_get" value="Ambil laporan stok, stok masuk,
prediksi, dan bahan kritis" style="shape=cylinder3d;whiteSpace=wrap;html=1;boundedLbl=1;backgroundOutline=1;size=15;fillColor=#EFF2F5;strokeColor=#4B5563;strokeWidth=2;fontFamily=Arial;fontSize=13;fontColor=#2D2520;" vertex="1" parent="1"><mxGeometry x="1380" y="2775" width="340" height="75" as="geometry" /></mxCell><mxCell id="reports_show" value="Tampilkan grafik/tren, tabel laporan,
dan ringkasan" style="rounded=1;whiteSpace=wrap;html=1;fillColor=#FFFFFF;strokeColor=#8B5E3C;strokeWidth=2;fontFamily=Arial;fontSize=13;fontColor=#2D2520;arcSize=10;" vertex="1" parent="1"><mxGeometry x="1385" y="2895" width="330" height="75" as="geometry" /></mxCell><mxCell id="reports_end" value="Laporan berhasil
ditampilkan" style="ellipse;whiteSpace=wrap;html=1;fillColor=#EAF8EF;strokeColor=#2E7D32;strokeWidth=2;fontFamily=Arial;fontSize=13;fontStyle=1;fontColor=#1F3D2A;" vertex="1" parent="1"><mxGeometry x="1395" y="3010" width="310" height="60" as="geometry" /></mxCell><mxCell id="settings" value="Menu Pengaturan" style="rounded=1;whiteSpace=wrap;html=1;fillColor=#FFFFFF;strokeColor=#8B5E3C;strokeWidth=2;fontFamily=Arial;fontSize=13;fontColor=#2D2520;arcSize=10;" vertex="1" parent="1"><mxGeometry x="1780" y="2680" width="300" height="60" as="geometry" /></mxCell><mxCell id="settings_action" value="Lihat akun, ubah password, logout,
atau reset password OTP" style="rounded=1;whiteSpace=wrap;html=1;fillColor=#FFFFFF;strokeColor=#8B5E3C;strokeWidth=2;fontFamily=Arial;fontSize=13;fontColor=#2D2520;arcSize=10;" vertex="1" parent="1"><mxGeometry x="1760" y="2780" width="340" height="80" as="geometry" /></mxCell><mxCell id="change_pass" value="Jika ubah password:
POST /api/change-password" style="shape=cylinder3d;whiteSpace=wrap;html=1;boundedLbl=1;backgroundOutline=1;size=15;fillColor=#EFF2F5;strokeColor=#4B5563;strokeWidth=2;fontFamily=Arial;fontSize=13;fontColor=#2D2520;" vertex="1" parent="1"><mxGeometry x="1770" y="2900" width="320" height="70" as="geometry" /></mxCell><mxCell id="logout" value="Logout dan hapus sesi" style="ellipse;whiteSpace=wrap;html=1;fillColor=#EAF8EF;strokeColor=#2E7D32;strokeWidth=2;fontFamily=Arial;fontSize=13;fontStyle=1;fontColor=#1F3D2A;" vertex="1" parent="1"><mxGeometry x="1785" y="3010" width="290" height="60" as="geometry" /></mxCell><mxCell id="e0" value="" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;endArrow=block;strokeColor=#4B3A31;fontFamily=Arial;fontSize=12;fontColor=#2D2520;" edge="1" parent="1" source="start" target="splash"><mxGeometry relative="1" as="geometry" /></mxCell><mxCell id="e1" value="" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;endArrow=block;strokeColor=#4B3A31;fontFamily=Arial;fontSize=12;fontColor=#2D2520;" edge="1" parent="1" source="splash" target="session"><mxGeometry relative="1" as="geometry" /></mxCell><mxCell id="e2" value="Ya" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;endArrow=block;strokeColor=#4B3A31;fontFamily=Arial;fontSize=12;fontColor=#2D2520;" edge="1" parent="1" source="session" target="auth_ok_session"><mxGeometry relative="1" as="geometry" /></mxCell><mxCell id="e3" value="Tidak" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;endArrow=block;strokeColor=#4B3A31;fontFamily=Arial;fontSize=12;fontColor=#2D2520;" edge="1" parent="1" source="session" target="login_page"><mxGeometry relative="1" as="geometry" /></mxCell><mxCell id="e4" value="" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;endArrow=block;strokeColor=#4B3A31;fontFamily=Arial;fontSize=12;fontColor=#2D2520;" edge="1" parent="1" source="auth_ok_session" target="auth_success"><mxGeometry relative="1" as="geometry" /></mxCell><mxCell id="e5" value="" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;endArrow=block;strokeColor=#4B3A31;fontFamily=Arial;fontSize=12;fontColor=#2D2520;" edge="1" parent="1" source="login_page" target="login_choice"><mxGeometry relative="1" as="geometry" /></mxCell><mxCell id="e6" value="Login" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;endArrow=block;strokeColor=#4B3A31;fontFamily=Arial;fontSize=12;fontColor=#2D2520;" edge="1" parent="1" source="login_choice" target="input_login"><mxGeometry relative="1" as="geometry" /></mxCell><mxCell id="e7" value="Lupa password" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;endArrow=block;strokeColor=#4B3A31;fontFamily=Arial;fontSize=12;fontColor=#2D2520;" edge="1" parent="1" source="login_choice" target="input_email"><mxGeometry relative="1" as="geometry" /></mxCell><mxCell id="e8" value="" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;endArrow=block;strokeColor=#4B3A31;fontFamily=Arial;fontSize=12;fontColor=#2D2520;" edge="1" parent="1" source="input_login" target="api_login"><mxGeometry relative="1" as="geometry" /></mxCell><mxCell id="e9" value="" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;endArrow=block;strokeColor=#4B3A31;fontFamily=Arial;fontSize=12;fontColor=#2D2520;" edge="1" parent="1" source="api_login" target="db_login"><mxGeometry relative="1" as="geometry" /></mxCell><mxCell id="e10" value="" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;endArrow=block;strokeColor=#4B3A31;fontFamily=Arial;fontSize=12;fontColor=#2D2520;" edge="1" parent="1" source="db_login" target="valid_login"><mxGeometry relative="1" as="geometry" /></mxCell><mxCell id="e11" value="Ya" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;endArrow=block;strokeColor=#4B3A31;fontFamily=Arial;fontSize=12;fontColor=#2D2520;" edge="1" parent="1" source="valid_login" target="login_ok"><mxGeometry relative="1" as="geometry" /></mxCell><mxCell id="e12" value="Tidak" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;endArrow=block;strokeColor=#4B3A31;fontFamily=Arial;fontSize=12;fontColor=#2D2520;" edge="1" parent="1" source="valid_login" target="login_fail"><mxGeometry relative="1" as="geometry" /></mxCell><mxCell id="e13" value="" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;endArrow=block;strokeColor=#4B3A31;fontFamily=Arial;fontSize=12;fontColor=#2D2520;" edge="1" parent="1" source="login_fail" target="login_retry"><mxGeometry relative="1" as="geometry" /></mxCell><mxCell id="e14" value="" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;endArrow=block;strokeColor=#4B3A31;fontFamily=Arial;fontSize=12;fontColor=#2D2520;" edge="1" parent="1" source="login_ok" target="auth_success"><mxGeometry relative="1" as="geometry" /></mxCell><mxCell id="e15" value="" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;endArrow=block;strokeColor=#4B3A31;fontFamily=Arial;fontSize=12;fontColor=#2D2520;" edge="1" parent="1" source="input_email" target="api_send_otp"><mxGeometry relative="1" as="geometry" /></mxCell><mxCell id="e16" value="" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;endArrow=block;strokeColor=#4B3A31;fontFamily=Arial;fontSize=12;fontColor=#2D2520;" edge="1" parent="1" source="api_send_otp" target="db_account"><mxGeometry relative="1" as="geometry" /></mxCell><mxCell id="e17" value="" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;endArrow=block;strokeColor=#4B3A31;fontFamily=Arial;fontSize=12;fontColor=#2D2520;" edge="1" parent="1" source="db_account" target="account_found"><mxGeometry relative="1" as="geometry" /></mxCell><mxCell id="e18" value="Ya" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;endArrow=block;strokeColor=#4B3A31;fontFamily=Arial;fontSize=12;fontColor=#2D2520;" edge="1" parent="1" source="account_found" target="gen_otp"><mxGeometry relative="1" as="geometry" /></mxCell><mxCell id="e19" value="Tidak" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;endArrow=block;strokeColor=#4B3A31;fontFamily=Arial;fontSize=12;fontColor=#2D2520;" edge="1" parent="1" source="account_found" target="account_fail"><mxGeometry relative="1" as="geometry" /></mxCell><mxCell id="e20" value="" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;endArrow=block;strokeColor=#4B3A31;fontFamily=Arial;fontSize=12;fontColor=#2D2520;" edge="1" parent="1" source="account_fail" target="account_retry"><mxGeometry relative="1" as="geometry" /></mxCell><mxCell id="e21" value="" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;endArrow=block;strokeColor=#4B3A31;fontFamily=Arial;fontSize=12;fontColor=#2D2520;" edge="1" parent="1" source="gen_otp" target="save_otp"><mxGeometry relative="1" as="geometry" /></mxCell><mxCell id="e22" value="" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;endArrow=block;strokeColor=#4B3A31;fontFamily=Arial;fontSize=12;fontColor=#2D2520;" edge="1" parent="1" source="save_otp" target="send_email"><mxGeometry relative="1" as="geometry" /></mxCell><mxCell id="e23" value="" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;endArrow=block;strokeColor=#4B3A31;fontFamily=Arial;fontSize=12;fontColor=#2D2520;" edge="1" parent="1" source="send_email" target="input_otp"><mxGeometry relative="1" as="geometry" /></mxCell><mxCell id="e24" value="" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;endArrow=block;strokeColor=#4B3A31;fontFamily=Arial;fontSize=12;fontColor=#2D2520;" edge="1" parent="1" source="input_otp" target="api_verify"><mxGeometry relative="1" as="geometry" /></mxCell><mxCell id="e25" value="" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;endArrow=block;strokeColor=#4B3A31;fontFamily=Arial;fontSize=12;fontColor=#2D2520;" edge="1" parent="1" source="api_verify" target="db_otp"><mxGeometry relative="1" as="geometry" /></mxCell><mxCell id="e26" value="" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;endArrow=block;strokeColor=#4B3A31;fontFamily=Arial;fontSize=12;fontColor=#2D2520;" edge="1" parent="1" source="db_otp" target="otp_valid"><mxGeometry relative="1" as="geometry" /></mxCell><mxCell id="e27" value="Ya" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;endArrow=block;strokeColor=#4B3A31;fontFamily=Arial;fontSize=12;fontColor=#2D2520;" edge="1" parent="1" source="otp_valid" target="new_pass"><mxGeometry relative="1" as="geometry" /></mxCell><mxCell id="e28" value="Tidak" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;endArrow=block;strokeColor=#4B3A31;fontFamily=Arial;fontSize=12;fontColor=#2D2520;" edge="1" parent="1" source="otp_valid" target="otp_fail"><mxGeometry relative="1" as="geometry" /></mxCell><mxCell id="e29" value="" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;endArrow=block;strokeColor=#4B3A31;fontFamily=Arial;fontSize=12;fontColor=#2D2520;" edge="1" parent="1" source="otp_fail" target="otp_retry"><mxGeometry relative="1" as="geometry" /></mxCell><mxCell id="e30" value="" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;endArrow=block;strokeColor=#4B3A31;fontFamily=Arial;fontSize=12;fontColor=#2D2520;" edge="1" parent="1" source="new_pass" target="api_reset"><mxGeometry relative="1" as="geometry" /></mxCell><mxCell id="e31" value="" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;endArrow=block;strokeColor=#4B3A31;fontFamily=Arial;fontSize=12;fontColor=#2D2520;" edge="1" parent="1" source="api_reset" target="db_reset"><mxGeometry relative="1" as="geometry" /></mxCell><mxCell id="e32" value="" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;endArrow=block;strokeColor=#4B3A31;fontFamily=Arial;fontSize=12;fontColor=#2D2520;" edge="1" parent="1" source="db_reset" target="reset_ok"><mxGeometry relative="1" as="geometry" /></mxCell><mxCell id="e33" value="" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;endArrow=block;strokeColor=#4B3A31;fontFamily=Arial;fontSize=12;fontColor=#2D2520;" edge="1" parent="1" source="auth_success" target="dashboard"><mxGeometry relative="1" as="geometry" /></mxCell><mxCell id="e34" value="" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;endArrow=block;strokeColor=#4B3A31;fontFamily=Arial;fontSize=12;fontColor=#2D2520;" edge="1" parent="1" source="dashboard" target="menu"><mxGeometry relative="1" as="geometry" /></mxCell><mxCell id="e35" value="Produk/Stok" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;endArrow=block;strokeColor=#4B3A31;fontFamily=Arial;fontSize=12;fontColor=#2D2520;" edge="1" parent="1" source="menu" target="products"><mxGeometry relative="1" as="geometry" /></mxCell><mxCell id="e36" value="Transaksi" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;endArrow=block;strokeColor=#4B3A31;fontFamily=Arial;fontSize=12;fontColor=#2D2520;" edge="1" parent="1" source="menu" target="stockin"><mxGeometry relative="1" as="geometry" /></mxCell><mxCell id="e37" value="Prediksi" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;endArrow=block;strokeColor=#4B3A31;fontFamily=Arial;fontSize=12;fontColor=#2D2520;" edge="1" parent="1" source="menu" target="prediction"><mxGeometry relative="1" as="geometry" /></mxCell><mxCell id="e38" value="Laporan" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;endArrow=block;strokeColor=#4B3A31;fontFamily=Arial;fontSize=12;fontColor=#2D2520;" edge="1" parent="1" source="menu" target="reports"><mxGeometry relative="1" as="geometry" /></mxCell><mxCell id="e39" value="Pengaturan" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;endArrow=block;strokeColor=#4B3A31;fontFamily=Arial;fontSize=12;fontColor=#2D2520;" edge="1" parent="1" source="menu" target="settings"><mxGeometry relative="1" as="geometry" /></mxCell><mxCell id="e40" value="" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;endArrow=block;strokeColor=#4B3A31;fontFamily=Arial;fontSize=12;fontColor=#2D2520;" edge="1" parent="1" source="products" target="products_get"><mxGeometry relative="1" as="geometry" /></mxCell><mxCell id="e41" value="" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;endArrow=block;strokeColor=#4B3A31;fontFamily=Arial;fontSize=12;fontColor=#2D2520;" edge="1" parent="1" source="products_get" target="products_action"><mxGeometry relative="1" as="geometry" /></mxCell><mxCell id="e42" value="" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;endArrow=block;strokeColor=#4B3A31;fontFamily=Arial;fontSize=12;fontColor=#2D2520;" edge="1" parent="1" source="products_action" target="products_save"><mxGeometry relative="1" as="geometry" /></mxCell><mxCell id="e43" value="" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;endArrow=block;strokeColor=#4B3A31;fontFamily=Arial;fontSize=12;fontColor=#2D2520;" edge="1" parent="1" source="products_save" target="products_end"><mxGeometry relative="1" as="geometry" /></mxCell><mxCell id="e44" value="" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;endArrow=block;strokeColor=#4B3A31;fontFamily=Arial;fontSize=12;fontColor=#2D2520;" edge="1" parent="1" source="stockin" target="stockin_input"><mxGeometry relative="1" as="geometry" /></mxCell><mxCell id="e45" value="" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;endArrow=block;strokeColor=#4B3A31;fontFamily=Arial;fontSize=12;fontColor=#2D2520;" edge="1" parent="1" source="stockin_input" target="stockin_save"><mxGeometry relative="1" as="geometry" /></mxCell><mxCell id="e46" value="" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;endArrow=block;strokeColor=#4B3A31;fontFamily=Arial;fontSize=12;fontColor=#2D2520;" edge="1" parent="1" source="stockin_save" target="stock_update"><mxGeometry relative="1" as="geometry" /></mxCell><mxCell id="e47" value="" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;endArrow=block;strokeColor=#4B3A31;fontFamily=Arial;fontSize=12;fontColor=#2D2520;" edge="1" parent="1" source="stock_update" target="stockin_end"><mxGeometry relative="1" as="geometry" /></mxCell><mxCell id="e48" value="" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;endArrow=block;strokeColor=#4B3A31;fontFamily=Arial;fontSize=12;fontColor=#2D2520;" edge="1" parent="1" source="prediction" target="recipe_get"><mxGeometry relative="1" as="geometry" /></mxCell><mxCell id="e49" value="" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;endArrow=block;strokeColor=#4B3A31;fontFamily=Arial;fontSize=12;fontColor=#2D2520;" edge="1" parent="1" source="recipe_get" target="recipe_input"><mxGeometry relative="1" as="geometry" /></mxCell><mxCell id="e50" value="" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;endArrow=block;strokeColor=#4B3A31;fontFamily=Arial;fontSize=12;fontColor=#2D2520;" edge="1" parent="1" source="recipe_input" target="calc_needs"><mxGeometry relative="1" as="geometry" /></mxCell><mxCell id="e51" value="" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;endArrow=block;strokeColor=#4B3A31;fontFamily=Arial;fontSize=12;fontColor=#2D2520;" edge="1" parent="1" source="calc_needs" target="stock_check"><mxGeometry relative="1" as="geometry" /></mxCell><mxCell id="e52" value="Ya" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;endArrow=block;strokeColor=#4B3A31;fontFamily=Arial;fontSize=12;fontColor=#2D2520;" edge="1" parent="1" source="stock_check" target="consume"><mxGeometry relative="1" as="geometry" /></mxCell><mxCell id="e53" value="Tidak" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;endArrow=block;strokeColor=#4B3A31;fontFamily=Arial;fontSize=12;fontColor=#2D2520;" edge="1" parent="1" source="stock_check" target="stock_low"><mxGeometry relative="1" as="geometry" /></mxCell><mxCell id="e54" value="" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;endArrow=block;strokeColor=#4B3A31;fontFamily=Arial;fontSize=12;fontColor=#2D2520;" edge="1" parent="1" source="consume" target="usage_save"><mxGeometry relative="1" as="geometry" /></mxCell><mxCell id="e55" value="" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;endArrow=block;strokeColor=#4B3A31;fontFamily=Arial;fontSize=12;fontColor=#2D2520;" edge="1" parent="1" source="usage_save" target="pred_end"><mxGeometry relative="1" as="geometry" /></mxCell><mxCell id="e56" value="" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;endArrow=block;strokeColor=#4B3A31;fontFamily=Arial;fontSize=12;fontColor=#2D2520;" edge="1" parent="1" source="reports" target="reports_get"><mxGeometry relative="1" as="geometry" /></mxCell><mxCell id="e57" value="" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;endArrow=block;strokeColor=#4B3A31;fontFamily=Arial;fontSize=12;fontColor=#2D2520;" edge="1" parent="1" source="reports_get" target="reports_show"><mxGeometry relative="1" as="geometry" /></mxCell><mxCell id="e58" value="" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;endArrow=block;strokeColor=#4B3A31;fontFamily=Arial;fontSize=12;fontColor=#2D2520;" edge="1" parent="1" source="reports_show" target="reports_end"><mxGeometry relative="1" as="geometry" /></mxCell><mxCell id="e59" value="" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;endArrow=block;strokeColor=#4B3A31;fontFamily=Arial;fontSize=12;fontColor=#2D2520;" edge="1" parent="1" source="settings" target="settings_action"><mxGeometry relative="1" as="geometry" /></mxCell><mxCell id="e60" value="" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;endArrow=block;strokeColor=#4B3A31;fontFamily=Arial;fontSize=12;fontColor=#2D2520;" edge="1" parent="1" source="settings_action" target="change_pass"><mxGeometry relative="1" as="geometry" /></mxCell><mxCell id="e61" value="" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;endArrow=block;strokeColor=#4B3A31;fontFamily=Arial;fontSize=12;fontColor=#2D2520;" edge="1" parent="1" source="change_pass" target="logout"><mxGeometry relative="1" as="geometry" /></mxCell><mxCell id="e62" value="" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;endArrow=block;strokeColor=#4B3A31;fontFamily=Arial;fontSize=12;fontColor=#2D2520;entryX=0;entryY=0.5;entryDx=0;entryDy=0;exitX=0;exitY=0.5;exitDx=0;exitDy=0;" edge="1" parent="1" source="login_retry" target="input_login"><mxGeometry relative="1" as="geometry" /></mxCell>
<mxCell id="e63" value="" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;endArrow=block;strokeColor=#4B3A31;fontFamily=Arial;fontSize=12;fontColor=#2D2520;entryX=1;entryY=0.5;entryDx=0;entryDy=0;exitX=1;exitY=0.5;exitDx=0;exitDy=0;" edge="1" parent="1" source="account_retry" target="input_email"><mxGeometry relative="1" as="geometry" /></mxCell>
<mxCell id="e64" value="" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;endArrow=block;strokeColor=#4B3A31;fontFamily=Arial;fontSize=12;fontColor=#2D2520;entryX=1;entryY=0.5;entryDx=0;entryDy=0;exitX=1;exitY=0.5;exitDx=0;exitDy=0;" edge="1" parent="1" source="otp_retry" target="input_otp"><mxGeometry relative="1" as="geometry" /></mxCell>
<mxCell id="e65" value="" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;endArrow=block;strokeColor=#4B3A31;fontFamily=Arial;fontSize=12;fontColor=#2D2520;entryX=0.5;entryY=1;entryDx=0;entryDy=0;" edge="1" parent="1" source="reset_ok" target="login_page"><mxGeometry relative="1" as="geometry" /></mxCell>
</root></mxGraphModel></diagram></mxfile>