Migration SQL (20260422120000_industrial_usd_to_decimal) and Prisma schema already
reflected Decimal(18,4). This commit completes the TypeScript / frontend layer.
API changes:
- Domain repo interfaces (IndustrialListingListItem, IndustrialListingDetailData,
IndustrialParkListItem, IndustrialParkDetailData, IndustrialMarketData): USD money
fields changed from number|null → string|null (PostgreSQL numeric serialises
as string in raw query results)
- Raw DB interface types in Prisma repositories updated to string|null for
Decimal columns
- toDomain() mappers: parseFloat() added where entity props require number|null
for business-logic arithmetic
- estimate-industrial-rent handler: Number() cast on Prisma ORM Decimal objects
before arithmetic and comparisons
Web changes:
- khu-cong-nghiep-api.ts: IndustrialParkListItem, IndustrialParkDetail,
IndustrialListingItem, IndustrialMarketData USD fields → string|null with JSDoc
- listing-card.tsx: parseFloat() wrapping for priceUsdM2/totalLeasePrice display
- park-compare-client.tsx: parseFloat() for landRentUsdM2Year in radar score
Note: pre-existing test failures in filter-bar/login/search specs are unrelated
to this migration (confirmed present on branch before this change).
Co-Authored-By: Paperclip <noreply@paperclip.ing>