--- kind: CASE slug: analysis-finding-a17-f003 title: 능력 프로퍼티 이름을 만드는 코드와 실제 게이트가 다른 접두사를 쓴다 topic: websocket-and-realtime project: clean-architecture-backend-template status: 게시 전 sourceRevision: 21234e38cdb9a926cbc92bb97a2aee2e4a7d2916 rootTreeNode: case:analysis-finding-a17-f003 evidenceCapturedOn: 2026-09-01 assets: - key: analysis-finding-a17-f003 file: ../../../final/evidence/rendered/analysis-finding-a17-f003.svg evidence: - ../../../final/evidence/raw/analysis-finding-a17-f003.txt source: - 원본 분석 절은 analysis/17-adapter-inbound-websocket.md#L426 이다. --- # 능력 프로퍼티 이름을 만드는 코드와 실제 게이트가 다른 접두사를 쓴다 능력 열거형의 속성 이름 메서드가 한 이름공간의 키를 만든다. 그 키를 읽는 조건 애너테이션이 없다. 실제로 능력을 켜는 키는 다른 이름공간에 있다. ## 관계 - **속성 이름 메서드가 아무것도 게이트하지 않는 이름을 반환한다** 다른 리프의 같은 형태다. - **연결 티켓과 origin 정책과 메시지 권한과 연결 예산이 요청 경로 밖이고 일부는 다른 방식으로 대체된다** 같은 리프의 상위 사실이다. - **운영자가 문서를 보고 설정하면 켜지지 않는다** 기록하는 이유다. ## 문제 고급 능력 열거형이 속성 이름을 계산하는 메서드를 가진다. 그 이름이 실제 게이트와 같은지 확인했다. ## 결론 다르다. 그 메서드가 반환하는 이름공간의 키를 읽는 조건 애너테이션이 없다. 운영자가 그 메서드가 알려 주는 키를 설정하면 아무 일도 일어나지 않는다. 실제로 능력을 켜는 키는 다른 접두를 쓰는 이름공간에 있다. 이것은 그 이름공간 전체가 소비자를 갖지 않는다는 상위 사실의 부분집합이다. 판정은 P3 다. ## 검증 환경 확인 방식 : 속성 이름 메서드 반환값과 조건 애너테이션 대조 소스 수정 : x ## 재현 조건 원문은 final/evidence/raw/185 계열에 있다. 1. 능력 열거형의 속성 이름 메서드를 읽는다. 2. 그 이름공간의 키를 읽는 조건 애너테이션을 검색한다. 3. 실제로 능력을 켜는 키를 확인한다. 4. 두 이름공간의 접두를 대조한다. ## 본문 `WebSocketAdvancedCapability.propertyName()`이 반환하는 `backend.websocket.advanced.*`를 읽는 `@ConditionalOnProperty`가 없다(§21.2). ## propertyName() 이 반환하는 접두사 :::evidence key="analysis-finding-a17-f003" alt="분석 문서 analysis/17-adapter-inbound-websocket.md 에서 이 기록의 근거 절을 그대로 잘라낸 15줄. 코드베이스를 측정한 것이 아니라 원본 판정이 무엇을 적었는지를 보여 준다." caption="analysis/17-adapter-inbound-websocket.md 발췌 — 15줄" zoom="true" ::: ## 운영자가 그 키를 설정하면 아무 일도 일어나지 않는다 실제로 능력을 켜는 키는 `app.websocket-platform.advanced.*`다. ## 확인하지 못한 것 그 키를 설정하고 띄워 아무 일도 일어나지 않는 것을 재현하지 않았다. 소비자 부재상 그 결과가 나온다.