Bỏ qua nội dung

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 sang BANNED.
  • 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

  • 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.
  • admin, tôi muốn ẩn/ban tin vi phạm, để bảo vệ chất lượng marketplace.
  • 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ông

Acceptance 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 DELETED hoặc BANNED khô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