| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960 |
- // 국내 증시 요약 도메인 타입 — Backend Application/Features/Api/Stocks/GetDomesticSummary/Response.cs 대응
- // 필드명 camelCase. flucRateBp = %×100. 투자자별·베이시스는 Phase 2(현재 null → "–").
- export interface DomesticIndexRow {
- key: string; // kospi | kosdaq | kospi200
- name: string;
- close: number;
- changeVal: number;
- flucRateBp: number;
- tradeDate: string;
- // 등락 종목 수 (코스피/코스닥만; KOSPI200 은 null)
- advances?: number|null;
- declines?: number|null;
- unchanged?: number|null;
- limitUp?: number|null;
- limitDown?: number|null;
- // 투자자별 순매수(억원) — Phase 2
- individualNet?: number|null;
- foreignNet?: number|null;
- institutionNet?: number|null;
- programNet?: number|null;
- // 베이시스 (KOSPI200) — Phase 2
- basis?: number|null;
- }
- export interface DomesticSummaryResponse {
- list: DomesticIndexRow[];
- }
- // 전일비 절대값 — "45.12" (부호/색은 방향으로 별도)
- export function formatIndexChange(v: number): string {
- return Math.abs(v).toLocaleString('ko-KR', { minimumFractionDigits: 2, maximumFractionDigits: 2 });
- }
- // 투자자별 순매수 — "-13,277억원" / "1,347억원", null 은 "–"
- export function formatNet(v?: number|null): string {
- if (v === null || v === undefined) {
- return '–';
- }
- return `${v.toLocaleString('ko-KR')}억원`;
- }
- // 종목 수 — null 은 "–"
- export function formatCount(v?: number|null): string {
- if (v === null || v === undefined) {
- return '–';
- }
- return v.toLocaleString('ko-KR');
- }
- // 순매수 방향 (색상용)
- export function netDir(v?: number|null): 'up'|'down'|'flat' {
- if (v === null || v === undefined || v === 0) {
- return 'flat';
- }
- return v > 0 ? 'up' : 'down';
- }
|