SOHEE KIMWEB DEVELOPER

어떤 경험이 궁금하세요?

ENGINEERING / DECISION LOG

해결한 문제

무엇이 잘되지 않았고,
왜 이 방법을 선택했는지.

운영 중 마주한 오류와 지연을 출발점으로,
원인을 좁히고 처리 기준을 정한 과정을 기록합니다.

잘못 인식한 말이 검색 실패로 이어질 때

마주한 문제
음성 인식 결과를 그대로 검색에 사용하면 잘못 인식한 단어가 검색 결과에도 영향을 줍니다.
선택한 방법
음성 인식 이후 LLM 보정과 RAG 검색을 연결하고, 검색 결과를 화면에서 실행할 JSON 액션으로 변환했습니다.
적용한 결과
말을 텍스트로 바꾸는 단계부터 검색과 화면 동작까지 하나의 처리 흐름으로 연결했습니다.
음성 보정과 검색 흐름 읽기

다시 접속한 화면은 언제 그룹에 합류해야 할까

마주한 문제
단말의 연결이 끊기거나 늦게 합류하면, 현재 재생 상태와 그룹의 전환 시점이 달라질 수 있습니다.
선택한 방법
재접속한 단말은 현재 콘텐츠를 먼저 개별 재생하고, 다음 콘텐츠 전환 명령부터 그룹 동기화에 합류하도록 했습니다.
적용한 결과
방장 연결 해제에 따른 제어 역할 승계와 멤버 재접속을 구분해, 상황별 복구 흐름을 구성했습니다.
재접속과 재생 복구 과정 읽기

통계 화면이 느릴 때, 어디서 계산을 줄일까

마주한 문제
정산·매출·원가·할인 데이터를 함께 조인하는 통계 조회가 무거워졌습니다.
선택한 방법
인덱스를 적용하고 조인 전에 데이터를 줄였습니다. 전날 데이터를 미리 집계해 조회 시 반복하는 계산을 나눴습니다.
적용한 결과
저장 프로시저에서 통계 계산을 나누고, 계산된 데이터를 운영 화면의 시각화로 연결했습니다.
조회 구조를 바꾼 과정 읽기

이미 들려준 안내를 다시 합성해야 할까

마주한 문제
동일한 안내도 매번 TTS API에 요청하면 네트워크 지연이나 단절이 음성 재생에 영향을 줍니다.
선택한 방법
안내 문구의 해시로 로컬 MP3를 먼저 조회하고, 파일이 없을 때만 원격 합성 후 저장하도록 했습니다.
적용한 결과
한 번 저장한 안내는 네트워크 없이 다시 재생할 수 있도록 했습니다.
음성 파일 캐싱 흐름 읽기

같은 실패라도 화면의 다음 동작은 달라야 합니다

마주한 문제
웹 요청에 대한 응답과 앱이 먼저 보내는 이벤트가 섞이면, 화면이 무엇을 기다리고 어떻게 처리할지 모호해집니다.
선택한 방법
command와 messageId로 요청·응답 기준을 정하고, 실패 코드를 화면 중단·경고 후 진행·직원 호출로 나눴습니다.
적용한 결과
기획의 처리 조건을 통신 규약과 화면 분기에 연결해 구현 기준으로 사용했습니다.
요청과 실패 처리 규약 읽기