Kes 03 · makanan dan minuman

Satu pesanan, satu rekod, dua tetingkap hidangan.

F&B Order Ecosystem ialah sistem pesanan dalaman untuk perniagaan penghantaran makanan di Johor Bahru yang memasak mengikut dua kelompok harian, 1PM dan 8PM. Tuan punya mengambil pesanan dan memasukkannya sekali sahaja. Papan dapur dan mesej kerja Telegram kedua-duanya membaca rekod yang sama, dan setiap langkah membawa nama orang yang mengalihkannya.

← Semua hasil kerja

Pelanggan
Perniagaan penghantaran makanan Johor Bahru (nama dirahsiakan)
Sektor
Makanan dan minuman — penghantaran dan ambil sendiri, dua tetingkap pesanan sehari
Skop kami
Reka bentuk produk, pembinaan aplikasi, papan dapur, lapisan kerja Telegram, laporan, pelaksanaan dan runbook
Teknologi
React · Vite · Supabase Postgres · fungsi dan cron Vercel · Telegram Bot API · pautan dalam WhatsApp · aplikasi web boleh pasang
Kos menjalankan
Penghosan dan pangkalan data peringkat percuma, tiada pelayan untuk dijaga
Skala
Lima orang, dua tetingkap hidangan sehari

Masalahnya

Pesanan masuk melalui telefon dan WhatsApp, dan dapur memasak mengikut dua kelompok sehari. Dengan lima orang dan menu bercetak, empat kegagalan yang sama berulang, dan setiap satu menelan kos sebiji hidangan atau seorang pelanggan:

  • Pesanan dimasak dua kali, atau tidak langsung. Dua orang membaca mesej yang sama dan kedua-duanya mula; atau semua orang menyangka orang lain sudah mengambilnya.
  • Kelompok 8PM dimulakan ketika 1PM masih terbuka. Tiada apa pada kertas yang memberitahu dapur apa yang sebenarnya masih tergantung pada pukul 7:50.
  • "Selesai" tanpa rekod siapa yang melakukannya. Apabila pelanggan menelefon semula, jejaknya ialah benang sembang dan ingatan.
  • Bulan itu dicantum daripada ingatan. Hasil, purata nilai pesanan dan apa yang benar-benar terjual, dijumlahkan semula dengan tangan pada hujung bulan.

Apa yang kami bina

Satu kemasukan, sekali. Pesanan dimasukkan mengikut menu dan kategori, dengan pilihan bagi setiap hidangan yang membawa pelarasan harga sendiri, kuantiti, tanda sudah atau belum dibayar, caj penghantaran, diskaun dan catatan. Nombor telefon yang berulang menarik nama, alamat dan pilihan ambil-sendiri-atau-hantar pelanggan itu daripada pesanan terakhir, jadi pelanggan tetap hanya dua ketukan dan bukan satu perbualan. Nombor pesanan dikeluarkan oleh pangkalan data sebagai F2D-YYYYMMDD-00001 dan bermula semula setiap hari. Satu mod ujian menelusuri seluruh aliran, tidak menulis apa-apa, dan mengalihkan setiap mesej pelanggan kepada pembangun dengan awalan yang jelas.

Papan dapur. Pemasangan berasingan pada telefon dapur, di belakang PIN kakitangan dengan sesi syif dua belas jam. Kad dikumpulkan Baharu, Sedang disediakan, Selesai, dimuat semula setiap lapan saat, dan menunjukkan berapa lama setiap satu menunggu; melebihi dua puluh lima minit, kad bertukar warna lewat. Kerja baharu berbunyi. Ketukan pada kad merekod siapa yang menekannya.

Lapisan Telegram. Inilah bahagian yang membuatkan sistem ini bertahan pada malam yang sibuk. Setiap pesanan baharu menyiarkan mesej kerja ke kumpulan dapur dengan butang Mula sediakan. Ketukan pertama mengambil kerja itu dan menamakan orangnya; orang kedua yang menekan diberitahu ia sudah diambil, dan itulah cara pesanan berhenti dimasak dua kali. Mesej itu kemudian disunting di tempatnya, tidak pernah disiarkan semula, jadi kumpulan tidak dipenuhi butang untuk kerja yang sudah selesai. Sapuan setiap tiga puluh minit memperbaharui mana-mana kerja yang tergantung dua jam — memadam mesej lama dan menyiarkan yang baharu yang menyatakan berapa lama ia menunggu — supaya tiada yang terlupa diam-diam antara tetingkap.

