Bỏ qua nội dung

Danh sách Feature

Feature Module Copy URL Status Priority Platforms Note Updated
MASKING_UNLOCKS 1 feature
Mở khóa số điện thoại trên listing masking-unlock MASKING_UNLOCKS shipped P0 febe Che số điện thoại chủ tin; mở khóa bằng hạn mức miễn phí hằng ngày hoặc trả V-Credit. Chủ tin mở miễn phí.
SUBSCRIPTION-PACKAGE 5 feature
Mua gói package bằng V-Credits package-purchase SUBSCRIPTION-PACKAGE shipped P0 febe User mua gói trả phí bằng ví V-Credits (POST /subscriptions/me/purchase). Trừ ví atomic, 409 nếu thiếu credits, kích hoạt UserPackage active, reset daily unlock cho lần mua đầu.
Xem gói package và quyền lợi hiện tại package-view SUBSCRIPTION-PACKAGE shipped P0 febe Public list gói ACTIVE (GET /subscriptions/plans) cho pricing page + xem gói đang dùng và quyền lợi của chính mình (GET /subscriptions/me/entitlement). Là nơi định nghĩa entity Package và UserPackage.
Cập nhật gói đang dùng (nâng cấp / hạ gói) package-change SUBSCRIPTION-PACKAGE shipped P1 febe Đổi gói khi đang có gói active (POST /subscriptions/me/purchase). Upgrade-only: nâng tier hoặc kéo dài cycle được phép + hoàn pro-rata; hạ tier, hạ cycle, mua lại đúng gói = 409.
Lịch sử gói thuê bao của user package-history SUBSCRIPTION-PACKAGE shipped P1 febe User xem toàn bộ lịch sử gói đã mua/hết hạn (GET /subscriptions/me/history). Page<SubscriptionHistoryResponse>, sắp xếp startedAt DESC, gồm cả ACTIVE lẫn EXPIRED, giá snapshot tại thời điểm mua.
Gia hạn và tự động gia hạn gói package-renewal SUBSCRIPTION-PACKAGE shipped P1 febe Bật/tắt auto-renew (POST /subscriptions/me/renewal/deactivate, thực chất là toggle) + job nền gia hạn gói khi hết hạn: đủ credits thì trừ ví và tạo kỳ mới, không đủ thì EXPIRED + notify.
PROPERTIES 4 feature
Properties - tạo bất động sản properties-create PROPERTIES shipped P0 febe POST /properties tạo bất động sản (lớp vật lý dùng chung cho listing), gắn owner, chọn PropertyType, đính kèm hồ sơ pháp lý tuỳ chọn, mặc định ACTIVE.
Properties - xoá (soft-delete) bất động sản properties-delete PROPERTIES shipped P0 febe DELETE /properties/{id} soft-delete (INACTIVE + deletedAt/deletedBy), ẩn khỏi public; admin force-delete qua /admin/properties/{id}. Không xoá listing đang gắn.
Properties - tìm kiếm và xem chi tiết bất động sản properties-list PROPERTIES shipped P0 febe GET /properties (public search ACTIVE), /properties/me (property của user), /properties/{id} (chi tiết kèm tin đăng liên quan, hồ sơ pháp lý theo người xem).
Properties - cập nhật bất động sản properties-update PROPERTIES shipped P0 febe PUT /properties/{id} owner full-replace + upsert/gỡ hồ sơ pháp lý; admin force-edit qua /admin/properties/{id}. Giữ nguyên property_id và liên kết listing.
CONTACTS 4 feature
Contacts - tạo contact contacts-create CONTACTS draft P1 febe Cho phép broker hoặc luồng crawl tạo contact tập trung, gắn số điện thoại qua phone_registries và dùng lại cho nhiều listings.
Contacts - xoá hoặc lưu trữ contact contacts-delete CONTACTS draft P1 febe Cho phép xoá hoặc lưu trữ contact theo rule an toàn, đặc biệt khi contact đang liên kết với listings.
Contacts - xem danh sách và chi tiết contact contacts-list CONTACTS draft P1 febe Cho phép broker xem danh sách, tìm kiếm và mở chi tiết contact trong CRM.
Contacts - cập nhật contact contacts-update CONTACTS draft P1 febe Cho phép broker chỉnh sửa thông tin contact trong phạm vi được phép mà không phá vỡ liên kết listing.
BROWSER-EXTENSION 3 feature
Map field listing V-Nexus sang field sàn (MuaBan/Chotot) extension-field-mapping BROWSER-EXTENSION in-development P2 febe Map ListingResponse → nhãn field MuaBan/Chotot, humanize tiếng Việt cho autofill tự động (text, dropdown, chip, subtype): dealType, hướng, areaM2 fan-out, bỏ field rỗng/0/NaN, phone chỉ MuaBan, price required Chotot.
Prefill tin đăng V-Nexus sang sàn (MuaBan/Nhà Tốt) extension-listing-prefill BROWSER-EXTENSION in-development P2 febe Luồng core Extension: popup chỉ bật ở /user/my-listings, lấy listing (token tự đọc từ tab), mở tab MuaBan/NhaTot và TỰ ĐỘNG điền form (text + dropdown + chip + stepper). User tự upload ảnh và tự bấm đăng.
Origin cố định, token tự đọc & phạm vi kích hoạt Extension extension-settings BROWSER-EXTENSION in-development P2 fe Bỏ trang Options: origin backend/FE hardcode (Staging api-test/vnexus-test), token tự đọc từ tab V-Nexus đang đăng nhập, popup chỉ bật ở /user/my-listings. host_permissions phải khớp backend + FE + host sàn.
Auth 6 feature
Đăng nhập bằng Google (OAuth 2.0) auth-login-google AUTH shipped P0 febemobile OAuth Google flow — tự tạo hoặc link user theo email_verified. 2 mode response: JSON hoặc redirect callback URL.
Đăng nhập bằng số điện thoại auth-login-phone AUTH shipped P0 febemobile Phone + password login. Trả JWT access (15 phút) + refresh token (7 ngày). Credentials sai → 401 code 4011.
Đăng ký tài khoản với số điện thoại (OTP) auth-register-otp AUTH shipped P0 febemobile 3 bước: request OTP → verify OTP → create password. Đã release production.
Phone Registries - quản lý định danh số điện thoại phone-registries AUTH draft P1 be Nguồn trung tâm để chuẩn hóa, định danh và liên kết số điện thoại trong hệ thống.
Nâng cấp user lên broker user-upgrade-to-broker AUTH draft P1 febe User nâng cấp lên broker với tỉnh và phường bắt buộc. Không thu thập giá.
Đăng xuất (revoke refresh token) auth-logout AUTH shipped P1 febemobile Idempotent revoke refresh token. Multi-device safe (chỉ revoke token cụ thể, không revoke all devices).
User 5 feature
Cập nhật avatar hồ sơ trên web user-avatar-update-web USER in-development P1 febe Flow đổi avatar: upload ảnh qua R2 rồi lưu avatarUrl bằng PATCH /users/me/avatar. BE validate domain; FE chưa có flow upload/update.
Cập nhật hồ sơ cá nhân trên web user-profile-update-web USER in-development P1 febe Flow sửa fullName, bio, phone, province, ward. BE đã có PUT /users/me; FE cần thêm form/thunk update profile.
Xem hồ sơ cá nhân trên web user-profile-view-web USER in-development P1 febe Hydrate và xem profile cá nhân trên web. BE đã có /users/me; FE đã fetch vào Redux và menu, trang /customer/profile còn placeholder.
Vô hiệu hoá tài khoản cá nhân trên web user-account-deactivate-web USER in-development P2 febe Flow user tự vô hiệu hoá tài khoản. BE đã có DELETE /users/me soft deactivate; FE cần màn xác nhận và hậu xử lý session.
Xem public profile và tin công khai của user user-public-profile-listings-web USER in-development P2 febe Public profile và listings active của user. BE đã có /users/{id} và /users/{id}/listings; FE cần page/card khai thác contract này.
Admin 13 feature
Admin xoá mềm property bất kỳ admin-property-delete ADMIN in-development P1 febe Admin DELETE /admin/properties/{id} — soft-delete bỏ qua owner check, trả 204. BE đã xong; FE cần confirmation dialog và nút xoá.
Admin xem chi tiết property bất kỳ admin-property-detail ADMIN in-development P1 febe Admin xem chi tiết property bất kỳ (mọi status + soft-deleted). BE đã có GET /admin/properties/{id}; FE cần detail page hoặc drawer.
Admin sửa property bất kỳ admin-property-edit ADMIN in-development P1 febe Admin PUT /admin/properties/{id} — ghi đè mọi field, bỏ qua owner check. BE đã xong; FE cần form edit.
Admin xem và tìm kiếm danh sách property admin-property-list-search ADMIN in-development P1 febe Admin search/list property ở mọi status (ACTIVE/INACTIVE + soft-deleted). BE đã có GET /admin/properties; FE /admin/properties cần build.
Admin xem chi tiết thông tin user admin-user-detail ADMIN in-development P1 febe Admin xem full user detail gồm private fields, role, auth provider, referral, anti-fraud và quota. BE đã có GET /admin/users/{id}; FE chưa có detail UI.
Admin xem và tìm kiếm danh sách user admin-user-list-search ADMIN in-development P1 febe Admin search/list user theo keyword, status, role, province/ward và ngày tạo. BE đã có GET /admin/users; FE /admin/users còn placeholder.
Admin ban và unban user admin-user-ban-unban ADMIN in-development P1 febe Admin đặt user non-admin sang BANNED, xoá refresh token và khôi phục BANNED về ACTIVE. BE đã có endpoints; FE chưa có action UI.
Admin tạo gói package admin-package-create ADMIN shipped P1 febe Admin tạo gói thuê bao mới (POST /admin/subscriptions/packages, role admin). Validate input, unique code 409, sinh default plans/affiliateRate/status khi thiếu.
Admin xem danh sách gói package admin-package-list ADMIN shipped P1 febe Admin tra cứu danh sách gói (GET /admin/subscriptions/packages, role admin). Filter status ACTIVE/INACTIVE, phân trang, thấy cả gói INACTIVE khác endpoint public.
Admin xem thống kê gói package admin-package-statistics ADMIN shipped P1 febe Admin xem thống kê tổng hợp gói (GET /admin/subscriptions/packages/statistics, role admin). Scalar totalPackages/activePackages/totalActiveSubscribers + items per-package, một query grouped tránh N+1.
Admin xem subscriber của gói package admin-package-subscribers ADMIN shipped P1 febe Admin drill-down subscriber của 1 gói (GET /admin/subscriptions/packages/{id}/subscribers, role admin). Filter status ACTIVE/EXPIRED, phân trang, 404 nếu gói không tồn tại.
Admin cập nhật gói package admin-package-update ADMIN shipped P1 febe Admin cập nhật partial gói (PATCH /admin/subscriptions/packages/{id}, role admin). 404 nếu không tồn tại, bắt buộc ít nhất 1 field, chỉ ghi đè field được gửi.
Admin quản lý role của user admin-user-role-management ADMIN in-development P2 febe Admin xem/gán/gỡ/replace roles của user, có audit và last-admin guard. BE đã có /admin/iam/users/{userId}/roles; FE chưa có UI.
Listing 6 feature
Listings - tạo tin đăng listing-create LISTING shipped P0 febe Tạo listing qua POST /listings, gắn property active, mặc định DRAFT hoặc publish ACTIVE để tính trust score.
Listings - xoá hoặc ẩn tin đăng listing-delete LISTING shipped P0 febe Owner soft-delete listing sang DELETED; admin force-delete/ban listing sang BANNED để ẩn khỏi public.
Listings - xem danh sách và chi tiết tin đăng listing-list LISTING shipped P0 febe Public search/detail ACTIVE listings, owner views own listings/drafts, áp dụng visibility và masking theo viewer.
Listings - cập nhật tin đăng listing-update LISTING shipped P0 febe Owner replace toàn bộ mutable fields qua PUT /listings/{id}; BANNED bị khóa, ACTIVE recalc trust score.
Phân bổ listings cho broker theo gói broker-daily-listing-distribution LISTING draft P1 febe list_broker = broker đúng band gói + phường + còn limit. Bands: Premium 50-59, Pro 60-69, MAX 70-79, >=80 Admin. Chọn tối đa 3 theo fill_ratio.
Favorite listing - lưu và theo dõi tin yêu thích listing-favorite LISTING draft P2 febe Cho phép user lưu/bỏ lưu listing, xem danh sách đã thích, biết tin nào đã thích khi duyệt và số lượt thích; chủ tin nhận thông báo gộp khi tin được yêu thích.
Payment 6 feature
Nhận IPN/webhook SePay và đẩy realtime trạng thái thanh toán payment-sepay-ipn-webhook-realtime PAYMENT in-development P0 febe Tách riêng public callbacks SePay: IPN checkout và bank-transfer webhook. Khi order SUCCESS, backend push realtime tới /user/queue/payment-orders.
Lấy chi tiết đơn hàng thanh toán payment-order-detail-sync PAYMENT shipped P0 febe GET /payments/orders/{providerOrderId}/detail sync trạng thái SePay, confirm order khi CAPTURED và đẩy realtime status qua /user/queue/payment-orders.
Huỷ đơn hàng nạp ví theo providerOrderId wallet-topup-cancel PAYMENT shipped P0 be POST /wallet/topups/{providerOrderId}/cancel huỷ order top-up còn pending theo owner hiện tại.
Tạo đơn hàng nạp tiền ví V-credit (HTML) wallet-topup-create PAYMENT shipped P0 be POST /wallet/topups tạo hoặc resume checkout SePay cho top-up V-Credits.
Tạo đơn hàng nạp tiền ví V-credit (Webhook VietQR) wallet-topup-sepay-qr-webhook PAYMENT shipped P0 febe Tạo QR nạp ví, xử lý webhook SePay bằng payload.code, cộng V-Credits idempotent và đẩy realtime status qua /user/queue/payment-orders.
Chương trình giới thiệu (Affiliate) affiliate PAYMENT shipped P1 febe Referrer chia sẻ mã; referee mua gói trả phí thì referrer nhận hoa hồng 10% quy đổi credits vào ví. Tự động, idempotent, có chống gian lận. Đã release.
Crawler 1 feature
Crawl listings từ nguồn ngoài (Muaban, Nhà Tốt, Batdongsan) listing-crawl-external-sources CRAWLER draft P1 febe Crawl → property/listing/contact/nguồn, dùng POST /properties + /listings (no ingest). Dedup source+source_id. Contact FK contact_id 1-N; SĐT ở phone_registries (FK phone_registry_id), không resolve user/owner. Bỏ data_sources.