From 82e7074b1c593cdcd81be2019434300ccbdd375b Mon Sep 17 00:00:00 2001 From: HYOJIN Date: Fri, 27 Mar 2026 10:40:20 +0900 Subject: [PATCH] =?UTF-8?q?refactor:=20BYPASS=20API=20=EC=A0=84=EB=A9=B4?= =?UTF-8?q?=20RAW=20=EB=AA=A8=EB=93=9C=20=EC=A0=84=ED=99=98=20(JsonNode=20?= =?UTF-8?q?=ED=8C=A8=EC=8A=A4=EC=8A=A4=EB=A3=A8)=20(#63)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - DTO 생성 제거: 모든 BYPASS API가 JsonNode로 응답 패스스루 - bypass_api_field 테이블 관련 코드 삭제 (Entity, Repository, DTO, JsonSchemaParser) - 코드 생성기: Service만 생성 (DTO 없음), JsonNode 반환 - 프론트엔드: 3단계 → 2단계 폼 축소 (기본 정보 + 파라미터) - BypassStepFields, responseType 관련 코드 전면 제거 Co-Authored-By: Claude Opus 4.6 (1M context) --- frontend/src/api/bypassApi.ts | 24 -- .../components/bypass/BypassConfigModal.tsx | 25 +- .../src/components/bypass/BypassStepBasic.tsx | 26 -- .../components/bypass/BypassStepFields.tsx | 289 ------------------ frontend/src/pages/BypassConfig.tsx | 8 - .../controller/BypassConfigController.java | 28 +- .../batch/global/dto/BypassConfigRequest.java | 6 - .../global/dto/BypassConfigResponse.java | 6 - .../snp/batch/global/dto/BypassFieldDto.java | 33 -- .../batch/global/model/BypassApiConfig.java | 15 - .../batch/global/model/BypassApiField.java | 69 ----- .../repository/BypassApiFieldRepository.java | 25 -- .../controller/ComplianceController.java | 85 ------ .../dto/ComplianceValuesMeaningDto.java | 23 -- .../compliance/dto/CompliancesByImosDto.java | 122 -------- .../dto/PagedUpdatedComplianceListDto.java | 45 --- .../dto/UpdatedComplianceListDto.java | 122 -------- .../ComplianceValuesMeaningService.java | 34 --- .../service/CompliancesByImosService.java | 35 --- .../PagedUpdatedComplianceListService.java | 38 --- .../service/UpdatedComplianceListService.java | 36 --- .../batch/service/BypassCodeGenerator.java | 203 ++---------- .../batch/service/BypassConfigService.java | 62 +--- .../snp/batch/service/JsonSchemaParser.java | 165 ---------- 24 files changed, 36 insertions(+), 1488 deletions(-) delete mode 100644 frontend/src/components/bypass/BypassStepFields.tsx delete mode 100644 src/main/java/com/snp/batch/global/dto/BypassFieldDto.java delete mode 100644 src/main/java/com/snp/batch/global/model/BypassApiField.java delete mode 100644 src/main/java/com/snp/batch/global/repository/BypassApiFieldRepository.java delete mode 100644 src/main/java/com/snp/batch/jobs/web/compliance/controller/ComplianceController.java delete mode 100644 src/main/java/com/snp/batch/jobs/web/compliance/dto/ComplianceValuesMeaningDto.java delete mode 100644 src/main/java/com/snp/batch/jobs/web/compliance/dto/CompliancesByImosDto.java delete mode 100644 src/main/java/com/snp/batch/jobs/web/compliance/dto/PagedUpdatedComplianceListDto.java delete mode 100644 src/main/java/com/snp/batch/jobs/web/compliance/dto/UpdatedComplianceListDto.java delete mode 100644 src/main/java/com/snp/batch/jobs/web/compliance/service/ComplianceValuesMeaningService.java delete mode 100644 src/main/java/com/snp/batch/jobs/web/compliance/service/CompliancesByImosService.java delete mode 100644 src/main/java/com/snp/batch/jobs/web/compliance/service/PagedUpdatedComplianceListService.java delete mode 100644 src/main/java/com/snp/batch/jobs/web/compliance/service/UpdatedComplianceListService.java delete mode 100644 src/main/java/com/snp/batch/service/JsonSchemaParser.java diff --git a/frontend/src/api/bypassApi.ts b/frontend/src/api/bypassApi.ts index a90532b..046258c 100644 --- a/frontend/src/api/bypassApi.ts +++ b/frontend/src/api/bypassApi.ts @@ -17,25 +17,14 @@ export interface BypassParamDto { sortOrder: number; } -export interface BypassFieldDto { - id?: number; - fieldName: string; - jsonProperty: string | null; - fieldType: string; // String, Integer, Long, Double, Boolean, LocalDateTime, List, Object - description: string; - sortOrder: number; -} - export interface BypassConfigRequest { domainName: string; displayName: string; webclientBean: string; externalPath: string; httpMethod: string; - responseType: string; description: string; params: BypassParamDto[]; - fields: BypassFieldDto[]; } export interface BypassConfigResponse { @@ -46,20 +35,17 @@ export interface BypassConfigResponse { webclientBean: string; externalPath: string; httpMethod: string; - responseType: string; description: string; generated: boolean; generatedAt: string | null; createdAt: string; updatedAt: string; params: BypassParamDto[]; - fields: BypassFieldDto[]; } export interface CodeGenerationResult { controllerPath: string; servicePaths: string[]; - dtoPaths: string[]; message: string; } @@ -117,16 +103,6 @@ export const bypassApi = { deleteJson>(`${BASE}/${id}`), generateCode: (id: number, force = false) => postJson>(`${BASE}/${id}/generate?force=${force}`), - parseJson: async (jsonSample: string, targetField?: string): Promise> => { - const params = targetField ? `?targetField=${encodeURIComponent(targetField)}` : ''; - const res = await fetch(`${BASE}/parse-json${params}`, { - method: 'POST', - headers: { 'Content-Type': 'application/json' }, - body: jsonSample, // 이미 JSON 문자열이므로 JSON.stringify 하지 않음 - }); - if (!res.ok) throw new Error(`API Error: ${res.status} ${res.statusText}`); - return res.json(); - }, getWebclientBeans: () => fetchJson>(`${BASE}/webclient-beans`), }; diff --git a/frontend/src/components/bypass/BypassConfigModal.tsx b/frontend/src/components/bypass/BypassConfigModal.tsx index edec66b..6a3b854 100644 --- a/frontend/src/components/bypass/BypassConfigModal.tsx +++ b/frontend/src/components/bypass/BypassConfigModal.tsx @@ -3,12 +3,10 @@ import type { BypassConfigRequest, BypassConfigResponse, BypassParamDto, - BypassFieldDto, WebClientBeanInfo, } from '../../api/bypassApi'; import BypassStepBasic from './BypassStepBasic'; import BypassStepParams from './BypassStepParams'; -import BypassStepFields from './BypassStepFields'; interface BypassConfigModalProps { open: boolean; @@ -18,21 +16,19 @@ interface BypassConfigModalProps { onClose: () => void; } -type StepNumber = 1 | 2 | 3; +type StepNumber = 1 | 2; const STEP_LABELS: Record = { 1: '기본 정보', 2: '파라미터', - 3: 'DTO 필드', }; -const DEFAULT_FORM: Omit = { +const DEFAULT_FORM: Omit = { domainName: '', displayName: '', webclientBean: '', externalPath: '', httpMethod: 'GET', - responseType: 'LIST', description: '', }; @@ -49,10 +45,8 @@ export default function BypassConfigModal({ const [webclientBean, setWebclientBean] = useState(''); const [externalPath, setExternalPath] = useState(''); const [httpMethod, setHttpMethod] = useState('GET'); - const [responseType, setResponseType] = useState('LIST'); const [description, setDescription] = useState(''); const [params, setParams] = useState([]); - const [fields, setFields] = useState([]); const [saving, setSaving] = useState(false); useEffect(() => { @@ -64,20 +58,16 @@ export default function BypassConfigModal({ setWebclientBean(editConfig.webclientBean); setExternalPath(editConfig.externalPath); setHttpMethod(editConfig.httpMethod); - setResponseType(editConfig.responseType); setDescription(editConfig.description); setParams(editConfig.params); - setFields(editConfig.fields); } else { setDomainName(DEFAULT_FORM.domainName); setDisplayName(DEFAULT_FORM.displayName); setWebclientBean(DEFAULT_FORM.webclientBean); setExternalPath(DEFAULT_FORM.externalPath); setHttpMethod(DEFAULT_FORM.httpMethod); - setResponseType(DEFAULT_FORM.responseType); setDescription(DEFAULT_FORM.description); setParams([]); - setFields([]); } }, [open, editConfig]); @@ -90,7 +80,6 @@ export default function BypassConfigModal({ case 'webclientBean': setWebclientBean(value); break; case 'externalPath': setExternalPath(value); break; case 'httpMethod': setHttpMethod(value); break; - case 'responseType': setResponseType(value); break; case 'description': setDescription(value); break; } }; @@ -104,10 +93,8 @@ export default function BypassConfigModal({ webclientBean, externalPath, httpMethod, - responseType, description, params, - fields, }); onClose(); } finally { @@ -115,7 +102,7 @@ export default function BypassConfigModal({ } }; - const steps: StepNumber[] = [1, 2, 3]; + const steps: StepNumber[] = [1, 2]; return (
)} - {step === 3 && ( - - )}
{/* 하단 버튼 */} @@ -213,7 +196,7 @@ export default function BypassConfigModal({ 취소 )} - {step < 3 ? ( + {step < 2 ? ( - ))} - - - {/* 설명 */}