Skip to content
GitLab
Projects Groups Topics Snippets
  • /
  • Help
    • Help
    • Support
    • Community forum
    • Submit feedback
    • Contribute to GitLab
  • Register
  • Sign in
  • A Ahad Mobile
  • Project information
    • Project information
    • Activity
    • Labels
    • Members
  • Repository
    • Repository
    • Files
    • Commits
    • Branches
    • Tags
    • Contributor statistics
    • Graph
    • Compare revisions
  • Issues 0
    • Issues 0
    • List
    • Boards
    • Service Desk
    • Milestones
  • Merge requests 0
    • Merge requests 0
  • CI/CD
    • CI/CD
    • Pipelines
    • Jobs
    • Schedules
  • Deployments
    • Deployments
    • Environments
    • Releases
  • Packages and registries
    • Packages and registries
    • Package Registry
    • Terraform modules
  • Monitor
    • Monitor
    • Incidents
  • Analytics
    • Analytics
    • Value stream
    • CI/CD
    • Repository
  • Wiki
    • Wiki
  • Snippets
    • Snippets
  • Activity
  • Graph
  • Create a new issue
  • Jobs
  • Commits
  • Issue Boards
Collapse sidebar
  • holatech
  • Ahad Mobile
  • Merge requests
  • !69

feat(lending): mọi tài sản đều vay được và thế chấp được

  • Review changes

  • Download
  • Patches
  • Plain diff
Merged Khanh Pham requested to merge feat/lending-universal-collateral into develop Sep 17, 2026
  • Overview 0
  • Commits 11
  • Pipelines 1
  • Changes 30

Mọi tài sản đều vay được và thế chấp được

Bỏ giới hạn cũ: USD gửi và vay được nhưng không tính là tài sản đảm bảo, ETH/BTC là tài sản đảm bảo nhưng không vay ra được. Sau MR này cả sáu quỹ — USD, USDT, USDC, DAI, ETH, BTC — vừa vay được vừa thế chấp được. DAI là stablecoin thứ ba, cùng lớp rủi ro và đường cong lãi với USDT/USDC.

Spec: docs/superpowers/specs/2026-09-16-lending-universal-collateral-design.md (gitignored; bản sao ở ~/.claude-backups/moanapay-superpowers/specs/).

Thay đổi

Commit Nội dung
7a0b8069 Migration 1789600000000: bật cả hai cờ trên sáu market, seed market DAI + rate model + risk params + price symbol. down() từ chối khi có tài khoản đang dựa vào USD làm thế chấp — hạ cờ lúc đó là haircut 100% và tạo candidate thanh lý ngay
6155ff4d Admin API thôi từ chối collateralEnabled: true trên rail FIAT; cả hai cờ mặc định bật ở mọi rail; xoá mã lỗi MARKET_FIAT_COLLATERAL_NOT_ALLOWED
697b5e5e Spec migration bọc fixture trong transaction rollback thay vì sửa rồi khôi phục dữ liệu thật
78371146 Health scan định giá market FIAT = 1 qua hằng FIAT_UNIT_PRICE dùng chung, nên người gửi USD không còn rơi vào đường chậm mỗi 5 phút
20768b49 Viết lại liquidationPriceFor: giải cho X ở cả hai vế vì X giờ vừa là thế chấp vừa là nợ. Bỏ kill-switch cũ — nó sẽ tắt cột "Giá thanh lý" của toàn bộ khách ngay khi ETH/BTC vay được
371d77d9 Test Postgres: thế chấp USD, nợ ETH, nhà ứng ETH từ kho crypto, tịch thu USD. Không sửa một dòng code production nào — đây là bằng chứng cho khẳng định J5b/J6 độc lập với rail
1a9a4156 FE: icon và tên DAI; sửa các comment viện dẫn luật đã bỏ
d847cb9b Seed debt_dust và max_repay_residual_forgive cho DAI — thiếu thì nợ lẻ DAI không bao giờ được xoá và trả MAX không về được 0
69fe2df8 Quét nốt tám comment còn viện dẫn "USD không phải tài sản đảm bảo"
0f78b999 Sửa docblock và mô tả Swagger của liquidationPrice cho đúng tập giá trị null mới
b5d30c98 down() giờ cũng chặn khi có lệnh BORROW đang bay chưa ghi sổ — trước đó borrow_principal vẫn bằng 0 nên rollback lọt, rồi transfer settle là tài khoản bị thanh lý ngay

Không nằm trong MR này

  • PRD chưa commit. PRD-ahad-loans-money-market.md đã sửa trong working tree (bảng sáu quỹ, bảng risk, mục "không làm", §8) nhưng cố ý không đưa vào commit vì file đang mang sửa đổi chưa commit của chính tác giả.
  • DAI vẫn FROZEN trên staging cho tới khi thêm feed Chainlink + custody asset Fireblocks vào .env, recreate container và chạy preflight.
  • BTC vẫn FROZEN — thiếu dòng Bitcoin Testnet trong fireblocks_supported_blockchains.
  • USDT vẫn ẩn trên staging vì Sepolia không có feed Chainlink USDT/USD. Trên mainnet có.

Đã qua hai cổng review

Review toàn nhánh (Opus) ra 4 finding, đã sửa và re-review xác nhận đóng hết. Codex (Sol) ra 4 finding: 3 đã sửa, 1 không thuộc nhánh này (xem dưới).

Hai điều reviewer kiểm chéo và xác nhận sạch, đáng ghi lại vì đó là rủi ro lớn nhất của thay đổi này: không còn chỗ nào trong module lending giả định nợ là stablecoin, và không chỗ nào giả định tài sản tịch thu luôn là crypto.

Kiểm thử

  • Unit BE: 132/132 (lending-account-summary, risk.service, admin-lending.controller).
  • Postgres: migration 6/6; liquidation-fiat 6/6; margin-call suite xanh trừ một test đỏ có sẵn trên develop.
  • FE: 190/190, lint và type-check sạch.
  • Mọi test mới đều được mutation-check: sửa hỏng một dòng, xem nó đỏ đúng chỗ, hoàn lại.

Hai lỗi có sẵn trên develop, không thuộc MR này

  • admin-lending.risk.spec.ts đỏ 72 test vì lỗi DI của NestJS. Constructor và file spec đều không bị nhánh này đụng tới. .gitlab-ci.yml không có stage test nên không ai bắt được.
  • Một test trong margin-call.postgres.spec.ts đếm số người vay trên toàn database dùng chung nên đỏ khi DB local có dữ liệu thật.

🤖 Generated with Claude Code

Assignee
Assign to
Reviewers
Request review from
Time tracking
Source branch: feat/lending-universal-collateral