Vision·얼굴 검증·음성 연계 — 상세 구조도
기준 커밋:
1398d109c391c4044cae26d0e9aea4d3f08d9670. 도식은 기존 구현을 설명한다. 제품 이미지 설치·실기기 성공을 증명하지 않는다.
VisionAgent의 두 Service와 DeviceAgent 음성 조정 / LLMAgent 골격 구분
SVG 원본 크게 열기 · Mermaid 원본 · 모듈 분석 본문
읽는 순서와 연결 의미
행은 책임·실행 경로별 묶음이며 별도 프로세스라는 뜻은 아니다. 같은 행의 인접 연결은 화살표로, 행을 넘거나 떨어진 상자 사이 연결은 동일한 E 번호의 출력·입력 포트로 표시한다. 아래 표는 방향과 의미를 모두 풀어 쓴 것이다. 그림의 코드 파일명을 눌러 저장소로 이동하는 기능은 없으며, 아래 경로로 지정 커밋을 조회할 수 있다.
| 연결 | 출발 → 도착 | 동작 | 종류 |
|---|---|---|---|
| E01 | VisionAIManager → VisionAgent | Binder | 호출·명령 |
| E02 | VisionAgent → 외부 vision-data 앱 | broadcast | 호출·명령 |
| E03 | 외부 vision-data 앱 → sendReport / Status | report 입력 | 결과·이벤트 |
| E04 | FaceVerifyService → 얼굴 SDK 경계 | startRecognition | 호출·명령 |
| E05 | 얼굴 SDK 경계 → callbackToClient | listener | 결과·이벤트 |
| E06 | callbackToClient → WSS 검증 조정 | client 경유 결과 | 결과·이벤트 |
| E07 | SoundFlowManager → 외부 SoundFlow HAL | HAL 호출 | 호출·명령 |
구성요소별 책임과 코드 근거
| 상자 | 구성요소 | 책임·상태 | 지정 커밋의 소스 경로 |
|---|---|---|---|
| N01 | VisionAIManager | DeviceAgent client / IVisionControl / IFaceControl | apps/DeviceAgent/app/src/main/java/com/sk/airbot/deviceagent/recognition/VisionAIManager.java |
| N02 | VisionAgent | IVisionControl Stub / set/getVisionEnable | apps/VisionAgent/java/com/sk/airbot/visionagent/VisionAgent.java |
| N03 | 외부 vision-data 앱 | 명시적 broadcast / 모델 내부는 저장소 밖 | apps/VisionAgent/java/com/sk/airbot/visionagent/VisionAgent.java |
| N04 | sendReport / Status | Bundle report 구성 / IVisionControlCallback | apps/VisionAgent/java/com/sk/airbot/visionagent/VisionAgent.java |
| N05 | FaceVerifyService | IFaceControl.startRecognition / SDK 초기화·인식 요청 | apps/VisionAgent/java/com/sk/airbot/visionagent/FaceVerifyService.java |
| N06 | 얼굴 SDK 경계 | SDK listener 결과 / 모델 내부·정확도 미검증 | apps/VisionAgent/java/com/sk/airbot/visionagent/FaceVerifyService.java |
| N07 | callbackToClient | WssIpcThread / RemoteCallbackList | apps/VisionAgent/java/com/sk/airbot/visionagent/FaceVerifyService.java |
| N08 | WSS 검증 조정 | DeviceAgent가 결과 소비 / 성공·실패별 자료 처리 | apps/DeviceAgent/app/src/main/java/com/sk/airbot/deviceagent/wss/eventasset/WssEventAssetManager.java |
| N09 | LlmManager | TTS·언어·voice 상태 Bundle / 앱 간 요청·상태 연계 | apps/DeviceAgent/app/src/main/java/com/sk/airbot/deviceagent/llm/LlmManager.java |
| N10 | SoundFlowManager | ISoundFlowService 연결 / OTA·오디오 상태 이벤트 | apps/DeviceAgent/app/src/main/java/com/sk/airbot/deviceagent/system/SoundFlowManager.java |
| N11 | 외부 SoundFlow HAL | 오디오 엔진 구현 경계 / 연결·실제 출력은 별도 증거 | apps/DeviceAgent/app/src/main/java/com/sk/airbot/deviceagent/system/SoundFlowManager.java |
| N12 | LLMAgent | ILLMControl Binder 골격 / 추론·STT·TTS 엔진 없음 | apps/LLMAgent/java/com/sk/airbot/llmagent/LLMAgent.java |
해석 경계와 변경 시 검토
- Vision broadcast와 Face SDK는 다른 실행 경로다. 별도 Service를 별도 프로세스로 단정하지 않는다.
- LLMAgent 골격을 완성된 별도 voice agent와 연결해 그리지 않는다.
- callback 수신은 얼굴 인증 정확도·TTS 실제 스피커 완료 증거가 아니다.