2.3 KiB
2.3 KiB
Modul User / Pengguna
Tanggal: 2026-07-25 Status: Selesai
Tujuan
Membuat modul manajemen pengguna (user) dengan CRUD, mengikuti pola module jenis bisnis (business-types) dan paket (plans).
Yang Dikerjakan
1. Simplify List Users Endpoint
- Sebelum: Menggunakan pagination (
page,limit) dengan response headers - Sesudah: List tanpa pagination, mendukung filter
status(opsional) - Mengikuti pola yang sama seperti business-types dan plans
2. Update UserProfile Model
- Hapus: field
timezone - Tambah: field
address(Text),pob(String 100),dob(Date) - Update schema, service, auth router, factory, seeder
3. Frontend CRUD Users
- Halaman baru
/admin/usersdengan DataTable, filter, create/edit dialog, delete - Form create/edit: email, username, password, full_name, phone, address, pob, dob
File yang Diubah
| File | Aksi | Detail |
|---|---|---|
api/app/models/user_profile.py |
Diubah | Hapus timezone, tambah address, pob, dob |
api/app/schemas/user.py |
Diubah | Update UserCreate, UserUpdate, UserProfileResponse |
api/app/services/user_service.py |
Diubah | Update create_user, profile_fields |
api/app/routers/auth.py |
Diubah | Hapus timezone dari register & google-login |
api/app/factories/user_profile_factory.py |
Diubah | Hapus timezone |
api/app/seeders/user_seeder.py |
Diubah | Hapus timezone |
api/app/services/user_service.py |
Diubah | Update get_user_list (tanpa pagination + filter status) |
api/app/routers/users.py |
Diubah | Update GET / tanpa pagination |
api/tests/test_user_service.py |
Diubah | Update test get_user_list |
api/tests/test_user_api.py |
Diubah | Update test list tanpa pagination |
core/app/pages/admin/users/columns.ts |
Dibuat | Column definitions untuk tabel users |
core/app/pages/admin/users/index.vue |
Dibuat | Halaman CRUD users (list, create, edit, delete) |
core/app/components/AppSidebar.vue |
Diubah | Tambah menu "Pengguna" dengan icon Users |
Notes
- Migrasi DB:
ALTER TABLE user_profiles DROP COLUMN timezone, ADD COLUMN address TEXT, ADD COLUMN pob VARCHAR(100), ADD COLUMN dob DATE; - Menggunakan field
statusyang sudah ada (ACTIVE/INACTIVE) untuk menampilkan status