Listings - xoá hoặc ẩn tin đăng
Feature URL
Module
listing
Status
shipped
Priority
P0
Platforms
fe · be
AC progress
0 / 6
Last reviewed
2026-05-29
Mục tiêu
Cho phép owner xoá mềm listing của mình để tin không còn xuất hiện public, đồng thời ghi nhận hành vi admin force-delete/ban listing như một biến thể quản trị liên quan. Dữ liệu listing vẫn được giữ lại trong database qua trạng thái lifecycle.
Phạm vi
Trong phạm vi (In scope):
- Owner xoá mềm listing qua
DELETE /listings/{id}. - Chỉ owner hoặc quyền tương đương mới được xoá listing trên endpoint user.
- Listing bị owner xoá chuyển status sang
DELETED. - Admin force-delete/ban listing qua
/admin/listings/{id}chuyển status sangBANNED. - Listing không còn xuất hiện trong public search/detail sau khi xoá/ban.
Ngoài phạm vi (Out of scope):
- Xoá cứng bản ghi khỏi database.
- Khôi phục listing đã xoá.
- Moderation workflow đầy đủ và lý do từ chối chi tiết.
- Xoá property liên quan.
User Stories
- Là owner, tôi muốn xoá tin không còn nhu cầu đăng, để tin không xuất hiện với người xem.
- Là admin, tôi muốn ẩn/ban tin vi phạm, để bảo vệ chất lượng marketplace.
- Là hệ thống, tôi muốn giữ lại bản ghi listing, để không mất lịch sử và quan hệ dữ liệu.
Luồng chức năng
sequenceDiagram
actor Owner
actor Admin
participant BE
participant Listings
Owner->>BE: Gửi yêu cầu xóa listing
BE->>Listings: Kiểm tra owner
BE->>Listings: Set status DELETED
BE-->>Owner: Xóa thành công
Admin->>BE: Gửi yêu cầu ban listing
BE->>Listings: Set status BANNED
BE-->>Admin: Ban thành côngAcceptance Criteria
- AC-1: Owner có thể xoá mềm listing thuộc sở hữu của mình.
- AC-2: Non-owner không thể xoá listing của người khác qua endpoint owner.
- AC-3: Listing owner-delete chuyển sang status
DELETED. - AC-4: Admin force-delete/ban chuyển listing sang status
BANNED. - AC-5: Listing
DELETEDhoặcBANNEDkhông xuất hiện trong public search/detail. - AC-6: Thao tác xoá/ban trả thành công không cần body khi hoàn tất.
Quy tắc nghiệp vụ
- Xoá listing là soft-delete bằng status, không xoá cứng row.
- Owner không được xoá listing của user khác.
- Admin ban listing bỏ qua owner check.
- Listing bị xoá/ban không được public disclose qua endpoint public.
Dữ liệu & Trạng thái
Entity nghiệp vụ:
Listing: tin đăng được chuyển trạng thái lifecycle.
Trạng thái user-facing:
DELETED- tin đã được owner xoá mềm.BANNED- tin bị admin ẩn/ban.ACTIVE- tin vẫn public trước khi xoá/ban.
Liên quan
- Phụ thuộc: listing-create, listing-list
- Ảnh hưởng: listing-list, masking-unlock