113 lines
3.4 KiB
Markdown
113 lines
3.4 KiB
Markdown
# HQLAND - HƯỚNG DẪN PHIÊN LÀM VIỆC TIẾP THEO
|
|
|
|
> File này giúp AI Agent nhanh chóng bắt nhịp khi bạn chuyển sang máy tính khác.
|
|
> **Cập nhật:** 28/04/2026
|
|
|
|
---
|
|
|
|
## 1. NHỮNG GÌ VỪA HOÀN THÀNH
|
|
|
|
### ✅ Module mới: Sales Phases (Đợt mở bán)
|
|
- **Models:** `SalesPhase`, `SalesPhaseProduct` (pivot)
|
|
- **Migration:** `sales_phases`, `sales_phase_products`, `add_sales_phase_id_to_contracts`
|
|
- **SalesPhaseResource:** Form + Table + Pages đầy đủ (Schemas)
|
|
- **ContractForm:** Chọn `sales_phase_id` → auto-populate giá từ pivot
|
|
- **CreateContract:** Fallback lấy `paymentTemplate` từ `salesPhase` nếu HĐ không chọn template trực tiếp
|
|
- **Product/Project models:** Thêm relationships với SalesPhase
|
|
|
|
### ✅ Kiến trúc cũ vẫn giữ nguyên
|
|
- Calculation Pipeline, Form Templates, Payment/Finance modules
|
|
- Dashboard widgets, PaymentFine/Appendix/Settlement Resources
|
|
- 9 tests passing
|
|
|
|
---
|
|
|
|
## 2. CẤU HÌNH DATABASE
|
|
|
|
### Chạy migrate (NẾU CHƯA CHẠY)
|
|
```bash
|
|
DB_HOST=127.0.0.1 php artisan migrate --force
|
|
```
|
|
|
|
---
|
|
|
|
## 3. TEST
|
|
|
|
```bash
|
|
DB_HOST=127.0.0.1 ./vendor/bin/pest
|
|
```
|
|
|
|
---
|
|
|
|
## 4. VIỆC CẦN LÀM TIẾP THEO
|
|
|
|
- [ ] **Notification:** Cảnh báo đợt thanh toán sắp đến hạn
|
|
- [ ] **Export Excel:** Báo cáo công nợ khách hàng
|
|
- [ ] **In ấn thực tế:** Tích hợp MailMergeService với action "In" trong ContractResource
|
|
|
|
---
|
|
|
|
## 5. TÀI KHOẢN
|
|
|
|
- **Email:** admin@phuongtc.com
|
|
- **Password:** 1Qazxsw2@!321
|
|
|
|
---
|
|
|
|
*Commit ngay lập tức trước khi tắt máy!*
|
|
|
|
---
|
|
|
|
## PHIÊN TIẾP THEO - PHÂN QUYỀN (CÒN DỞ)
|
|
|
|
### Đã có:
|
|
- [x] Migration: permission_modules, role_templates, users columns
|
|
- [x] Models: PermissionModule, RoleTemplate
|
|
- [x] Command: `php artisan permissions:sync`
|
|
- [x] User Model: getEffectivePermissions(), hasEffectivePermission(), can() override
|
|
- [x] RoleTemplateResource: Form + Table + Pages (UI tạo mẫu nhóm)
|
|
- [x] UserResource: Form + Table + Pages (UI gán quyền user)
|
|
- [x] permissionActions trong 10 Resource
|
|
|
|
### CHƯA CÓ (Ưu tiên):
|
|
1. [ ] Áp dụng can() checks vào TẤT CẢ Resource
|
|
- Chưa có canViewAny(), canCreate(), canEdit(), canDelete()... trong Resource
|
|
- Cần thêm vào hoặc tạo base trait để auto check
|
|
- Hiện tại tất cả user vẫn full quyền!
|
|
|
|
2. [ ] Tạo seeder/sample data cho role_templates
|
|
- Admin: full quyền
|
|
- Sales: contracts CRUD, customers CRUD, products view
|
|
- Kế toán: payments CRUD, contracts view, reports view
|
|
|
|
3. [ ] Test User::can() override hoạt động đúng
|
|
- Login → tính effective permissions → lưu session
|
|
- Logout → xóa session
|
|
- can('contracts.create') → true/false đúng
|
|
|
|
### Cách áp dụng can() vào Resource (gợi ý):
|
|
```php
|
|
// Trong mỗi Resource class
|
|
public static function canViewAny(): bool
|
|
{
|
|
return auth()->user()?->can('contracts.view') ?? false;
|
|
}
|
|
public static function canCreate(): bool
|
|
{
|
|
return auth()->user()?->can('contracts.create') ?? false;
|
|
}
|
|
public static function canEdit($record): bool
|
|
{
|
|
return auth()->user()?->can('contracts.update') ?? false;
|
|
}
|
|
public static function canDelete($record): bool
|
|
{
|
|
return auth()->user()?->can('contracts.delete') ?? false;
|
|
}
|
|
```
|
|
|
|
### Lưu ý:
|
|
- Không chạy `php artisan permissions:sync` tự động (chạy tay khi thêm module)
|
|
- Action mới mặc định TẮT
|
|
- Layout RoleTemplateForm đã fix full width
|