- Thêm status 'Damaged' (Hư hỏng) vào SmartAddForm và ItemDetailDialog
- Thêm checkbox 'Không bảo hành' vào SmartAddForm
- Ẩn field 'Other' trong ViewMode nếu giá trị trống
- Cập nhật màu badge: orange-500 cho Damaged
- Thêm src/lib/imageUtils.ts với optimizeImage()
- Resize ảnh về tối đa 800x800px, convert sang WebP
- Giảm dung lượng 70-90% so với ảnh gốc
- Áp dụng cho SmartAddForm và ItemDetailDialog
- Backup không bị ảnh hưởng (ảnh đã optimize lưu trong DB)
- lendItem, returnItem, bulkLendItems: fire-and-forget cho logActivity và triggerWebhooks
- createItem, updateItem, bulkMoveItems: áp dụng tương tự
- Fix lint errors trong next.config.ts và prisma/seed.ts
- Giảm response time từ ~4s xuống <1s
## UI/UX
- Sửa layout Dialog chi tiết trên Mobile (tránh rớt chữ Bluetooth/Receiver)
- Thêm logic tính toán thời gian sử dụng (⏱️ X năm Y tháng)
- Thêm break-words/break-all cho các trường text dài
## Code Quality
- Sửa lỗi ESLint và TypeScript trong src/app/actions.ts
- Loại bỏ các any type không an toàn
- Cải thiện xử lý lỗi (unknown type + instanceof Error)
## Thay đổi chính:
### UI/UX
- Sửa lỗi Dark Mode trong LocationManager và SmartAddForm
- Tối ưu Header, InventoryManager và UserMenu cho Mobile
- Cải thiện độ tương phản và layout responsive
### Sửa lỗi ESLint
- Sửa lỗi truy cập biến trước khai báo trong settings/page.tsx
- Thay thế any type bằng kiểu cụ thể
- Xóa import không sử dụng
### Docker & Database
- Bổ sung .dockerignore loại trừ file SQLite
- Cập nhật db.ts bắt buộc DATABASE_URL trong production
- Thêm document hướng dẫn triển khai Docker
### Tài liệu
- Thêm docs/DOCKER_DEPLOYMENT.md