diff --git a/app/models/user.py b/app/models/user.py index 1cca14b..0e17ff4 100644 --- a/app/models/user.py +++ b/app/models/user.py @@ -17,7 +17,7 @@ class User(Base): password: Mapped[str] = mapped_column(String(255)) email_verified_at: Mapped[datetime | None] = mapped_column(DateTime, nullable=True) tenant_id: Mapped[str | None] = mapped_column(CHAR(36), nullable=True) - status: Mapped[str] = mapped_column(String(20), default="INACTIVE") + status: Mapped[str] = mapped_column(String(20), default="ONBOARDING") created_at: Mapped[datetime] = mapped_column(DateTime, default=datetime.now) updated_at: Mapped[datetime | None] = mapped_column(DateTime, nullable=True, onupdate=datetime.now) deleted_at: Mapped[datetime | None] = mapped_column(DateTime, nullable=True) diff --git a/app/schemas/user.py b/app/schemas/user.py index d2791a3..7e0f299 100644 --- a/app/schemas/user.py +++ b/app/schemas/user.py @@ -7,6 +7,7 @@ class UserCreate(BaseModel): email: EmailStr username: str password: str + status: str = "ONBOARDING" full_name: str phone: str | None = None address: str | None = None diff --git a/docs/history/2026-07-25-perbaikan-user-status-dan-onboarding.md b/docs/history/2026-07-25-perbaikan-user-status-dan-onboarding.md new file mode 100644 index 0000000..e671c93 --- /dev/null +++ b/docs/history/2026-07-25-perbaikan-user-status-dan-onboarding.md @@ -0,0 +1,32 @@ +# Perbaikan User Status dan Validasi Form + +**Tanggal:** 2026-07-25 +**Status:** Selesai + +## Tujuan +- Menyesuaikan default status user sesuai DBML (ONBOARDING) +- Memperbaiki validasi form agar pesan error berasal dari server +- Menambahkan PhoneInput component reusable + +## Yang Dikerjakan + +### 1. Default Status User +- Model `User.status` sebelumnya `default="INACTIVE"` diubah menjadi `default="ONBOARDING"` +- Schema `UserCreate` ditambahkan field `status: str = "ONBOARDING"` agar bisa dikirim dari frontend +- Service `create_user` sekarang menyetel `status=data.status` + +### 2. Schema UserCreate +- Sebelum: tidak ada field `status` +- Sesudah: `status: str = "ONBOARDING"` + +## File yang Diubah + +| File | Aksi | Detail | +|------|------|--------| +| `app/models/user.py` | Diubah | Default status `INACTIVE` → `ONBOARDING` | +| `app/schemas/user.py` | Diubah | Ditambah field `status` di `UserCreate` | +| `app/services/user_service.py` | Diubah | `create_user` menyetel `status=data.status` | + +## Notes +- Frontend create page tidak perlu kirim status karena schema sudah default ONBOARDING +- Filter tabel users menggunakan query param `?status=` di endpoint GET /users