Quellcode durchsuchen

refactor(home): 국내 요약에서 미지원 항목(투자자별·베이시스) UI 제거

- 투자자별 순매수·베이시스 블록/필드/스타일 삭제(수집 미지원 → "–" 대신 아예 미표시)
- 카드 = 지수값·전일비·등락률 + 등락종목수(코스피/코스닥). KOSPI200 은 지수만
- tsc/eslint 그린

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
KIM-JINO5 vor 2 Wochen
Ursprung
Commit
201ef752aa

+ 5 - 28
app/(main)/_components/DomesticSummary.tsx

@@ -1,8 +1,9 @@
 import './domestic-summary.scss';
 import { moveDir, formatFlucRate, formatIndexClose } from '@/types/worldIndex';
-import { type DomesticIndexRow, formatIndexChange, formatNet, formatCount, netDir } from '@/types/domesticSummary';
+import { type DomesticIndexRow, formatIndexChange, formatCount } from '@/types/domesticSummary';
 
-// 국내 증시 요약 — 코스피/코스닥/KOSPI200 카드. 지수·등락 + 투자자별 순매수(Phase 2 "–") + 등락종목수(코스피/코스닥) / 베이시스(KOSPI200).
+// 국내 증시 요약 — 코스피/코스닥/KOSPI200 카드. 지수값·전일비·등락률 + 등락종목수(코스피/코스닥만).
+// (투자자별 순매수·베이시스는 미지원으로 제외)
 type Props = {
 	rows: DomesticIndexRow[];
 };
@@ -20,7 +21,7 @@ export default function DomesticSummary({ rows }: Props)
 			<div className='dsum__grid'>
 				{rows.map((row) => {
 					const dir = moveDir(row.flucRateBp);
-					const isKospi200 = row.key === 'kospi200';
+					const hasBreadth = row.advances !== null && row.advances !== undefined;
 					return (
 						<div key={row.key} className='dsum__card'>
 							<div className='dsum__name'>{row.name}</div>
@@ -34,31 +35,7 @@ export default function DomesticSummary({ rows }: Props)
 								</span>
 							</div>
 
-							<div className='dsum__investors'>
-								<div className='dsum__inv'>
-									<span className='dsum__inv-k'>개인</span>
-									<span className={`dsum__inv-v dsum__inv-v--${netDir(row.individualNet)}`}>{formatNet(row.individualNet)}</span>
-								</div>
-								<div className='dsum__inv'>
-									<span className='dsum__inv-k'>외국인</span>
-									<span className={`dsum__inv-v dsum__inv-v--${netDir(row.foreignNet)}`}>{formatNet(row.foreignNet)}</span>
-								</div>
-								<div className='dsum__inv'>
-									<span className='dsum__inv-k'>기관</span>
-									<span className={`dsum__inv-v dsum__inv-v--${netDir(row.institutionNet)}`}>{formatNet(row.institutionNet)}</span>
-								</div>
-								<div className='dsum__inv'>
-									<span className='dsum__inv-k'>프로그램</span>
-									<span className={`dsum__inv-v dsum__inv-v--${netDir(row.programNet)}`}>{formatNet(row.programNet)}</span>
-								</div>
-							</div>
-
-							{isKospi200 ? (
-								<div className='dsum__foot'>
-									<span className='dsum__basis-k'>베이시스</span>
-									<span className='dsum__basis-v'>{row.basis !== null && row.basis !== undefined ? row.basis.toFixed(2) : '–'}</span>
-								</div>
-							) : (
+							{hasBreadth && (
 								<div className='dsum__breadth'>
 									<span className='dsum__b'>상한 <em className='dsum__b--up'>{formatCount(row.limitUp)}</em></span>
 									<span className='dsum__b'>상승 <em className='dsum__b--up'>{formatCount(row.advances)}</em></span>

+ 3 - 56
app/(main)/_components/domestic-summary.scss

@@ -1,6 +1,6 @@
 // ─────────────────────────────────────────────────────────────
 // 국내 증시 요약 (DomesticSummary) — 코스피/코스닥/KOSPI200 카드 3개
-// 등락색 --price-up/down(상승 적/하락 청). 기존 토큰만 사용(라이트·다크 양립).
+// 지수값·전일비·등락률 + 등락종목수(코스피/코스닥). 등락색 --price-up/down(상승 적/하락 청).
 // ─────────────────────────────────────────────────────────────
 
 .dsum {
@@ -37,8 +37,6 @@
 		align-items: baseline;
 		flex-wrap: wrap;
 		gap: var(--sp-3);
-		padding-bottom: var(--sp-4);
-		border-bottom: 1px solid var(--border-light);
 	}
 
 	&__value {
@@ -86,46 +84,14 @@
 		font-style: normal;
 	}
 
-	// 투자자별 순매수 (2×2)
-	&__investors {
-		display: grid;
-		grid-template-columns: 1fr 1fr;
-		gap: var(--sp-2) var(--sp-5);
-		padding: var(--sp-4) 0;
-		border-bottom: 1px solid var(--border-light);
-	}
-
-	&__inv {
-		display: flex;
-		align-items: baseline;
-		justify-content: space-between;
-		gap: var(--sp-3);
-		font-size: var(--fs-sm);
-	}
-
-	&__inv-k {
-		color: var(--text-muted);
-	}
-
-	&__inv-v {
-		font-variant-numeric: tabular-nums;
-		color: var(--text-secondary);
-
-		&--up {
-			color: var(--price-up);
-		}
-
-		&--down {
-			color: var(--price-down);
-		}
-	}
-
 	// 등락 종목 수
 	&__breadth {
 		display: flex;
 		flex-wrap: wrap;
 		gap: var(--sp-3);
+		margin-top: var(--sp-4);
 		padding-top: var(--sp-4);
+		border-top: 1px solid var(--border-light);
 		font-size: var(--fs-xs);
 		color: var(--text-muted);
 		font-variant-numeric: tabular-nums;
@@ -148,23 +114,4 @@
 	&__b {
 		white-space: nowrap;
 	}
-
-	// 베이시스 (KOSPI200)
-	&__foot {
-		display: flex;
-		align-items: baseline;
-		gap: var(--sp-3);
-		padding-top: var(--sp-4);
-		font-size: var(--fs-sm);
-	}
-
-	&__basis-k {
-		color: var(--text-muted);
-	}
-
-	&__basis-v {
-		font-weight: 700;
-		font-variant-numeric: tabular-nums;
-		color: var(--text-primary);
-	}
 }

+ 1 - 26
types/domesticSummary.ts

@@ -1,5 +1,5 @@
 // 국내 증시 요약 도메인 타입 — Backend Application/Features/Api/Stocks/GetDomesticSummary/Response.cs 대응
-// 필드명 camelCase. flucRateBp = %×100. 투자자별·베이시스는 Phase 2(현재 null → "–").
+// 필드명 camelCase. flucRateBp = %×100. (투자자별 순매수·베이시스는 미지원으로 제외)
 
 export interface DomesticIndexRow {
 	key: string;          // kospi | kosdaq | kospi200
@@ -15,15 +15,6 @@ export interface DomesticIndexRow {
 	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 {
@@ -35,14 +26,6 @@ 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) {
@@ -50,11 +33,3 @@ export function formatCount(v?: number|null): string {
 	}
 	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';
-}