Skip to content

Hệ thống Catalog (Danh mục Dịch vụ / Sản phẩm)

Thông tin nhanh

  • 6 bảng: service_categories, services (enhanced), products, service_packages, package_items, price_history
  • Migration: 030_catalog_system.sql
  • API: /api/catalog/* — CRUD categories, services, products, packages
  • Admin UI: Settings → Catalog (4 tabs)

Xem thêm: Database · Catalog API

Mô hình Dữ liệu

API Endpoints

Tất cả endpoints yêu cầu JWT auth (tenant-scoped):

Categories

MethodPathMô tả
GET/api/catalog/categoriesDanh sách categories
POST/api/catalog/categoriesTạo category mới
PATCH/api/catalog/categories/:idCập nhật category
DELETE/api/catalog/categories/:idXoá (soft delete)

Services

MethodPathMô tả
GET/api/catalog/servicesDanh sách services (?category=)
POST/api/catalog/servicesTạo service mới
PATCH/api/catalog/services/:idCập nhật service
DELETE/api/catalog/services/:idXoá (soft delete)

Products

MethodPathMô tả
GET/api/catalog/productsDanh sách products (?category=)
POST/api/catalog/productsTạo product mới
PATCH/api/catalog/products/:idCập nhật product
DELETE/api/catalog/products/:idXoá (soft delete)

Packages

MethodPathMô tả
GET/api/catalog/packagesDanh sách packages + items
POST/api/catalog/packagesTạo package mới
PATCH/api/catalog/packages/:idCập nhật package
DELETE/api/catalog/packages/:idXoá (soft delete)

Price History Tracking

Khi giá service hoặc product thay đổi, hệ thống tự ghi vào price_history:

Backfill Logic

Migration 030 tự động backfill service_id cho bookings và leads có sẵn:

sql
-- Link bookings.service text → services.id
UPDATE bookings b SET service_id = s.id
FROM services s
WHERE b.tenant_id = s.tenant_id AND b.service = s.name AND b.service_id IS NULL;

-- Link leads.service_interest text → services.id
UPDATE leads l SET service_id = s.id
FROM services s
WHERE l.tenant_id = s.tenant_id AND l.service_interest = s.name AND l.service_id IS NULL;

Admin UI

Settings → Catalog gồm 4 tabs:

TabComponentChức năng
Danh mụcCatalogSettings (tab 1)CRUD categories với icon + color
Dịch vụCatalogSettings (tab 2)CRUD services + variants + pricing
Sản phẩmCatalogSettings (tab 3)CRUD products + SKU + stock
Gói dịch vụCatalogSettings (tab 4)CRUD packages + item builder

🔒 Internal Documentation — Dev Team Only