Phiên bản 2026.3.0
Nhật ký phát hành 2026.3.0
Phiên bản 2026.3.0 là bản phát hành lớn đầu tiên sử dụng Calendar Versioning (CalVer). Dưới đây là tổng hợp đầy đủ các thay đổi.
Calendar Versioning (CalVer)
Từ phiên bản này, iSPA CMS áp dụng định dạng CalVer: YYYY.MM.PATCH.
- Tệp
VERSIONở thư mục gốc là nguồn duy nhất cho phiên bản hệ thống. - Hai lệnh artisan mới:
cms:versionvàcms:bump. - Tất cả 18 module được đồng bộ phiên bản
2026.03.0trong cảmodule.jsonvàcomposer.json.
# Hiển thị phiên bản hiện tại
php artisan cms:version
# Xuất dạng JSON
php artisan cms:version --json
# Tăng phiên bản patch
php artisan cms:bump patch
# Chạy thử (không ghi tệp)
php artisan cms:bump patch --dry-run
Nâng cấp Laravel 12
Framework cốt lõi được nâng cấp từ Laravel 11.48.0 lên Laravel 12.55.0.
Thay đổi gói phụ thuộc
| Gói | Trước | Sau |
|---|---|---|
laravel/framework | 11.48.0 | 12.55.0 |
openai-php/laravel | 0.10.2 | 0.19.1 |
laravel/sanctum | — | ^4.0 |
laravel/telescope | — | ^5.0 |
Lỗi đã sửa trong quá trình nâng cấp
- GuuXeCrawler: Loại bỏ trùng lặp tên route trong nhóm API v5.
- Education: Loại bỏ trùng lặp tên route trong nhóm v5.
- routes/api.php: Xóa
->name('login')trùng lặp từ API fallback.
Kết quả kiểm tra
- Pipeline build:
config:cache,route:cache,view:cache,event:cache,pnpm build— tất cả đạt. - Test: 188 đạt, 110 lỗi (cùng baseline với L11, không có regression).
Hỗ trợ PostgreSQL
Phiên bản này thêm hỗ trợ PostgreSQL 16 song song với MySQL/MariaDB.
Kiến trúc cơ sở dữ liệu kép
- MySQL/MariaDB — mặc định cho CMS (
DB_CONNECTION=mysql). - PostgreSQL — cho hệ thống Game (
GAME_DB_CONNECTION=pgsql).
Cấu hình Docker
services:
pgsql:
image: 'postgres:16'
profiles:
- pgsql
ports:
- '${FORWARD_PGSQL_PORT:-5432}:5432'
Kích hoạt với: COMPOSE_PROFILES=pgsql docker-compose up
18 Module
Hệ thống module đầy đủ bao gồm 18 module, tất cả đồng bộ phiên bản 2026.03.0.
Module CMS cốt lõi
| Module | Alias | Mô tả |
|---|---|---|
| Core | core | Chức năng CMS thiết yếu |
| Content | content | Bài viết, trang, media |
| Ecommerce | ecommerce | Đơn hàng, giỏ hàng, thanh toán |
| Education | education | Sinh viên, giảng viên, đánh giá |
| Product | product | Danh mục, SKU, thương hiệu |
| RealEstate | real-estate | Bất động sản, dự án |
| CmsManagement | cmsmanagement | Quản lý tên miền |
| GuuXeCrawler | guuxescrapling | Pipeline crawl dữ liệu web |
Module Game
| Module | Alias | Mô tả |
|---|---|---|
| GameAdmin | gameadmin | Quản trị game |
| GameAuth | gameauth | Xác thực game |
| GameCore | gamecore | Hệ thống game cốt lõi |
| GameEconomy | gameeconomy | Kinh tế, ví, tiền tệ |
| GameInventory | gameinventory | Kho đồ người chơi |
| GameLeaderboard | gameleaderboard | Bảng xếp hạng |
| GameLiveOps | gameliveops | Vận hành trực tiếp |
| GameMarketplace | gamemarketplace | Chợ P2P |
| GamePlayer | gameplayer | Hồ sơ người chơi |
| GameRun | gamerun | Phiên game |
Lệnh Artisan mới
Quản lý phiên bản
cms:version [--json] # Hiển thị phiên bản CalVer
cms:bump {patch|minor|major} # Tăng phiên bản toàn hệ thống
Hệ thống cốt lõi
core:admin-i18n:audit # Kiểm tra khóa dịch
core:agentic:run:schedules # Chạy tác vụ agent định kỳ
core:agentic:preflight # Kiểm tra hệ thống agent
core:agentic:sync:tools # Đồng bộ định nghĩa công cụ
core:deploy:preflight # Kiểm tra trước triển khai
core:status:scan # Quét sức khỏe hệ thống
Game
gameadmin:ledger:drift:check # Phát hiện trôi sổ cái
gameeconomy:reconcile:balances # Đối soát số dư
gameleaderboard:auto:promote # Tự động thăng hạng
API Endpoint mới
Hệ thống Agentic
GET /v2/admin/agentic/health
GET /v2/admin/agentic/tool-definitions
GET /v2/admin/agentic/profiles
GET /v2/admin/agentic/runs
POST /v2/admin/agentic/runs/{run}/stop
POST /v2/admin/agentic/approvals/{approval}/approve
GET /v2/admin/agentic/schedules
POST /v2/admin/agentic/schedules
Bảo mật tài khoản (MFA)
POST /v2/admin/account/mfa/authenticator/start
POST /v2/admin/account/mfa/authenticator/confirm
DELETE /v2/admin/account/mfa/authenticator
POST /v2/admin/account/mfa/recovery-codes/regenerate
GET /v2/admin/account/activities
Giao diện Admin: Tái cấu trúc Settings Hub
Module cài đặt được tái cấu trúc từ danh sách phẳng sang bố cục hub theo danh mục.
Thay đổi
- Điểm vào cài đặt hiện là trang hub với lưới danh mục.
- Mỗi danh mục (Chung, Nội dung, Máy chủ, v.v.) mở trong bố cục sidebar riêng.
- URL cũ (ví dụ:
/setting/basic) chuyển hướng sang đường dẫn mới (ví dụ:/setting/general/basic).
Component mới
| Component | Mục đích |
|---|---|
setting-hub.vue | Trang hub với lưới danh mục |
setting-category-layout.vue | Wrapper sidebar theo danh mục |
Di chuyển URL
Tất cả route /setting/* cũ có redirect tương thích ngược. Bookmark và tích hợp sử dụng URL cũ sẽ tiếp tục hoạt động.
Giao diện Admin: Module Quản lý CMS
Module Quản lý CMS hoàn chỉnh được thêm với 12 trang bao gồm quản lý tên miền, khách hàng và thanh toán.
Các trang
- Dashboard — thống kê tên miền, sắp hết hạn, đăng ký gần đây.
- Tên miền — danh sách (với bộ lọc và hành động hàng loạt), tạo mới, và trang chi tiết (tab: thông tin, thanh toán, hoạt động, nhắc nhở).
- Khách hàng — danh sách, tạo mới (với CRUD liên hệ), và trang chi tiết (tab: thông tin, liên hệ, tên miền).
- Thanh toán — danh sách với hành động xác minh cho thanh toán thủ công đang chờ.
- Nhắc nhở — danh sách với hành động gửi ngay.
- Nhật ký hoạt động — xem nhật ký toàn cục với lọc theo khoảng thời gian.
- Cài đặt — giá cả, nhắc nhở, cấu hình Stripe, kênh thông báo.
Xem hướng dẫn Quản lý CMS để biết chi tiết.
Giao diện Admin: Module hoạt động
Điều hướng giờ đây tự động ẩn dựa trên module nào đang hoạt động trên backend.
- Composable
useActiveModulesmới lấy danh sách module hoạt động từ/modulesvà cache tronglocalStorage. - Các mục điều hướng có trường
modulesẽ bị ẩn khi module tương ứng không hoạt động. - Tra cứu module không phân biệt hoa thường với hiệu suất O(1).
Xem hướng dẫn Active Modules cho nhà phát triển để biết chi tiết.
Giao diện Admin: Di chuyển namespace i18n
Tất cả khóa i18n được di chuyển sang namespace chuẩn. Alias chữ cái đơn cũ đã bị xóa.
| Tiền tố cũ | Tiền tố mới | Ví dụ |
|---|---|---|
n.* | nav.* | n.a.subject → nav.a.subject |
e.* | enum.* | e.date → enum.date |
t.* | text.* | t.page_title → text.page_title |
Lớp tương thích ngược (applyLegacyAliases) đã bị xóa. Tất cả code mới phải sử dụng namespace chuẩn.
Xem hướng dẫn di chuyển i18n cho nhà phát triển để biết chi tiết.
Giao diện Admin: Định tuyến UUID
Route của các entity giờ sử dụng uuid thay vì id dạng số cho trang người dùng, bài viết, sản phẩm và khách hàng.
| Entity | Tham số cũ | Tham số mới |
|---|---|---|
| User | :id | :uuid |
| Post | :id | :uuid |
| Product | :id | :uuid |
| Customer | :id | :uuid |
| Order | :id | :order_code |
Thay đổi không tương thích
Bất kỳ liên kết hoặc tích hợp tùy chỉnh nào sử dụng tham số :id dạng số phải được cập nhật sang :uuid (hoặc :order_code cho đơn hàng).
Giao diện Admin: Tối ưu hóa phụ thuộc
- Lodash di chuyển từ CJS
lodashsang ESMlodash-estrên 47 tệp (~90 KB tiết kiệm bundle). - ESLint: Xóa
@babel/eslint-parservàeslint-plugin-jsx-a11y(197 gói phụ thuộc được cắt bỏ). - Biến môi trường: URL production cố định được thay bằng biến
VITE_CMS_API_URL. - Dọn console: Xóa câu lệnh
console.log()debug; chuyển trường hợp lỗi/cảnh báo sangconsole.error()/console.warn().
Tài liệu DocBlock
Tất cả 1.405 tệp PHP đạt 100% coverage:
- Docblock cấp class: 100% (1.405/1.405)
- Docblock cấp method: 100% (3.694/3.694)
- Hoàn thiện
@param/@return: 100% - Tham chiếu chéo
@see: 1.109 tag đã xác minh - Tuân thủ PSR-4
@package: 100% - Ngôn ngữ: 100% tiếng Anh (39 comment tiếng Việt đã dịch)

