Files
portal-api/docs/admin-folder-usage.md
2026-06-15 09:11:57 +07:00

122 lines
5.7 KiB
Markdown

# Báo cáo sử dụng folder `app/Http/Controllers/admin`
Ngày kiểm tra: 2026-06-01
Phạm vi quét: toàn bộ `portal/` (routes, controllers, services, repositories, jobs, configs, seeders, …).
## Kết luận nhanh
> Folder `app/Http/Controllers/admin` **gần như là legacy/không còn được dùng**.
> Toàn bộ chức năng admin đã được migrate sang REST API namespace mới `App\Http\Controllers\Api\Admin\*` (xem comment trong `routes/web.php` dòng 12, 18).
>
> **Chỉ duy nhất 1 file** trong folder `admin/` còn được tham chiếu bởi code ngoài folder:
>
> - `app/Http/Controllers/admin/VCenterManagerController.php`
> — được import & dùng tại `routes/api.php:3` cho nhóm route `vcenter-manager/vm/*` (powerOn, powerOff, restart, snapshot, suspend, getPoweredOffVms).
Các file còn lại trong `admin/` **không** được import bởi bất kỳ file PHP nào ngoài chính folder `admin/` (không bởi `routes/api.php`, không bởi `routes/client.php`, không bởi service/repository/job/config/seeder/web.php).
> Lưu ý phương pháp: kiểm tra bằng cách quét toàn bộ chuỗi FQN `App\Http\Controllers\admin\…` trên toàn dự án. Một số controller có tên trùng (ví dụ `CustomerController`, `OrderController`, `PostController`, `SettingController`, `AddonController`, `InvoiceController`, `PaymentController`, `DomainController`, `ProductController`, `ProductCategoryController`) **trùng tên** với các controller mới trong `App\Http\Controllers\Api\Admin\*` hoặc `App\Http\Controllers\Api\Client\*` — các route file chỉ import bản mới, KHÔNG import bản trong `admin/`.
---
## 1) File ĐANG được dùng (1 file)
| File | Nơi dùng | Mục đích |
|---|---|---|
| `admin/VCenterManagerController.php` | `routes/api.php` (line 3 import, group `vcenter-manager` trong `Route::prefix('administrator')`) | Power operations cho VM (power-on/off, restart, snapshot, suspend, lấy danh sách VM tắt nguồn) |
Ghi chú nội bộ: `VCenterManagerController` này cũng được tham chiếu bởi một số file khác trong cùng `admin/` (ví dụ `package/Datacenter.php`, `package/Host.php`, …) — đây là tham chiếu nội bộ trong folder legacy.
---
## 2) File KHÔNG được dùng (toàn bộ phần còn lại)
Không file nào dưới đây được import/sử dụng bởi code ngoài folder `admin/`:
### 2.1. Top-level `admin/` (24 file)
- `AddonController.php`
- `CouponController.php`
- `CustomerController.php`
- `DomainController.php`
- `GroupController.php`
- `InvoiceController.php`
- `LoginController.php`
- `MailController.php`
- `MainController.php`
- `MediaController.php`
- `MenuController.php`
- `ModuleDNSController.php`
- `ModuleHostingController.php`
- `ModuleIPPoolController.php`
- `ModulevCenterController.php`
- `OrderController.php`
- `PaymentController.php`
- `PostController.php`
- `RolesController.php`
- `SettingController.php`
- `SupportController.php`
- `TaskController.php`
- `TemplateController.php`
- `UserController.php`
### 2.2. `admin/package/` (9 file)
- `Datacenter.php`
- `Datastore.php`
- `Folder.php`
- `Group.php`
- `Host.php`
- `IPMapping.php`
- `Network.php`
- `OsVersion.php`
- `SyncController.php`
> Cảnh báo cùng tên: các tên `Datacenter`, `Datastore`, `Folder`, `Host`, `Network`, `Group`, `OsVersion` xuất hiện rất nhiều trong dự án (Models, Repositories, Jobs, Views, configs như `admin-sidebar.php`). **Tuy nhiên** các tham chiếu đó trỏ tới `App\Models\*` / `App\Repositories\*` / `App\View\Components\Module\*`, KHÔNG phải các controller trong `admin/package/`. Đã xác nhận bằng cách grep FQN `App\Http\Controllers\admin\package\…` — không có file nào ngoài folder này import chúng.
### 2.3. `admin/product/` (2 file)
- `ProductCategoryController.php` (đã thay thế bởi `Api/Admin/Product/ProductCategoryController.php` và `Api/Service/ProductCategoryController.php`)
- `ProductController.php` (đã thay thế bởi `Api/Admin/Product/ProductController.php`)
### 2.4. `admin/vm/` (1 file)
- `VirtualMachineController.php`
---
## 3) Đối chiếu nhanh với 2 file route chính
### `routes/client.php`
Không import bất kỳ class nào từ namespace `App\Http\Controllers\admin\*`. Toàn bộ controller đến từ `App\Http\Controllers\Api\Client\*`, `App\Http\Controllers\Api\Service\*`, `App\Http\Controllers\Api\Setting\*`, `App\Http\Controllers\Api\Transaction\*`, `App\Http\Controllers\Api\NotificationController`.
### `routes/api.php`
Chỉ có **1 dòng** import từ `admin/`:
```php
use App\Http\Controllers\admin\VCenterManagerController; // dòng 3
```
Dùng trong group:
```php
Route::prefix('vcenter-manager')
->controller(VCenterManagerController::class)
->group(function () {
Route::post('vm/power-on', 'powerOn');
Route::post('vm/power-off', 'powerOff');
Route::post('vm/restart', 'restart');
Route::post('vm/snapshot', 'snapshot');
Route::post('vm/suspend', 'suspend');
Route::get ('vms/powered-off', 'getPoweredOffVms');
});
```
---
## 4) Đề xuất
1. **Có thể xoá an toàn** toàn bộ folder `app/Http/Controllers/admin/` **trừ** `VCenterManagerController.php`.
2. Hoặc tốt hơn: di chuyển `VCenterManagerController` sang namespace mới `App\Http\Controllers\Api\Admin\VCenter\` cho đồng nhất, rồi xoá toàn bộ folder `admin/`.
3. Trước khi xoá nên:
- Chạy `composer dump-autoload` và test toàn bộ test suite.
- Kiểm tra thêm cache, queue config, scheduled commands, custom artisan command có hardcode tên class không (đã grep — không thấy).
- Kiểm tra Blade views (folder `admin/` views nếu còn) có gọi route name cũ không.