diff --git a/docs/RELEASE-NOTES.md b/docs/RELEASE-NOTES.md index b17998e..61f5ffb 100644 --- a/docs/RELEASE-NOTES.md +++ b/docs/RELEASE-NOTES.md @@ -4,6 +4,9 @@ ## [Unreleased] +### 수정 +- 사건사고: MPA 리팩토링 누락 imports 정리 — IncidentsView `SplitPanelContent` 중복 import 제거, `fetchOilSpillSummary`를 `predictionApi`로 이관(이전 위치는 `api` 미임포트로 런타임 동작 불가), `AnalysisSelectModal`·`hnsDispersionLayers`의 `@tabs/`·`@common/components/` 구 경로를 신 경로로 정정 + ### 문서 - MPA 컴포넌트 구조 반영: 개발 가이드·공통 가이드·CRUD 가이드·설치 가이드·docs/README의 `tabs/` 경로 예시를 `components/`로 정정 diff --git a/frontend/src/components/incidents/components/AnalysisSelectModal.tsx b/frontend/src/components/incidents/components/AnalysisSelectModal.tsx index 0463c4e..5657172 100644 --- a/frontend/src/components/incidents/components/AnalysisSelectModal.tsx +++ b/frontend/src/components/incidents/components/AnalysisSelectModal.tsx @@ -1,10 +1,10 @@ import { useState, useEffect, useRef } from 'react'; -import { fetchPredictionAnalyses } from '@tabs/prediction/services/predictionApi'; -import type { PredictionAnalysis } from '@tabs/prediction/services/predictionApi'; -import { fetchHnsAnalyses } from '@tabs/hns/services/hnsApi'; -import type { HnsAnalysisItem } from '@tabs/hns/services/hnsApi'; -import { fetchRescueOps } from '@tabs/rescue/services/rescueApi'; -import type { RescueOpsItem } from '@tabs/rescue/services/rescueApi'; +import { fetchPredictionAnalyses } from '@components/prediction/services/predictionApi'; +import type { PredictionAnalysis } from '@interfaces/prediction/PredictionInterface'; +import { fetchHnsAnalyses } from '@components/hns/services/hnsApi'; +import type { HnsAnalysisItem } from '@interfaces/hns/HnsInterface'; +import { fetchRescueOps } from '@components/rescue/services/rescueApi'; +import type { RescueOpsItem } from '@interfaces/rescue/RescueInterface'; // ── 타입 정의 ────────────────────────────────────────── export type AnalysisModalType = 'oil' | 'hns' | 'rescue'; diff --git a/frontend/src/components/incidents/components/IncidentsView.tsx b/frontend/src/components/incidents/components/IncidentsView.tsx index 46fe44b..54d0b6e 100644 --- a/frontend/src/components/incidents/components/IncidentsView.tsx +++ b/frontend/src/components/incidents/components/IncidentsView.tsx @@ -39,7 +39,6 @@ import { } from '../utils/dischargeZoneData'; import { useMapStore } from '@common/store/mapStore'; import { FlyToController } from './contents/FlyToController'; -import { SplitPanelContent } from './contents/SplitPanelContent'; import { VesselPopupPanel } from './contents/VesselPopupPanel'; import { IncidentPopupContent } from './contents/IncidentPopupContent'; import { VesselDetailModal } from './contents/VesselDetailModal'; diff --git a/frontend/src/components/incidents/utils/hnsDispersionLayers.ts b/frontend/src/components/incidents/utils/hnsDispersionLayers.ts index bb70351..b9ad740 100644 --- a/frontend/src/components/incidents/utils/hnsDispersionLayers.ts +++ b/frontend/src/components/incidents/utils/hnsDispersionLayers.ts @@ -5,18 +5,11 @@ * - MapView와 동일한 BitmapLayer (캔버스 히트맵) + ScatterplotLayer (AEGL 원) 생성 */ import { BitmapLayer, ScatterplotLayer } from '@deck.gl/layers'; -import { computeDispersion } from '@tabs/hns/utils/dispersionEngine'; -import { getSubstanceToxicity } from '@tabs/hns/utils/toxicityData'; -import { hexToRgba } from '@common/components/map/mapUtils'; -import type { HnsAnalysisItem } from '@tabs/hns/services/hnsApi'; -import type { - MeteoParams, - SourceParams, - SimParams, - DispersionModel, - AlgorithmType, - StabilityClass, -} from '@tabs/hns/utils/dispersionTypes'; +import { computeDispersion } from '@components/hns/utils/dispersionEngine'; +import { getSubstanceToxicity } from '@components/hns/utils/toxicityData'; +import { hexToRgba } from '@components/common/map/mapUtils'; +import type { HnsAnalysisItem, MeteoParams, SourceParams, SimParams } from '@interfaces/hns/HnsInterface'; +import type { DispersionModel, AlgorithmType, StabilityClass } from '@types/hns/HnsType'; // MapView와 동일한 색상 정지점 const COLOR_STOPS: [number, number, number, number][] = [ diff --git a/frontend/src/components/prediction/services/predictionApi.ts b/frontend/src/components/prediction/services/predictionApi.ts index 3514c9e..1cf6d2b 100644 --- a/frontend/src/components/prediction/services/predictionApi.ts +++ b/frontend/src/components/prediction/services/predictionApi.ts @@ -4,6 +4,7 @@ import type { PredictionDetail, BacktrackResult, TrajectoryResponse, + OilSpillSummaryResponse, SensitiveResourceCategory, SensitiveResourceFeatureCollection, SpreadParticlesGeojson, @@ -63,6 +64,17 @@ export const fetchAnalysisTrajectory = async ( return response.data; }; +export const fetchOilSpillSummary = async ( + acdntSn: number, + predRunSn?: number, +): Promise => { + const response = await api.get( + `/prediction/analyses/${acdntSn}/oil-summary`, + predRunSn != null ? { params: { predRunSn } } : undefined, + ); + return response.data; +}; + export const fetchSensitiveResources = async ( acdntSn: number, ): Promise => { diff --git a/frontend/src/interfaces/prediction/PredictionInterface.ts b/frontend/src/interfaces/prediction/PredictionInterface.ts index 464da08..e9cc397 100644 --- a/frontend/src/interfaces/prediction/PredictionInterface.ts +++ b/frontend/src/interfaces/prediction/PredictionInterface.ts @@ -216,29 +216,6 @@ export interface OilSpillSummaryResponse { byModel: Record; } -export const fetchAnalysisTrajectory = async ( - acdntSn: number, - predRunSn?: number, -): Promise => { - const response = await api.get( - `/prediction/analyses/${acdntSn}/trajectory`, - predRunSn != null ? { params: { predRunSn } } : undefined, - ); - return response.data; -}; - -export const fetchOilSpillSummary = async ( - acdntSn: number, - predRunSn?: number, -): Promise => { - const response = await api.get( - `/prediction/analyses/${acdntSn}/oil-summary`, - predRunSn != null ? { params: { predRunSn } } : undefined, - ); - return response.data; -}; - - export interface SensitiveResourceCategory { category: string; count: number;