Repository navigation
feat: Marketplace 배포를 위한 개인정보 보호와 다국어 UX 보강 - #1
Merged
Merged
Conversation
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
문제
외부 전송에 대한 명시적인 동의가 없었음
플러그인은 콘솔 로그와 빌드 정보를 셀프 호스팅 백엔드로 보내고, 정제된 프롬프트를 사용자가 선택한 LLM 제공자에게 전송합니다. 기존 구현에는 사용자가 전송 대상과 데이터를 확인하고 동의하는 절차가 없어 Marketplace 심사와 개인정보 보호 측면에서 보완이 필요했습니다.
한 번의 동의 확인만으로는 비동기 요청을 안전하게 막기 어려움
분석 작업은 백그라운드에서 실행되므로 작업 예약 이후 실제 HTTP 요청 전에 사용자가 동의를 철회하거나 정책 버전이 변경될 수 있습니다. 화면 진입 시 한 번만 확인하면 철회 이후에도 이미 예약된 요청이 전송될 가능성이 있었습니다.
한국어 UI와 사람이 읽는 안내 문구에 대한 결합
UI 문자열이 한국어로 고정되어 있어 Marketplace 심사자와 해외 사용자가 기능을 이해하기 어려웠습니다. 또한 백엔드의 한글 안내 문구를 파싱해 상태를 구분하면 문구 수정이나 다국어화가 클라이언트 동작에 영향을 줄 수 있었습니다.
포트폴리오 목적에 맞는 운영 비용 구조가 필요함
공용 백엔드를 운영하면 도메인, HTTPS, 가동률 및 남용 대응 비용이 지속적으로 발생합니다. 포트폴리오 프로젝트의 범위를 고려해 사용자가 직접 백엔드를 실행하는 셀프 호스팅 방식을 선택했습니다.
판단과 선택
네트워크 요청 직전까지 동의를 이중 확인
분석 작업을 예약하기 전에 동의를 확인하고, 각 HTTP 요청을 보내기 직전에 다시 확인하도록 구성했습니다.
첫 번째 확인은 동의하지 않은 작업의 실행을 막고, 두 번째 확인은 비동기 실행 사이에 발생할 수 있는 동의 철회와 정책 변경을 반영합니다. 단순한 최초 1회 동의 방식은 이 시간 차이를 보호하지 못하므로 사용하지 않았습니다.
사용자는 설정에서 동의를 철회할 수 있으며, 개인정보 처리방침 버전이 변경되면 다시 동의해야 합니다.
셀프 호스팅 백엔드 채택
플러그인 제작자가 사용자 로그를 보관하는 공용 서버를 운영하지 않고, 사용자가 자신의 환경에서 백엔드를 실행하도록 했습니다. 설치 직후 별도 서버 없이 동작하는 편의성은 줄지만 운영 비용과 중앙 서버의 개인정보 보관 위험을 피할 수 있습니다.
설정 방법과 전송되는 데이터는 Marketplace 설명, 개인정보 처리방침 및 리뷰 가이드에 명시했습니다.
영어 기본 UI와 한국어 번역 분리
Marketplace와 IntelliJ 기본 환경에서는 영어를 제공하고, 한국어는 별도 리소스 번들로 분리했습니다. UI 문자열을 코드에서 분리하여 추가 언어를 지원하거나 문구를 수정할 때 동작 로직을 변경하지 않도록 했습니다.
guidanceCode기반 상태 처리백엔드가 제공하는 안정적인
guidanceCode를 우선 사용하고, 알 수 없는 코드나 이전 백엔드와의 호환성을 위해 기존guidance문구를 fallback으로 유지했습니다.API 키는 IDE 보안 저장소에 보관
사용자가 입력한 LLM API 키는 IntelliJ
PasswordSafe에 저장하며 셀프 호스팅 백엔드로 전송하지 않습니다. 정제된 프롬프트는 사용자가 선택한 LLM 제공자에게 직접 전송됩니다.변경 내용
guidanceCode기반 상태 처리와 하위 호환 fallback 추가1.0.0적용검증
verifyPluginProjectConfiguration통과verifyPluginStructure통과META-INF/LICENSE, 다국어 리소스, 아이콘 및 동의 관련 클래스 포함 확인운영 및 호환성
sinceBuild=262이상 지원