// 시장 데이터 표시용 순수 유틸 (서버·클라이언트 공용 — 'use client'/'use server' 미선언) // 소수 포함 숫자 (지수·환율·금리 등) — 천 단위 구분 + 소수 자릿수 지정. null 은 — export function formatDecimal(value: number|null|undefined, fractionDigits = 2): string { if (value === null || value === undefined) { return '—'; } return value.toLocaleString('ko-KR', { minimumFractionDigits: fractionDigits, maximumFractionDigits: fractionDigits }); } // bp(만분율) → % 문자열 (부호 없이 절대값, 색·부호는 마크업에서 병행). 예: 1234 → "12.34%" export function formatBpRate(bp: number|null|undefined): string { if (bp === null || bp === undefined) { return '—'; } return `${(Math.abs(bp) / 100).toFixed(2)}%`; } // 금리 % (미고시 null → —). 예: 3.5 → "3.50%" export function formatRatePercent(value: number|null|undefined, fractionDigits = 2): string { if (value === null || value === undefined) { return '—'; } return `${value.toFixed(fractionDigits)}%`; } // 최신 기준일 라벨 (tradeDate null 이면 대체 문구) export function tradeDateLabel(date: string|null|undefined): string { return date ? `${date} 기준` : '데이터 준비 중'; } // 공시 접수번호 → DART 원문 링크 export function dartViewerUrl(rceptNo: string): string { return `https://dart.fss.or.kr/dsaf001/main.do?rcpNo=${encodeURIComponent(rceptNo)}`; }