📍Skutr Docs — Hari 12. Multi-organisasi

Kemarin — ketepatan hukum prompt dan adaptasi mobile. Hari ini — freelancer tidak lagi terikat pada satu IP.


🏢 Organisasi — entitas terpisah

Dulu detail perusahaan disimpan di profil pengguna. Satu NPWP, satu nama, satu rekening bank. Tapi freelancer bisa menjadi pekerja lepas sebagai Ivanov I.I. untuk pesanan kecil dan sebagai IP Ivanov untuk pesanan besar. Atau menutup IP dan beralih ke pekerja lepas — dokumen lama harus tetap dengan detail sebelumnya.

Saya memisahkan organisasi ke tabel terpisah. 12 kolom, relasi 1:N dengan pengguna, flag 'default'. Migrasi memindahkan data yang ada dari profil ke organisasi pertama secara otomatis — tidak ada satu pun pengguna yang kehilangan data.

CRUD API, halaman manajemen di dashboard, pemilihan organisasi di keempat formulir dokumen. Bot: 'Detail Saya' menjadi 'Organisasi Saya' — daftar dengan ⭐️ di utama, menambah yang baru, beralih di antaranya.



🔀 Memilih organisasi saat membuat dokumen

Jika hanya satu organisasi — semuanya berjalan seperti sebelumnya, pengguna tidak menyadari apa pun. Jika dua atau lebih — sebelum membuat invoice, akta, penawaran, atau kontrak, muncul langkah 'Pilih organisasi pelaksana' dengan tombol inline.
Organisasi yang dipilih diteruskan ke generator dan dicatat dalam dokumen.

Secara arsitektur: _maybe_choose_org() — helper tunggal untuk keempat FSM. Satu pola, empat titik panggilan, nol duplikasi.



✏️ Mengedit semua dokumen di dashboard

Invoice dan akta bisa diedit setelah dibuat. Penawaran dan kontrak — hanya saat dibuat di modal pratinjau. Setelah disimpan — read-only. Kenapa? Karena canEdit hanya memeriksa invoice dan act.

Saya memindahkan logika pengeditan penuh dari modal ke halaman dokumen. Penawaran: judul, pendahuluan, bagian dengan poin, biaya per item dengan perhitungan otomatis, masa berlaku, langkah selanjutnya. Kontrak: pembukaan, bagian dengan paragraf (tambah/hapus), jumlah. Sekarang dokumen yang dibuat dengan suara di bot jam 2 pagi bisa dengan mudah diedit di pagi hari di dashboard.



🧹 Tiga hal kecil yang mengganggu

Lencana tanpa label. Dokumen dari bot melalui 'dokumen cepat' dibuat dengan source='quick'. Frontend hanya tahu 'bot' dan 'web'. 27 dokumen menggantung tanpa label. Saya ubah ke 'bot', perbarui yang sudah ada dengan satu UPDATE.

Navigasi kembali. Masuk ke bagian 'Invoice', buka invoice tertentu, klik 'Ke dokumen' — masuk ke 'Semua'. Sekarang tombol bertuliskan 'Ke invoice' dan kembali ke bagian invoice. Parameter query ?tab=invoice — sederhana dan andal.

Pencarian di bot. Tombol '🔍 Cari dokumen' di 'Dokumen Saya'. Padahal dokumen sudah dibagi per bagian, dan di dashboard ada pencarian lengkap dengan filter. Saya hapus. Lebih sedikit tombol — lebih sedikit beban kognitif.



💡 Wawasan hari ini

Multi-organisasi bukan fitur untuk korporasi. Ini realitas freelancing. Pekerja lepas membuka IP — dan dia membutuhkan kedua set detail. Desainer bekerja sebagai individu untuk klien Rusia dan sebagai IP untuk klien asing. Jika produk mengikat seseorang ke satu badan hukum — produk itu tidak memahami audiensnya.



🎯 Ringkasan hari ini: model Organization dengan CRUD API dan migrasi, pemilihan organisasi di bot jika 2+ org, pengeditan penuh penawaran dan kontrak di dashboard, perbaikan lencana source, navigasi tab, pembersihan UI.



#buildinpublic #skutrdocs #AI #freelance #pekerjale pas #startup #SaaS #produk #UX