feat(symbol-page): intraday short-term returns + hline storage-failure guard

- IntradayReturns: 10분/30분/1시간/3시간/시가대비 mini cards for 1D mode
  (PeriodReturns labels lie when interval is 10m; swap them out by isIntraday)
- addLine/removeLine/clearLines now return previous state when localStorage
  write fails — UI no longer diverges from storage in locked-storage env

addresses reviewer 318eae6 non-blocking caveat about write-failure divergence
This commit is contained in:
claude-owner
2026-05-29 00:35:21 +09:00
parent 318eae67df
commit d6fc9d8a0b
3 changed files with 95 additions and 4 deletions

View File

@@ -5,6 +5,7 @@ import { useEffect, useMemo, useState } from "react";
import { AlertsPanel } from "../../components/AlertsPanel";
import { CompositeScoreCard } from "../../components/CompositeScoreCard";
import { DisclosuresPanel } from "../../components/DisclosuresPanel";
import { IntradayReturns } from "../../components/IntradayReturns";
import { InvestmentNote } from "../../components/InvestmentNote";
import { InvestorCumulative } from "../../components/InvestorCumulative";
import { MetricsPanel } from "../../components/MetricsPanel";
@@ -246,7 +247,12 @@ export default function CodePage({ params }: { params: { code: string } }) {
<CompositeScoreCard chart={chart} />
</div>
<div className="mt-6">
<PeriodReturns ohlcv={chart.ohlcv} />
{/* 1D(10분봉) 모드에선 PeriodReturns 의 거래일 라벨이 거짓이 되므로 단기 카드로 교체 */}
{isIntraday ? (
<IntradayReturns ohlcv={chart.ohlcv} />
) : (
<PeriodReturns ohlcv={chart.ohlcv} />
)}
</div>
<div className="mt-6">
<PeerComparePanel code={code} />