Skip to main content

Tasks — Admin → Super Agent

Spec: admin-to-superagent · Mockup: sell-credit (modal), list, detail

Hiện trạng: Đã có applyAdminCashFunding (credits + note), modal trên SuperAgentDetailPage (amount + note). Chưa có bảng cash transaction riêng, chưa đủ field form, chưa có list/detail.

Phạm vi V1: Submit chỉ trạng thái Paid in full — credits issued. Detail view-only. Không upload bằng chứng.

UI dùng chung: @kioskgaming/ui / portal-cash-settlement — Admin chỉ wire API + route.


Phase 1 — Backend & data model

#TaskGhi chú
1.1Thiết kế bảng cash_transactionsSchema
1.2Migration + Sequelize model + indexesIndex: buyer_id, flow, status, received_at, created_at
1.3Enum / constants: flow, status, payment_methodV1 status: paid_full only on create
1.4Refactor superAgentCreditPurchaseBizService.applyAdminCashFundingNhận payload mới; tạo cash_transaction + giữ payment_transaction / credit wallet transfer
1.5Snapshot costRate buyer tại thời điểm bánLưu vào cash_transaction, không đọc lại rate sau này
1.6Ghi performed_by (admin id) + audit log tạo giao dịchTối thiểu: created_at, admin id trong metadata
1.7API POST /api/admin/super-agents/:id/cash-credits (hoặc mở rộng endpoint cash funding hiện tại)Body: credits, cash_received, payment_method, received_at, external_ref?, note?
1.8ValidationSA active; credits > 0; cost rate > 0; cash_received > 0; payment_method enum; received_at hợp lệ
1.9API GET /api/admin/cash-transactionsList + filter flow/status/payment_method/date/search; pagination
1.10API GET /api/admin/cash-transactions/:idDetail view-only; include linked credit transaction summary
1.11(Optional V1) Export CSV từ list APIKhớp filter hiện tại
1.12Unit tests biz service + controllerHappy path, invalid SA, zero credits, snapshot cost rate

Phase 2 — UI package (packages/ui)

Chi tiết: ui-package-cash-settlement. Làm trước hoặc song song Phase 2 Admin wire.

#TaskGhi chú
UI.1–UI.7Module portal-cash-settlementModal, list ledger, detail view-only
UI.8Export từ @kioskgaming/uiSellCreditsCashModal, PortalCashTransactionsLedger, PortalCashTransactionDetail

Phase 3 — Admin wire (integration)

#TaskGhi chú
3.1Super Agent detail: mở SellCreditsCashModalflow=admin_super_agent, buyer = SA đang xem
3.2Hook useAdminSuperAgentCashCredits + API clientMap form → POST cash-credits
3.3Route /cash-transactions + sidebar menuRender PortalCashTransactionsLedger
3.4Hook useAdminCashTransactions (list) + export CSVInject onFetch / onExport
3.5Route /cash-transactions/:idRender PortalCashTransactionDetail
3.6Submit success → refresh SA balance; optional navigate detail

Không implement lại form/table/detail trong kioskgaming_admin — chỉ compose từ package.

Tham chiếu: SuperAgentDetailPage.tsx (thay modal cũ amount+note)


Phase 4 — QA & docs

#TaskGhi chú
4.1Manual test checklist Admin → SAModal, wallet +credit, list, detail
4.2Xác nhận không đổi USD wallet onlineRegression payment tx audit
4.3Cập nhật spec nếu lệch implementationFile admin-to-superagent.md

Phụ thuộc cho luồng khác

Phase 1 (bảng + list/detail API) dùng chung cho Super Agent → AgentAgent → Shop — mở rộng flow enum khi làm các luồng đó.