---
task_id: task-1987
type: context
scope: task
created: 2026-04-20
updated: 2026-04-20
status: completed
---

# 맥락 노트: task-1987

**task**: task-1987

---

## 결정 근거

### Rate Limiting 방식 선택: slowapi
- slowapi는 FastAPI 공식 권장 라이브러리로, 데코레이터 패턴으로 기존 코드에 최소 침습 적용 가능
- 대안: Nginx rate limit → 인프라 의존성 추가 필요, 현 단계에선 과도
- AI 엔드포인트 30/min, 내부 API(anu-generate) 60/min으로 차등 설정

### 비용 차단기 설계
- token_usage_log 월별 합산 → $10/1M tokens 추정치로 비용 산출
- 임계치: 환경변수 AI_MONTHLY_COST_LIMIT (기본 $100)
- 조회 실패 시 pass (서비스 중단 방지 우선)
- HTTP 503 반환 (429와 구분 — 사용자 개인 한도 vs 시스템 전체 한도)

### fcpa/upload에 require_plan 미적용 판단
- 관리 기능으로 JWT 인증만으로 충분
- AI 호출이 있지만 anu_provider가 아닌 로컬 ai_parser 사용
- 비용 발생 최소 (외부 API 미호출)

## 3 Step Why 자문

1st Why: "왜 rate limiting + 비용 차단기가 필요한가?"
→ AI 엔드포인트 무제한 호출 시 서비스 비용 폭증 + DDoS 취약

2nd Why: "왜 애플리케이션 레벨 구현이 최선인가?"
→ 현재 배포 환경(단일 서버)에서 인프라 레벨(WAF/API Gateway) 없이 즉시 적용 가능

3rd Why: "왜 slowapi + 환경변수가 다른 대안보다 나은가?"
→ 코드 2줄(데코레이터+import)로 적용, 환경변수로 운영 시 재배포 없이 임계치 조정 가능. Redis 불필요.

## 참조 자료

- 체크리스트: `memory/plans/insuro-system/checklist.md` (SEC-1~4, G4-1~4 섹션)
- crypto.py: `/home/jay/projects/InsuRo/server/crypto.py` (Fernet 암호화)

## 주의사항

- G4-3 다중 계정 탐지는 미구현 상태. 별도 작업으로 계획 필요
- Naver 프록시 테스트 1건 기존 실패 (API 키 미설정 — 테스트 환경 한계)
- slowapi 패키지가 requirements.txt에 추가됨 → 배포 시 pip install 필요
