200OK
Sistem kitaran hayat dan semakan permohonan untuk perniagaan amanah
Semakan pelbagai meja, dokumen ditandatangani dan peraturan keterlihatan yang ketat untuk perniagaan amanah yang menjual melalui rangkaian ejen.
- Jenis
- Aliran kerja terkawal untuk perniagaan amanah
- Bahagian kami
- Kerjasama rakan kongsi pada pangkalan kod dikongsi. Halaman ini menerangkan sumbangan kami sahaja.
404 Not Found
Apa yang tiada
Sebuah perniagaan produk amanah menjual penempatan melalui rangkaian ejen. Setiap permohonan bergerak daripada draf melalui beberapa meja semakan (pematuhan, pentadbir, pemegang amanah, kewangan, dokumen ditandatangani) kepada kelulusan, penyelesaian, kematangan atau penamatan awal. Komisen, pembayaran, dokumen berkanun dan notis semuanya bergantung pada laluan itu. Yang tiada ialah kitaran hayat yang kekal betul dan boleh diaudit sementara peraturan ketat menentukan siapa boleh melihat apa. Kami bekerja di dalam pangkalan kod dikongsi, bersama pasukan rakan kongsi.
Kekangan
Apa yang perlu dipatuhi oleh sistem, sebelum sebaris kod ditulis.
- Semakan
- Pintu semakan maker-checker, dokumen ditandatangani sebagai rekod KYC, dan langkah yang tidak boleh dibatalkan setelah diambil.
- Peranan
- 19 peranan, setiap satu dengan paparan sendiri bagi rekod yang sama.
- Keterlihatan
- Peraturan keterlihatan yang tegas: ejen melihat setiap nama dan kod downline, jualan rekrut langsung sahaja, dan penyelesai (settlor) mereka sendiri sahaja.
- Cabang
- Pasukan lain menolak ke repositori yang sama, jadi kerja kami dipotong daripada cabang asas remote setiap hari.
- Skema
- Data langsung: perubahan skema ialah SQL yang ditulis tangan, dijalankan oleh pemilik pangkalan data, sesetengahnya sebelum API dideploy.
Sistem
CRM Nuxt berhubung dengan REST API NestJS melalui HTTPS, dengan log masuk JWT dan pengawal peranan. Prisma memetakan API kepada MySQL. Borang diisi daripada templat Handlebars, dipaparkan sebagai PDF oleh Puppeteer dan disimpan dalam storan objek serasi S3, yang dibaca oleh pelayar melalui pautan presigned. E-mel transaksi dan kata laluan sekali guna dihantar melalui penyedia e-mel, bersama pemberitahuan dalam aplikasi. Penjadual menjalankan kerja berasaskan masa seperti penghentian. Modul berisiko dihantar dalam keadaan dimatikan di sebalik flag persekitaran. Perubahan skema bergerak di luar saluran: fail SQL berseksyen, diindeks mengikut urutan ia mesti dijalankan, dan dijalankan secara manual sebelum deployment yang memerlukannya.
CRM → REST API → MySQL, dengan pemaparan PDF, storan objek dan e-mel di sisi API, dan fail SQL dijalankan di luar saluran sebelum setiap deployment.
- Dibina oleh kami
- Data disimpan
- Pihak ketiga
- Luar talian atau luar saluran
Baca lukisan sebagai teks
Bahagian
- 01CRM: skrin staf dan ejen
- 02REST API: JWT, pengawal peranan
- 03Pangkalan data: MySQL melalui Prisma
- 04Pemaparan PDF: templat ke borang
- 05Storan objek: serasi S3
- 06Penjadual: larian ikut masa
- 07E-mel: mel dan kod
- 08Feature flag: mati bermaksud ditolak
- 09Fail SQL: berseksyen, jalan manual
Aliran
- CRM ke REST API: HTTPS
- REST API ke Pangkalan data: pertanyaan
- REST API ke Pemaparan PDF: isi
- Pemaparan PDF ke Storan objek: simpan
- REST API ke Storan objek: muat naik
- CRM ke Storan objek: baca presigned (alternatif atau luar saluran)
- Penjadual ke REST API: jalankan
- REST API ke E-mel: hantar
- Feature flag ke REST API: gate
- Fail SQL ke Pangkalan data: sebelum deploy (alternatif atau luar saluran)
Skrin
Kebanyakan sistem ini berada di sebalik log masuk, jadi skrin utamanya dilukis semula di sini sebagai skematik. Bar menggantikan setiap nama dan angka.
Keputusan
Keputusan kejuruteraan yang membentuk binaan ini, dan sebab setiap satu dibuat.
Lampiran imej melalui daftar, bukan lajur baharu.
Catatan ialah satu lajur, dan fail hanya boleh merujuk kepada satu baris, jadi lampiran dikunci pada jadual, baris dan medan. Daftar pusat mengisytiharkan pasangan mana yang boleh membawa imej, dan peraturan "ditahan daripada" padanya adalah wajib: meninggalkannya menyebabkan kod tidak dapat dikompil.
Kejayaan separa sengaja tidak boleh dicuba semula.
Muat naik berkumpulan mendarat di mana sahaja ia boleh. Cubaan semula akan menduakan fail pada baris yang sudah menerimanya, dan penolakan per baris adalah deterministik, jadi tiada apa yang hilang. Fail dilampirkan hanya pada baris yang berjaya, tidak sekali-kali pada baris yang sekadar dipilih.
Keadaan baharu dan bukan lajur pemegang.
Penghantaran balik pergi kepada pegawai bertanggungjawab (PIC) ejen terlebih dahulu. Keadaan baharu ialah pilihan yang lebih selamat: senarai benar sedia ada menolak keadaan yang tidak dikenalinya, tetapi akan mengabaikan lajur baharu secara senyap.
Modul berisiko dihantar dalam keadaan dimatikan.
Pengendalian penghentian dan kematian berada di sebalik flag. Apabila dimatikan, API menolak permintaan itu.
Skema secara manual, mengikut urutan.
Setiap perubahan ialah fail SQL berseksyen, dan satu indeks menyatakan fail mana dijalankan sebelum deployment mana. Tiada penjana, dan tiada apa-apa ditolak ke pangkalan data dari komputer riba.
200OK
Siap
Sumbangan kami merentasi kitaran hayat: lampiran imej pada catatan, langkah penyelarasan untuk penghantaran balik, pustaka dokumen dengan kunci padam, semakan dua fasa dengan flag lampu isyarat, dan halaman pratonton yang memaparkan setiap mesej sistem dalam kedua-dua saluran e-mel dan dalam aplikasi. Setiap satu dihantar pada cabang dikongsi, bersama kerja pasukan rakan kongsi itu sendiri.
| Angka | Apa yang dikira |
|---|---|
| 14 | keadaan dalam kitaran hayat permohonan |
| 5 | pintu semakan pada jualan, ditambah satu untuk KYC ejen |
| 19 | peranan pengguna |
| 48 | fail skema SQL yang ditulis tangan |
| 387 | fail spesifikasi ujian |
Dibina dengan
- NestJS
- Prisma
- MySQL
- Nuxt 4
- Tailwind CSS
- DaisyUI
- Puppeteer
- Handlebars
- Storan serasi S3
- Swagger
- Jest