Init: Hoan thanh kien truc V3 va Filament UI
This commit is contained in:
71
dumpdata.md
Normal file
71
dumpdata.md
Normal file
@@ -0,0 +1,71 @@
|
||||
**Đóng vai:** Bạn là chuyên gia Laravel 13.5. **Nhiệm vụ:** Tạo Factories và DatabaseSeeder để sinh dữ liệu mẫu cho hệ thống HQLand (Sử dụng UUID làm khóa chính).
|
||||
|
||||
**Thực hiện các bước sau:**
|
||||
|
||||
**Bước 1: Tạo ProjectFactory** Chạy lệnh tạo factory và viết code cho `database/factories/ProjectFactory.php`:
|
||||
|
||||
- `name`: Tên dự án ngẫu nhiên (VD: "Khu đô thị HQLand Alpha", "Chung cư HQLand Beta").
|
||||
|
||||
- `type`: Random giữa ['Khu đô thị', 'Chung cư', 'Đất nền phân lô'].
|
||||
|
||||
- `address`: Địa chỉ ngẫu nhiên.
|
||||
|
||||
**Bước 2: Tạo ProductFactory** Chạy lệnh tạo factory và viết code cho `database/factories/ProductFactory.php`:
|
||||
|
||||
- `project_id`: Lấy ngẫu nhiên từ Project::factory().
|
||||
|
||||
- `product_type`: Random ['LAND', 'APARTMENT'].
|
||||
|
||||
- `code`: Random mã lô chữ hoa (VD: 'STH-'.fake()->unique()->randomNumber(4)).
|
||||
|
||||
- `area`: Random float từ 50 đến 200.
|
||||
|
||||
- `price_per_unit`: Random từ 20 triệu đến 100 triệu.
|
||||
|
||||
- `total_price`: `area` * `price_per_unit`.
|
||||
|
||||
- `custom_data`: Trả về mảng JSON tùy theo `product_type`. Nếu LAND: có `frontage`, `road_width`. Nếu APARTMENT: có `block`, `floor`, `view`.
|
||||
|
||||
- `status`: 'Đang mở bán'.
|
||||
|
||||
**Bước 3: Tạo CustomerFactory** Chạy lệnh tạo factory và viết code cho `database/factories/CustomerFactory.php`:
|
||||
|
||||
- `full_name`: fake()->name().
|
||||
|
||||
- `cmnd_cccd`: fake()->unique()->numerify('0##########').
|
||||
|
||||
- `phone`: fake()->phoneNumber().
|
||||
|
||||
- `email`: fake()->safeEmail().
|
||||
|
||||
- `address`: Trả về mảng JSON gồm `street`, `ward`, `district`, `city`.
|
||||
|
||||
- `dob`: fake()->date().
|
||||
|
||||
**Bước 4: Tạo ContractFactory** Chạy lệnh tạo factory và viết code cho `database/factories/ContractFactory.php`:
|
||||
|
||||
- `product_id`: Product::factory().
|
||||
|
||||
- `contract_number`: 'HDMB-'.fake()->unique()->randomNumber(5).
|
||||
|
||||
- `total_value`: Lấy từ total_price của Product tương ứng.
|
||||
|
||||
- `paid_amount`: Random một số nhỏ hơn total_value.
|
||||
|
||||
- `contract_type`: 'HĐMB'.
|
||||
|
||||
- `transfer_order`: 0.
|
||||
|
||||
**Bước 5: Viết kịch bản tại DatabaseSeeder** Mở file `database/seeders/DatabaseSeeder.php` và viết code vào hàm `run()` để:
|
||||
|
||||
1. Xóa sạch dữ liệu cũ (nếu có).
|
||||
|
||||
2. Tạo 1 tài khoản Admin mặc định (email: admin@phuongtc.com, pass: 1Qazxsw2@!321) nếu chưa có.
|
||||
|
||||
3. Tạo 3 Dự án (Projects).
|
||||
|
||||
4. Mỗi dự án tạo 15 Sản phẩm (Products).
|
||||
|
||||
5. Tạo 20 Khách hàng (Customers).
|
||||
|
||||
6. Lấy 10 Khách hàng đầu tiên, mỗi người tạo 1 Hợp đồng (Contracts) gắn ngẫu nhiên với 10 Sản phẩm khác nhau. (Nhớ attach cả vào bảng trung gian `contract_customers`).
|
||||
Reference in New Issue
Block a user