Bỏ qua nội dung

Listings - cập nhật 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 cập nhật toàn bộ các trường mutable của listing để sửa nội dung, giá, hình ảnh, loại giao dịch hoặc chuyển trạng thái giữa nháp và active. Khi listing active sau cập nhật, hệ thống tính lại trust score.

Phạm vi

Trong phạm vi (In scope):

  • Cập nhật listing qua PUT /listings/{id}.
  • Replace toàn bộ các trường mutable: title, description, price, status, listingTypes, imageUrls.
  • Chỉ owner được cập nhật listing của mình.
  • Không cho owner cập nhật listing đang BANNED.
  • Tính lại trust score khi kết quả cập nhật là ACTIVE.

Ngoài phạm vi (Out of scope):

  • Cập nhật property liên kết với listing.
  • Partial update/PATCH.
  • Gỡ ban listing bởi admin.
  • Cập nhật hàng loạt nhiều listing.

User Stories

  • owner, tôi muốn sửa nội dung listing, để thông tin đăng bán/cho thuê luôn chính xác.
  • owner, tôi muốn publish tin nháp bằng cách đổi status sang ACTIVE, để tin xuất hiện public.
  • hệ thống, tôi muốn tính lại trust score khi tin active thay đổi, để chất lượng tin được đánh giá lại.

Luồng chức năng

sequenceDiagram
    actor Owner
    participant App
    participant BE
    participant Listings
    participant Trust as Trust Score

    Owner->>App: Sửa thông tin listing
    App->>BE: Gửi yêu cầu cập nhật listing
    BE->>Listings: Kiểm tra owner và trạng thái
    BE->>Listings: Replace mutable fields
    alt Status sau cập nhật là ACTIVE
        BE->>Trust: Tính lại trust score
    end
    BE-->>App: Trả listing sau cập nhật

Acceptance Criteria

  • AC-1: Chỉ owner của listing mới được cập nhật listing.
  • AC-2: Hệ thống từ chối cập nhật nếu listing không tồn tại.
  • AC-3: Hệ thống từ chối cập nhật listing BANNED.
  • AC-4: Payload cập nhật phải có đủ các trường mutable bắt buộc theo full replace.
  • AC-5: Status cập nhật chỉ nhận DRAFT hoặc ACTIVE.
  • AC-6: Nếu listing sau cập nhật là ACTIVE, hệ thống phải tính lại trust score.

Quy tắc nghiệp vụ

  • Update không thay đổi owner của listing.
  • Update không thay đổi property qua endpoint listing.
  • price phải là số dương.
  • listingTypes nếu có chỉ nhận SALE hoặc RENT.
  • Listing BANNED bị khóa hành chính, owner không thể tự publish lại.

Dữ liệu & Trạng thái

Entity nghiệp vụ:

  • Listing: bản ghi được owner cập nhật các trường mutable.

Trạng thái user-facing:

  • DRAFT - tin đang nháp sau cập nhật.
  • ACTIVE - tin public sau cập nhật.
  • BANNED - tin bị khóa, không được owner cập nhật.

Liên quan