Init: Hoan thanh kien truc V3 va Filament UI

This commit is contained in:
2026-04-18 02:07:30 +00:00
commit 761b34916b
141 changed files with 15917 additions and 0 deletions

71
dumpdata.md Normal file
View 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`).