Log Dev: MCP, Penjejakan Emel, dan Struktur Menu
Saya menghabiskan hari ini membina pelayan MCP, penjejakan emel automatik, dan menu admin yang boleh diskalakan.
Berikut adalah pengajaran utama daripada kerja tersebut.
Keselamatan Pelayan MCP
Saya telah melancarkan kotak peralatan MCP generik dan melancarkan pelayan merentasi beberapa aplikasi perusahaan. Apabila membina ejen yang boleh berinteraksi dengan sistem anda, ikut peraturan ini:
- Berikan ejen alatan bacaan secara bebas.
- Berikan alatan penulisan secara berhemah.
- Wajibkan setiap tindakan penulisan melalui runbook yang memerlukan pengesahan manusia.
- Hash kata laluan dalam alatan
create-useranda. Jangan sekali-kali simpan dalam bentuk teks biasa (plaintext). - Gunakan UUID awam untuk log audit. Jangan sesekali mendedahkan ID pangkalan data dalaman.
- Gunakan sandaran (fallback) untuk konteks pengguna. Ejen mungkin menggunakan HTTP atau STDIO. Pastikan kod anda mengendalikan kedua-duanya.
Penjejakan Emel Tanpa Kerja Manual
Saya membina sistem yang menjejak pembukaan dan klik emel secara automatik. Jangan paksa pembangun menambah piksel penjejakan pada setiap emel. Sebaliknya, gunakan pendengar (listener) penghantaran emel.
- Pendengar tersebut memintas mesej.
- Ia menyuntik piksel penjejakan ke dalam HTML.
- Ia membungkus semua pautan untuk penjejakan klik.
- Ia menambah hash metadata untuk korelasi yang mudah.
Dua nota penting:
- Elakkan
Mail::raw(). Ia melangkau laluan penulisan semula HTML. Gunakan HTML Mailables yang betul untuk memastikan penjejakan berfungsi. - Tetapkan penjejakan kepada "on" secara lalai (default). Jika pengguna perlu mengaktifkannya, mereka akan terlupa.
Menu Admin yang Boleh Diskalakan
Apabila anda menguruskan menu merentasi pelbagai aplikasi, jangan gunakan satu fail yang besar. Gunakan kelas pembina (builder classes) yang kecil untuk setiap kumpulan.
- Cipta satu kelas bagi setiap kumpulan (cth., Tetapan, Pengurusan Pengguna).
- Setiap kelas mengisytiharkan item dan kebenaran (permissions) yang diperlukan sendiri.
- Ini memastikan navigasi anda bersifat deklaratif.
- Pendekkan (truncate) label yang panjang di dalam komponen, bukan pada setiap item.
- Hadkan alatan melalui dua semakan: kebenaran pengguna dan edisi aplikasi tertentu.
Gambaran Lebih Besar
Matlamatnya adalah untuk menjadikan jaring keselamatan (safety net) bersifat automatik.
Jika alat diagnostik itu berguna, aktifkan ia secara lalai. Jika anda perlu ingat untuk mengaktifkannya, anda tidak akan mempunyainya apabila sistem gagal pada jam 2 pagi. Kodkan pengajaran anda ke dalam alatan anda supaya anda tidak perlu mempelajarinya semula.