Siapa yang mengalihkannya. Setiap perubahan keadaan melalui satu fungsi pangkalan data yang mengunci baris pesanan, melangkau perubahan yang tidak berubah, dan menulis baris sejarah dengan nama orangnya. "Siapa yang menandakan ini selesai, dan bila" ialah satu pertanyaan, bukan satu ingatan. Fungsi yang sama melayani aplikasi dan butang Telegram, jadi kedua-dua permukaan tidak boleh bercanggah.

Tutup hari, dan bulan. Paparan hari memberi pesanan, hasil, diskaun dan kiraan mengikut keadaan. Paparan bulan memberi hasil, purata nilai pesanan, carta harian, waktu puncak dan hidangan teratas, dengan eksport CSV dan PDF untuk akauntan.

Kekal hidup. Syot kilat harian pesanan, baris, menu dan tetapan ke dalam jadual sandaran dengan retensi sembilan puluh hari; ping keepalive harian supaya pangkalan data peringkat percuma tidak pernah terhenti kerana tidak aktif; dan runbook untuk empat kegagalan yang benar-benar berlaku — pangkalan data terhenti, bot senyap, webhook mati, mesej basi. Keseluruhan sistem — aplikasi pengurus, papan dapur dan enam fungsi serverless — kira-kira 7,400 baris kod tulisan tangan.

Keputusan yang penting

  1. Telegram, bukan satu lagi aplikasi. Dapur sudah pun mempunyai Telegram pada telefon mereka. Mesej kerja dengan satu butang ialah alat yang mereka guna pada malam pertama; aplikasi asli untuk lima orang hanya akan menjadi produk yang lebih lemah pada kos sepuluh kali ganda.
  2. Satu tuntutan, satu pemilik. Mengambil kerja itu eksklusif dan bernama. Dua orang memulakan pesanan yang sama ialah kos tanpa faedah, dan penyelesaiannya ialah peraturan dalam mesej, bukan latihan.
  3. Sunting mesej, jangan siarkan yang baharu. Mesej kerja ditulis semula di tempatnya apabila keadaan berubah, jadi pesanan yang selesai tidak pernah menyimpan butang Mula sediakan yang masih hidup. Sapuan berjadual menggantikan mesej yang sudah senyap.
  4. Peringatan dari luar platform. Fungsi berjadual peringkat percuma berjalan sekali sehari, dan itu bukan irama yang diperlukan dapur. Tik tiga puluh minit itu duduk dalam aliran kerja berjadual berasingan, dengan komitmen bulanan supaya jadual tidak pernah dimatikan kerana tidak aktif.
  5. Murah dijalankan ialah matlamat reka bentuk. Pangkalan data terurus, bahagian hadapan statik, fungsi serverless, tiada API pemesejan berbayar. Tiada pelayan untuk ditampal oleh tuan punya, dan bil bulanan ialah domain.

Apa yang belum ada

Pelanggan tidak membuat pesanan melaluinya: tiada kedai maya awam, dan pesanan masih masuk melalui telefon dan WhatsApp. Akses ialah pintu PIN dan bukan akaun bagi setiap orang — mencukupi untuk lima orang yang dipercayai pada alat dalaman, dan ia perlu menjadi pengesahan sebenar sebelum sistem ini berhadapan dengan pelanggan. Tiada pencetak resit, tiada potongan stok pada peringkat resipi, dan tiada integrasi perakaunan; eksport CSV dan PDF ialah titik penyerahannya. Satu cawangan, satu mata wang, tiada penyatuan berbilang cawangan.

Ujian yang kami bina: pada pukul 7:50 dapur dapat melihat dengan tepat apa yang masih terbuka, dan siapa yang memegangnya.

Ada yang serupa di pihak anda?

Jika pasukan anda menyelaras melalui telefon dan sembang, dan rekod apa yang berlaku hidup di dalam benang, itu sistem kecil dengan pulangan yang cepat.