v2.2.313~319: 보고 품질·조사 신뢰성 수술 + 네이버 쇼핑인사이트/검색어트렌드 연동

- 파트별 완성, 웹 실접속 증빙, 턴 의도 브리핑, 본문 불일치 검증, 하위 질문
  체크리스트, 사이트 심층 수집 (PATCHNOTES.md v2.2.313~318 참조)
- /naver-shopping, /naver-trend: 네이버 데이터랩 API 연동. compare/discover
  자동 판별, API 배치 상한 캡슐화, 카테고리 트리 fuzzy 매칭, 자격증명은
  Astra 설정 패널 SecretStorage 로 관리
This commit is contained in:
2026-08-05 18:20:32 +09:00
parent 7d6b8b509f
commit c79eda1862
51 changed files with 37435 additions and 89 deletions
+24
View File
@@ -98,6 +98,11 @@
const prGeminiKey = $('prGeminiKey');
const prGeminiDefault = $('prGeminiDefault');
// ---- Naver Trend ----
const naverStatus = $('naverStatus');
const naverClientId = $('naverClientId');
const naverClientSecret = $('naverClientSecret');
// ---- Banner ----
const bannerError = $('bannerError');
@@ -300,6 +305,16 @@
vscode.postMessage({ type: 'providers.update', providerId: 'gemini', defaultModel: prGeminiDefault.value })
);
// ---- Naver Trend listeners ----
document.querySelector('[data-save="naver.clientId"]').addEventListener('click', () => {
vscode.postMessage({ type: 'naver.update', clientId: naverClientId.value });
naverClientId.value = '';
});
document.querySelector('[data-save="naver.clientSecret"]').addEventListener('click', () => {
vscode.postMessage({ type: 'naver.update', clientSecret: naverClientSecret.value });
naverClientSecret.value = '';
});
document.querySelector('[data-save="advanced.ctxSize"]').addEventListener('click', () =>
vscode.postMessage({ type: 'advanced.update', maxContextSize: Number(advCtxSize.value) })
);
@@ -552,6 +567,15 @@
prGeminiKey.placeholder = pr.gemini.hasApiKey ? '••• 저장됨 (덮어쓰려면 새 값)' : 'AIzaSy...';
setIfNotFocused(prGeminiDefault, pr.gemini.defaultModel);
}
// ---- Naver Trend ----
const nv = state.naver;
if (nv) {
naverClientId.placeholder = nv.hasCredentials ? '••• 저장됨 (덮어쓰려면 새 값 입력)' : 'X-NCP-APIGW-API-KEY-ID';
naverClientSecret.placeholder = nv.hasCredentials ? '••• 저장됨 (덮어쓰려면 새 값 입력)' : 'X-NCP-APIGW-API-KEY';
naverStatus.textContent = nv.hasCredentials ? '✅ Client ID/Secret 설정됨' : '⛔ 미설정 — /naver-shopping, /naver-trend 사용 불가';
naverStatus.style.color = nv.hasCredentials ? '#10b981' : '';
}
}
// ---- Tabs (카테고리 네비) — 표현 계층만. 기존 refs/리스너/state 에 무영향 ----