fix: Email Routing MIME 파싱 개선 + 레거시 코드 정리

- Email Routing에서 수신한 이메일 파싱 수정
  - Quoted-Printable UTF-8 디코딩 함수 추가
  - HTML <br/> 태그를 줄바꿈으로 변환
  - SMS 키워드 위치 기반 본문 추출

- 레거시 코드 삭제
  - /api/bank-notification 엔드포인트 제거 (Email Routing으로 대체)
  - BANK_API_SECRET 관련 코드 및 문서 제거
  - DEPOSIT_AGENT_ID 제거 (Assistants API → 코드 직접 처리)

- CLI 테스트 클라이언트 개선
  - .env 파일 자동 로드 지원
  - WEBHOOK_SECRET 환경변수 불필요

- 문서 업데이트
  - NAMECHEAP_API_KEY 설명 명확화 (래퍼 인증 키)
  - CLI 테스트 섹션 추가

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
This commit is contained in:
kappa
2026-01-18 13:12:26 +09:00
parent edbd790538
commit 89f8ea19f1
8 changed files with 156 additions and 215 deletions

View File

@@ -253,8 +253,7 @@ function selectToolsForMessage(message: string): typeof tools {
}
// 도메인 추천 함수
async function suggestDomains(keywords: string, apiKey: string): Promise<string> {
const namecheapApiKey = '05426957210b42e752950f565ea82a3f48df9cccfdce9d82cd9817011968076e';
async function suggestDomains(keywords: string, apiKey: string, namecheapApiKey: string): Promise<string> {
const namecheapApiUrl = 'https://namecheap-api.anvil.it.com';
const TARGET_COUNT = 10;
const MAX_RETRIES = 3;
@@ -1123,11 +1122,15 @@ async function executeTool(name: string, args: Record<string, string>, env?: Env
console.log('[suggest_domains] 시작:', { keywords });
if (!env?.OPENAI_API_KEY) {
return '🚫 도메인 추천 기능이 설정되지 않았습니다.';
return '🚫 도메인 추천 기능이 설정되지 않았습니다. (OPENAI_API_KEY 미설정)';
}
if (!env?.NAMECHEAP_API_KEY) {
return '🚫 도메인 추천 기능이 설정되지 않았습니다. (NAMECHEAP_API_KEY 미설정)';
}
try {
const result = await suggestDomains(keywords, env.OPENAI_API_KEY);
const result = await suggestDomains(keywords, env.OPENAI_API_KEY, env.NAMECHEAP_API_KEY);
console.log('[suggest_domains] 완료:', result?.slice(0, 100));
return result;
} catch (error) {