What
Redesign of the two admin lending screens.
Market detail (/lending/markets/:id)
- Hero with market glyph, status, rail and "accrued N min ago"; four related KPI cards (supplied / borrowed / liquidity with utilisation meter / protocol equity with withdrawable).
- Tabs kept in
?tab=: Overview, Rate history, Configuration, Operations (Operations only withlending:operate). Configuration and Operations stay mounted so an in-flight mutation still reports after a tab switch. - Overview: interactive rate curve (y scale, hover/keyboard probe), Balance panel (assets vs funding bars, payables with zero rows muted), collateral table with a shared-domain risk ladder.
- Rate history: time-scaled step chart with tooltip and series toggles; newest-first table with Show all.
- Configuration: rate model / risk params as percent figures with raw fractions, risk ladder, scheduled-version callout; compact custody grid.
- Operations: equity cards + danger zone (logic unchanged: idempotency keys, reasons, notice warnings).
- Removed dead "—" cells (Collateralization, Oracle Price, Reserves) and duplicated figures.
Risk & operations (/lending/risk)
- KPI strip (open alerts by severity, in liquidation, transfers waiting, liquidation engine) over five tabs: Attention, Liquidations, Transfers, Audit, Settings.
- Alert cards with human titles/explanations (en + vi) for 27 ops alert types, market/user chips, relative time, repeat count, details disclosure and a custody-mismatch comparison.
- Audit grouped by day with readable action labels; settings as cards; designed empty states and skeletons.
Shared: page tab strip + useTabParam hook, EmptyState, skeletons, copy button.
Status
- Final whole-branch review passed in 2 rounds (0 blocking, 0 should-fix).
-
admin/:pnpm test827/827,pnpm type-checkclean,pnpm lint:check0 errors,pnpm buildgreen. - No backend or API change.