- DJBRequestProcessor: inbound.processor → custom.inbound.processor 이동
- ClientInflowTargetMetricService/Controller: custom.inflow 패키지 신규 생성
클라이언트 메트릭 API(/manage/inflow/client/**)를 InflowTargetMetric*에서 분리
- InflowTargetMetricService/Controller: 클라이언트 관련 메서드/엔드포인트 제거
- InflowTargetBucketService: getClientDualManager() 분리 반영
- standard-message-config.properties: requestProcessor.class 경로 업데이트
- 단위 테스트: ClientInflowTargetMetric{Service,Controller}Test 추가,
기존 테스트에서 클라이언트 케이스 분리
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
- InflowTargetBucketController: 버킷 상태 조회 REST API
GET /manage/inflow/adapter/bucket-status
GET /manage/inflow/adapter/{adapterId}/bucket-status
GET /manage/inflow/interface/bucket-status
GET /manage/inflow/interface/{interfaceId}/bucket-status
GET /manage/inflow/client/bucket-status
GET /manage/inflow/client/{clientId}/bucket-status
- InflowTargetBucketService: DualInflowControlManager 에서 버킷 상태 조회
- TargetBucketStatusDTO: 어댑터/인터페이스/클라이언트 공통 버킷 상태 DTO
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
- GroupMetricDTO: allowed/rejectedPerSecond/rejectedThreshold/rejectRatio 등
- InflowGroupMetricService: DualInflowControlManager를 통한 메트릭 조회·초기화
(getManager() protected 처리 — 단위 테스트 서브클래싱 지원)
- InflowGroupMetricController: 4개 엔드포인트
GET /{groupId}/metric, GET /metric
POST /{groupId}/metric/reset, POST /metric/reset
- 단위 테스트 2종 (Service 16건, Controller 8건) 전체 통과
- elink-online-common 서브모듈 포인터 업데이트
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Field 리플렉션으로 groupBucketList에 직접 접근하던 getCustomGroupBucket()을
InflowControlManager.getGroupBucket() public 메서드 호출로 교체.
불필요한 java.lang.reflect.Field, Map import 및 @SuppressWarnings 제거.
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
[standard-message-mapping-config-djb.properties]
- INST_CODE: eai_node_dvcd → xtis_cd 경로 수정
- REQ_SYS_CODE: 필드 경로 제거 (미사용)
[StandardMessageFlatFlowTest]
- HEAD.chnl_tycd EAI 값 검증 테스트 추가
[elink-online-common]
- RequestProcessor DJErp InterfaceID TODO 주석 추가 커밋 반영
[elink-online-transformer]
- feature/json-validation-test 머지 및 BigDecimal 검사 위치 수정 커밋 반영
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
[StandardMessageCoordinatorDJB]
coordinateAfterRecvNonStdSyncResponse()에서 dman_rspn_dvcd 미설정 버그 수정.
기본값이 S(요청)이므로, 정상응답 처리 시에도 R(응답)으로 명시적 설정.
→ FlatReader가 MSG 조건(!S) 평가 시 올바르게 블록 포함 판단.
[StandardMessageFlatFlowTest]
비ERP/ERP 요청, 오류응답, 정상응답, 거래로그 시나리오를 포함한
FLAT 직렬화→파싱 왕복 32개 통합 테스트 추가.
elink-online-common submodule 포인터 업데이트 (StandardItem FLAT 버그 픽스 포함).
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
- standard-layout-djb.csv: EZDATA size 1→0 변경
FlatReader가 refPath/refValue 조건(HEAD.corp_tlwn_virt_brcd=ERP)을 평가하여
비ERP 파싱 시 EZDATA 블록을 자동으로 size=0 유지 → 직렬화 제외
- StandardMessageEzdataJsonFlowTest: 비ERP 검증 강화
ERP 전용 필드 빈값 검증 → size=0 확인 + JSON 직렬화 제외 직접 검증으로 변경
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
- standard-layout-djb.csv: HEAD ERP 고정값(tx_cmgr_cd=S004, mgmt_brcd/tx_brcd/insl_brcd/blng_brcd=260),
정상 MSG 필드(outp_msg_cd=NCMM00001, outp_msg_ctnt=정상처리되었습니다.) 기본값 추가,
msg_list_rowcnt 기본값 00000→0 수정
- StandardMessageCoordinatorDJB: setErpHeadFields() 및 관련 상수 제거,
coordinateAfterRecvNonStdSyncResponse 명시적 setData 호출 제거 (CSV 기본값으로 대체),
evaluateBlockCondition() 추가로 EZDATA 활성화 조건을 CSV refPath/refValue에서 동적 평가,
elfn_spr_fild 설정값을 ezdataItem.getRefValue()로 CSV에서 읽도록 변경
- StandardMessageSpecTest: tx_cmgr_cd가 항상 CSV 기본값으로 설정되므로 비ERP_ERP_HEAD_필드_미설정 테스트 제거
- 작업내역_20260421.md: 리팩터링 내용 반영
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
요청 처리:
- ERP 채널(corp_tlwn_virt_brcd=ERP) HEAD 지점코드 자동 설정 (tx_cmgr_cd, mgmt_brcd 등)
- ERP 채널 EZDATA 전자금융공통영역 자동 설정 (elfn_bnkn_dvcd=10, svr_tx_seqno, elfn_mac, IP)
응답 처리:
- coordinateBeforeResponse: guid_prgs_no +1, dman_rspn_dvcd="R" 설정 추가
- coordinateAfterRecvNonStdSyncResponse: 정상 MSG msg_list_rowcnt=0으로 수정, 정상처리 코드/메시지 업데이트
오류 처리:
- coordinateSetStandardMessageError: MSG_LIST에 outp_msg_desc, err_occu_loct 추가
테스트:
- StandardMessageSpecTest: 요청/응답 스펙 전체 62개 항목 검증
- StandardMessageEzdataJsonFlowTest: EZDATA JSON 흐름 22개 검증
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
- standard-layout-djb.csv: HEAD(평면구조)/EZDATA/MSG/DATA/전문종료부(@JJ) 레이아웃 정의
- standard-message-mapping-config-djb.properties: 논리키 → 필드경로 매핑 (GUID 40자, guid_prgs_no 별도 필드 등)
- standard-message-config.properties: DJB 클래스로 전환 (CSV 방식)
- GUIDGeneratorDJB: 40자 GUID 생성 (일자+시간+밀리초+시스템코드+노드+세션+Random)
- InterfaceMapperDJB: GUID 40자, guid_prgs_no 독립 필드, 응답코드 S/F 변환
- StandardMessageCoordinatorDJB: 전문 생성/응답/에러 각 단계 후처리
- 단위테스트 45개 전체 통과 (GUIDGenerator/InterfaceMapper/Layout 검증)
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>