export interface PointAccount { id: string; memberNo: string; loginId: string; studentName: string; schoolName: string; grade: number; classNo: number; studentNo: number; totalPoint: number; deductedPoint: number; usedPoint: number; currentPoint: number; updatedAt: string; siteName: string; } export interface PointHistoryEntry { id: string; title: string; point: number; siteName: string; date: string; } export const EMPTY_FIELD_PLACEHOLDER = '-'; export function formatOptionalValue( value: string | number | null | undefined ): string { return value === null || value === undefined || value === '' ? EMPTY_FIELD_PLACEHOLDER : String(value); } export function formatPoint(value: number): string { return value.toLocaleString('ko-KR'); } /** 취득은 `+`, 사용은 `-`를 붙여 부호가 곧 방향이 되게 한다(기획 PTS10300001 ②). */ export function formatPointDelta(value: number): string { const sign = value > 0 ? '+' : ''; return `${sign}${formatPoint(value)} P`; } export function isPointEarned(value: number): boolean { return value > 0; } export function formatGradeClassNumber(account: PointAccount): string { return `${account.grade}학년 ${account.classNo}반 ${account.studentNo}번`; }