Epic 12 — Ahad Loans: custodial pooled money market (Compound v1 logic ported off-chain).
Draft MR — mở sớm để code không nằm một chỗ trên máy local. Chưa sẵn sàng merge, xem mục Blockers.
Phạm vi
-
Plan A — nền tảng:
lending_markets, supply/borrow, sổ cái crypto, chỉ số lãi (supply_index/borrow_index). - Plan B — lãi suất theo utilization, health factor, margin call, đóng vị thế, hoàn trả.
- Plan C — thanh lý, nợ xấu / write-off, admin console + RBAC, 4 runbook vận hành.
Toàn bộ chạy trên sổ cái crypto (user_crypto_balances + fireblocks_ledger_entries), không bao giờ chạm sổ fiat — ràng buộc này được kiểm bằng cổng AST lúc build, nên yarn build chính là bài kiểm tra đó.
Trạng thái kiểm thử
- 72 suite / 1.388 test / 0 lỗi (
yarn test:db src/modules/lending src/database/migrations) -
yarn buildsạch -
eslint src/modules/lending0 -
tsc --noEmit57 lỗi toàn cây, 6 trong lending — tất cả có sẵn từ trước nhánh này
Đã qua review toàn nhánh 3 góc nhìn (3 BLOCKING / 9 MAJOR / 9 MINOR, tất cả đã đóng), một vòng sửa 2 dispatch, và một lượt re-review chạy 20 mutation — mỗi mutation đều làm đỏ đúng test được đặt tên để ghim nó.
Blockers — cần quyết trước khi merge
-
Thanh lý chưa có driver tự động. Hệ thống phát hiện đúng, mở hồ sơ, gửi margin call, rồi dừng: không có gì đẩy
CANDIDATE/READY_TO_EXECUTEđi tiếp, phải POST route thủ công cho từng tài khoản. Spec đòi hàng đợi (§6.3) và watchdog SLA (§9); kế hoạch không có task nào cho cả hai — đây là lỗ hổng kế hoạch, không phải lỗi triển khai. Phần im lặng đã được bịt trong MR này (vòng kẹt nay báo động, bản ghi quét phân biệt "không có việc" với "có việc không ai làm"), nhưng driver là việc cỡ một plan riêng. -
Write-off không có trần. Tha nợ lớn hơn quỹ dự phòng của market sẽ lật market thành
INSOLVENT. Đúng spec, 7 test ghim hành vi, nhưng cần xác nhận đây là hành vi mong muốn. - Chưa có cổng KYC. Spec §5.3 liệt kê KYC trong điều kiện vay; module không kiểm. Cần chốt trạng thái KYC nào đủ điều kiện vay.
Ghi chú triển khai
- Hai migration mới cần
migration:runtrên staging/prod:1788600000022(lending_liquidations.status_changed_at,lending_settings.oracle_sla_minutes),1788600000023(mô tả quyền). - Spec §8.3 ghi sai chân hạch toán phía nhà tạo lập (
USER_CRYPTO(house)); code dùng dòng hệ thốngHOUSEvà đó mới là đúng — sửa spec, không sửa code.