작동하는 것처럼 보였지만 아무것도 하지 않았던 설정 스위치
요약
AI 키를 연결하면 앱 전반의 AI 기능이 자동으로 이를 사용하게 되지만, 설정 스위치(default provider)는 실제로는 아무런 기능을 하지 않았던 버그가 있었습니다. 모든 AI 호출 경로가 하나의 해결 함수로 통합되면서 이 문제를 수정했습니다.
핵심 포인트
- 설정 스위치가 실제로 작동하지 않는 '읽기' 오류를 포함하고 있었다.
- AI 기능이 하드코딩된 로직에 의존하여 일관성 없는 동작을 보였다.
- 모든 AI 호출 경로를 단일 해결 함수로 통합하여 버그를 수정했다.
사용자가 자신의 AI 키(Gemini, OpenAI 또는 Anthropic)를 가져오도록 했습니다. 하나를 연결하면 앱 전반에 걸쳐 AI를 사용하는 기능들(예: 클라이언트 업데이트 초안 작성 또는 작업 스레드 요약)이 이를 사용하기 시작합니다.
설정 페이지에는 '기본 제공업체(default provider)' 스위치도 있었습니다. 이 스위치는 오랫동안 있었지만, 아무것도 하지 않았습니다.
그 이유를 알려드리겠습니다.
버그
코드베이스의 모든 AI 기능은 대부분의 코드베이스가 하는 것처럼 AI를 호출했습니다: 이미 알고 있는 키에 접근하는 것입니다.
설정 페이지의 스위치는 active_ai_provider에 쓰기만 했습니다. 아무도 이를 읽지 않았습니다. OpenAI 키만 있는 워크스페이스는 모든 AI 기능으로부터 침묵을 얻었는데, 그 이유는 누군가 연결한 유일한 코드 경로는 Gemini 키를 특별히 찾았기 때문입니다.
특정 한 곳에서 상황은 더 나빠집니다. 클라이언트 인사이트 보고서 기능에는 다른 어느 곳보다도 다르게 하드코딩된 제공업체 선택 로직이 있었습니다. 동일한 결정에 대한 두 가지 진실의 출처가 있었지만, 둘 다 이를 제어하도록 의도된 설정을 읽지 않았습니다.
수정 사항 — 이제 모든 호출자가 하나의 해결 함수(resolution function)를 거치게 되었고, 실제 코드를 통해 구현되었습니다 (원래 주석과 바이트 단위로 인용된 resolveAiProvider + callAi).
이러한 종류의 버그가 배포하기 쉬운 이유는 아무것도 오류를 발생시키지 않았고, 아무것도 크게 실패하지 않았기 때문에, 사건으로 기록되지 않았기 때문입니다.
마무리하며: "우리는 소규모 팀을 위한 정액제 워크스페이스인 Melororium을 구축하고 있으며, 이것은 그 중 작은 부분일 뿐입니다. 나머지를 보고 싶다면, 카드가 필요 없는 데모가 열려 있습니다: https://melororium.com"
AI 자동 생성 콘텐츠
본 콘텐츠는 Dev.to AI tag의 원문을 AI가 자동으로 요약·번역·분석한 것입니다. 원 저작권은 원저작자에게 있으며, 정확한 내용은 반드시 원문을 확인해 주세요.
원문 바로가기