Bảng So sánh (Comparison Table)
Mô tả Tổng quan
Tính năng Bảng So sánh cho phép người dùng so sánh các sản phẩm trong một dataset theo dạng đặt cạnh nhau. Chức năng cung cấp cái nhìn có cấu trúc về thuộc tính sản phẩm, chỉ số hiệu năng và thông tin từ đánh giá dưới dạng bảng, làm nổi bật điểm giống và khác nhau. Bảng so sánh giúp ra quyết định tốt hơn bằng cách trực quan hóa cách sản phẩm so sánh qua nhiều khía cạnh quan trọng.
Tính năng đặc biệt hữu ích cho phân tích cạnh tranh, lựa chọn sản phẩm và xác định cơ hội thị trường dựa trên điểm mạnh/điểm yếu. Yêu cầu dataset hợp lệ chứa nhiều sản phẩm có thuộc tính so sánh được.
Swagger Link
API: Comparison Table API
Tài liệu Tình huống
Trường hợp 1: Quan điểm Cụ thể (SPVP)
Mô tả
Tạo bảng so sánh dựa trên Quan điểm Cụ thể. Dữ liệu tổng hợp từ review_sentence_spvp và trả theo từng quan điểm kèm tỉ lệ tích cực/tiêu cực theo sản phẩm.
Sơ đồ Trình tự
sequenceDiagram
participant User
participant API as ProductAnalyzerController
participant Service as SpvpService
participant Repo as WishlistDatasetHistoryRepository
participant DB as Database
Note over User,DB: Bước 1: Yêu cầu bảng so sánh (SPVP)
User->>API: GET /api/v1/general/analyzer/{wldh_slug}/products/comparison (viewpoint_type=SpecificViewpoint)
Note over API,Repo: Bước 2: Xác thực Dataset
API->>Repo: findBySlug(wldh_slug)
Repo-->>API: wishlistDataset
Note over API,Service: Bước 3: Tổng hợp theo Quan điểm Cụ thể
API->>Service: getComparitionTableBySpecificViewpoint(wishlistDataset, params)
Service->>DB: Query review_sentence_spvp join review_sentences
DB-->>Service: SPVP review data
Note over Service,API: Bước 4: Cấu trúc bảng so sánh
Service-->>API: Bảng so sánh đã định dạng
Note over API,User: Bước 5: Trả về phản hồi
API-->>User: 200 OK (dữ liệu bảng so sánh)
Các bước
Bước 1: Yêu cầu (SPVP)
- Mô tả: Tạo bảng so sánh bằng Quan điểm Cụ thể
- Yêu cầu:
GET /api/v1/general/analyzer/{wldh_slug}/products/comparison - Tham số:
- Đường dẫn:
wldh_slug - Truy vấn:
viewpoint_type(bắt buộc):SpecificViewpointstart_date(bắt buộc): YYYY-MM-DDend_date(bắt buộc): YYYY-MM-DDmall_product_ids(tùy chọn): danh sách ID (phân tách bằng dấu phẩy)all_products(tùy chọn, boolean, mặc địnhfalse): nếutrue, phản hồi bao gồm số lượng tích cực/tiêu cực thô theo sản phẩm ngoài tỉ lệbase_product_id(tùy chọn): sản phẩm nềnis_noise(tùy chọn):true|false
- Đường dẫn:
Bước 2: Xác thực Dataset
- Mô tả: Xác thực dataset tồn tại
- Hành động: Tìm theo slug trong repository
- Lỗi: Dataset không tồn tại
Bước 3: Tổng hợp (SPVP)
- Mô tả: Tổng hợp câu đánh giá SPVP theo quan điểm
- Hành động:
- Join
review_sentence_spvpvớireview_sentences - Group theo sản phẩm và
viewpoint_ordinal_number - Tính phần trăm tích cực/tiêu cực theo sản phẩm
- Join
Bước 4: Cấu trúc (SPVP)
- Mô tả: Tạo các hàng theo quan điểm với dữ liệu tích cực/tiêu cực cho từng sản phẩm
- Trường xuất cho mỗi quan điểm:
viewpoint_id,viewpoint_namedata: mapmall_product_id=>{ positive, negative }
Bước 5: Phản hồi
- Mô tả: Trả về bảng so sánh đã cấu trúc
- Ví dụ (SPVP, mặc định không có totals):
[ { "viewpoint_id": 515, "viewpoint_name": "Price", "data": { "dogparadise:4589602260099": { "positive": "60.0%(30)", "negative": "40.0%(20)" }, "1001000497050103287": { "positive": "55.0%(22)", "negative": "45.0%(18)" } } } ] - Ví dụ (SPVP, với
all_products=true):[ { "viewpoint_id": 515, "viewpoint_name": "Price", "data": { "dogparadise:4589602260099": { "positive": { "rate": "60.0%", "count": 30 }, "negative": { "rate": "40.0%", "count": 20 }, "total_count": 50 }, "1001000497050103287": { "positive": { "rate": "55.0%", "count": 22 }, "negative": { "rate": "45.0%", "count": 18 }, "total_count": 40 } } } ]
Trường hợp 2: Quan điểm AI
Mô tả
Tạo bảng so sánh bằng Quan điểm AI. Dữ liệu tổng hợp theo AI viewpoint trên tập sản phẩm được chọn.
Sơ đồ Trình tự
sequenceDiagram
participant User
participant API as ProductAnalyzerController
participant Service as ProductAnalyzerService
participant Repo as WishlistDatasetHistoryRepository
participant DB as Database
Note over User,DB: Bước 1: Yêu cầu bảng so sánh (AI)
User->>API: GET /api/v1/general/analyzer/{wldh_slug}/products/comparison (viewpoint_type=AiViewpoint)
Note over API,Repo: Bước 2: Xác thực Dataset
API->>Repo: findBySlug(wldh_slug)
Repo-->>API: wishlistDataset
Note over API,Service: Bước 3: Tổng hợp theo AI Viewpoint
API->>Service: comparisonTable(request, wishlistDataset)
Service->>DB: Query review_sentence_aivp + review_sentences
DB-->>Service: AI viewpoint review data
Note over Service,API: Bước 4: Cấu trúc bảng so sánh
Service-->>API: Bảng so sánh đã định dạng
Note over API,User: Bước 5: Trả về phản hồi
API-->>User: 200 OK (dữ liệu bảng so sánh)
Các bước
Bước 1: Yêu cầu (AI)
- Yêu cầu:
GET /api/v1/general/analyzer/{wldh_slug}/products/comparison - Tham số:
- Đường dẫn:
wldh_slug - Truy vấn:
viewpoint_type(bắt buộc):AiViewpointstart_date(bắt buộc): YYYY-MM-DDend_date(bắt buộc): YYYY-MM-DDmall_product_ids(tùy chọn)all_products(tùy chọn, boolean, mặc địnhfalse): nếutrue, phản hồi bao gồm số lượng tích cực/tiêu cực thô theo sản phẩm ngoài tỉ lệis_noise(tùy chọn):true|false
- Đường dẫn:
Bước 2: Tổng hợp (AI)
- Mô tả: Tổng hợp câu đánh giá theo AI viewpoint
- Hành động:
- Join
review_sentence_aivpvớireview_sentences - Group theo sản phẩm và AI
viewpoint_id - Tính tổng tích cực/tiêu cực theo sản phẩm
- Join
Bước 3: Phản hồi (AI)
- Ví dụ (mặc định không có totals):
[ { "viewpoint_id": 101, "viewpoint_name": "Delivery", "data": { "dogparadise:4589602260099": { "positive": "62.0%(31)", "negative": "38.0%(19)" } } } ] - Ví dụ (với
all_products=true):[ { "viewpoint_id": 101, "viewpoint_name": "Delivery", "data": { "dogparadise:4589602260099": { "positive": { "rate": "62.0%", "count": 31 }, "negative": { "rate": "38.0%", "count": 19 }, "total_count": 50 } } } ]
Bảng/Trường liên quan (SPVP)
erDiagram
review_sentences {
bigint id PK
string mall_product_id
double sentiment_score
date post_date
boolean is_noise
}
review_sentence_spvp {
bigint id PK
bigint sentence_id FK
int viewpoint_category_id
int viewpoint_ordinal_number
}
review_sentences ||--o{ review_sentence_spvp : has
Bảng/Trường liên quan (AI Viewpoint)
erDiagram
review_sentences {
bigint id PK
string mall_product_id
double sentiment_score
date post_date
boolean is_noise
}
review_sentence_aivp {
bigint id PK
bigint sentence_id FK
bigint ai_viewpoint_id FK
bigint dataset_id FK
}
review_sentences ||--o{ review_sentence_aivp : has
Xử lý Lỗi
-
Log
- Ghi log thất bại tạo bảng so sánh
-
Chi tiết Lỗi:
Mã Thông báo Mô tả 404 "Dataset not found" Slug dataset không tồn tại 400 "Invalid product selection" ID sản phẩm không hợp lệ 400 "Insufficient products for comparison" Chọn ít hơn 2 sản phẩm 400 Lỗi chung kèm thông điệp ngoại lệ Lỗi bất ngờ khi xử lý
Ghi chú bổ sung
- Khuyến nghị so sánh 2–5 sản phẩm để tối ưu
- Có thể xuất bảng so sánh ra CSV/PDF
- Có thể tính chỉ số so sánh tùy biến dựa trên thuộc tính sản phẩm
- Hiệu năng có thể bị ảnh hưởng khi so sánh nhiều sản phẩm với nhiều thuộc tính