Files
portal-api/memory/project_activity_log.md

40 lines
2.3 KiB
Markdown

---
name: Activity Log System
description: Hệ thống ghi log toàn diện mọi hành động trên portal - đã implement 2026-05-16
type: project
---
Đã implement comprehensive activity log system ghi tất cả hành động create/update/delete/restore/login/logout cho cả admin và customer.
**Files đã tạo:**
- `database/migrations/2026_05_16_000001_create_activity_logs_table.php`
- `app/Models/ActivityLog.php`
- `app/Services/ActivityLogger.php` (singleton service)
- `app/Traits/LogsActivity.php` (trait gắn vào Eloquent model)
- `app/Repositories/ActivityLog/ActivityLogRepositoryInterface.php`
- `app/Repositories/ActivityLog/ActivityLogRepository.php`
- `app/Http/Controllers/Api/Admin/ActivityLog/ActivityLogController.php`
**Models đã gắn trait LogsActivity:** Customer, Order, Invoice, Transaction, Service, Payment, VirtualMachines, ModuleVmware, ModuleHosting, ModuleDomain, IpPool, ModuleSnapshot, DnsDomain, DnsRecord, DnsServer, ModuleIpAddress, Product, Bank, User, Ticket, Addon, Discount
**Auth logging:** Admin AuthController + Client ClientController đã log login/logout/login_failed/register
**Customer endpoint logging (explicit calls, ngoài trait):**
- `ClientController`: register, login, logout
- `OrderController`: storeOrder, payOrder, retryOrderProvisioning, updateClientServiceAutoRenew, renewService
- `VmController`: powerOn, powerOff, changeIp, changePort, restart, changePassword
- `SnapshotController`: store, revert, destroy
- `VmRebuildController`: rebuild, upgradeAddons
- `ManualDepositController`: prepare, cancel, confirm
- `TransactionController`: handle (tạo VNPay), returnCallback (VNPay success)
**API Endpoints (admin):**
- `GET /api/v1/administrator/activity-logs` — danh sách log với filter
- `GET /api/v1/administrator/activity-logs/modules` — danh sách module names
- `GET /api/v1/administrator/activity-logs/{id}` — chi tiết 1 log
**Filter params:** log_name, event, causer_type (admin/customer/system), causer_id, causer_name, subject_type, subject_id, ip_address, date_from, date_to, search, per_page
**Why:** User yêu cầu log tất cả hành động từ admin và customer để audit.
**How to apply:** Khi thêm model mới, thêm `use LogsActivity;` vào model. Service ActivityLogger được resolve qua IoC container.