**Đó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`).
