WebSocket Runtime Validation
외부 입력을 신뢰하기 전, 공통 수신 경계에서 검증
TypeScript 타입만으로는 실제 JSON payload를 보장할 수 없습니다. 검증
없이 Component Handler에 도달하던 데이터를
Message.receive()에서 OP별로 검사하도록 개선했습니다.
RUNTIME MESSAGE FLOW
received$ { op, data }Message.receive()VALIDATION BOUNDARY
getMessagePayloadGuard(op)
Handler에 도달하기 전에 차단
Guard가 없는 OP는 기존 경로를 유지합니다. 필요한 OP부터 점진적으로 검증을 적용합니다.
map(message.data)@MessageListener
@MessageListener에서 실패한 OP context를 기록하고
원래 오류를 다시 던져 기존 error propagation을 유지합니다.
OP와 실제 payload를 동시에 알고, subscriber에 넘기기 직전인 공통 지점입니다. Handler마다 검증하면 여러 component에 분산될 책임을 수신 경계에 모았습니다.
LIST_UPDATE_NOTE_JOBSnoteId:string, isRemoved:boolean 필수.true →
noteName 생략 허용false →
noteName:string 필수
VERIFICATION / REGRESSION SCENARIOS
| 검증 시나리오 | 기대 동작 |
|---|---|
| 정상 update / removal stub | Handler 전달 · stub은 noteName 없이 허용 |
| Malformed update | Handler 전달 차단 + OP warning |
| Guard 없는 OP | 기존 동작 유지 |
| Handler exception | OP context 기록 · 오류 전파 · 이후 메시지 처리 유지 |