feat: add i18n support for Vietnamese and English
Some checks failed
Tests / PHP 8.3 (push) Has been cancelled
Tests / PHP 8.4 (push) Has been cancelled
Tests / PHP 8.5 (push) Has been cancelled

This commit is contained in:
2026-05-04 10:40:39 +00:00
parent 3a8db5cae6
commit 8c6b71cb8a
64 changed files with 4652 additions and 254 deletions

View File

@@ -0,0 +1,56 @@
# AfterSales CRM - System Assessment & Proposals (Draft)
> **Ngày ghi nhận:** Monday, May 4, 2026
> **Người thực hiện:** Gemini CLI Agent
> **Mục đích:** Ghi lại các nhận định về hệ thống, rủi ro bảo mật và đề xuất nâng cấp để thảo luận sau.
---
## 1. Nhận định Hệ thống (Current Understanding)
- **Kiến trúc:** Laravel 13.6 + Filament 5.6, PHP 8.3. Sử dụng Spatie Permissions cho RBAC.
- **Dữ liệu:** Đã import ~3600 records từ Excel thành công. Sử dụng SQLite làm database.
- **Workflow:** Quy trình Feedback -> Transfer -> Resolve -> Close đã được thiết lập chặt chẽ với các Service chuyên biệt (`ClosingService`, `TransferService`).
- **Tài liệu:** Đã có `AGENTS.md`, `PROGRESS.md`, `TASKS_ROADMAP.md``CODEBASE_SNAPSHOT.md` giúp nắm bắt nhanh trạng thái dự án.
## 2. Rủi ro Bảo mật & An toàn (Security & Safety Risks)
### 2.1. Phạm vi truy cập dữ liệu (Data Visibility)
- **Vấn đề:** `FeedbackPolicy` hiện tại cho phép mọi User có quyền `view-feedback` xem được toàn bộ các phản hồi của tất cả phòng ban.
- **Rủi ro:** Lộ thông tin nhạy cảm giữa các phòng ban.
- **Đề xuất:** Áp dụng Global Scope hoặc Scoping trong Resource để nhân viên chỉ thấy phiếu thuộc phòng ban mình hoặc được giao cho mình.
### 2.2. Bảo mật Backup
- **Vấn đề:** Command `app:export-backup` lưu file JSON (bao gồm hash mật khẩu và thông tin khách hàng) trực tiếp trong `storage/app/backups`.
- **Rủi ro:** Dễ bị đánh cắp nếu folder này bị lộ hoặc server bị chiếm quyền user.
- **Đề xuất:** Mã hóa file backup hoặc đẩy thẳng lên S3 với chính sách bảo mật nghiêm ngặt.
### 2.3. Signed URL trên Local Disk
- **Vấn đề:** `FileService` dùng `temporaryUrl` trên driver `local`.
- **Rủi ro:** Laravel mặc định không hỗ trợ URL tạm thời cho local driver trừ khi được cấu hình thêm. Có thể gây lỗi không xem được ảnh/file trong thực tế.
### 2.4. Tính nhất quán của Logic Đóng phiếu
- **Vấn đề:** Logic kiểm tra `proof_of_resolution` đang nằm rải rác ở Service và một số chỗ trong Filament UI.
- **Rủi ro:** Khó bảo trì và dễ xảy ra sai sót khi cập nhật quy trình.
## 3. Đề xuất Nâng cấp (Proposed Upgrades)
### 3.1. Audit Trail (Lịch sử chi tiết)
- **Mô tả:** Ghi lại chi tiết ai đã sửa cái gì, từ giá trị cũ sang giá trị mới cho tất cả các Model quan trọng (Contract, Feedback, Customer).
- **Công cụ gợi ý:** `spatie/laravel-activitylog`.
### 3.2. Mã hóa dữ liệu (PII Encryption)
- **Mô tả:** Mã hóa các trường thông tin cá nhân (Số điện thoại, Email) trong Database để đảm bảo an toàn nếu database bị leak.
### 3.3. Theo dõi SLA (SLA Tracking)
- **Mô tả:** Thiết lập thời hạn xử lý cho từng loại phản hồi. Cảnh báo (Email/Notification) khi sắp đến hạn hoặc quá hạn.
### 3.4. Gợi ý chuyển phòng thông minh (Smart Suggestion)
- **Mô tả:** Tự động phân tích loại Hợp đồng hoặc Tag để gợi ý "Nên chuyển cho phòng Pháp lý/Kế toán".
### 3.5. Cải tiến Bulk Actions
- **Mô tả:** Cho phép xử lý hàng loạt (Chuyển phòng, Phân công nhân viên) để tối ưu năng suất cho Manager.
## 4. Các câu hỏi thảo luận sau
1. Quy tắc phân quyền xem chéo giữa các phòng ban cụ thể là gì?
2. Hệ thống sẽ chạy Production trên SQLite hay chuyển sang MySQL/PostgreSQL?
3. Có cần tích hợp Chat trực tuyến (Zalo/Messenger) vào hệ thống không?