---
task_id: task-2333
type: plan
scope: task
created: 2026-04-30
updated: 2026-04-30
status: completed
---

# 계획서: task-2333 — InsuRo 복합설계 AI 계산기 Phase 1

**task**: task-2333
**목표**: InsuRo에 복합설계 계산기 MVP를 추가. ohmymanager API 데이터 캐시 + C(N,3) 보험사 조합 최적화 + 인카 RLS 가드.
**승인**: 제이회장님 (2026-04-30) — 한정승인 Lv.4
**근거**: `/home/jay/workspace/memory/plans/insuro-composite-design/plan.md` (마스터) + `2026-04-30-composite-design-calculator.md` (미팅)

---

## 목표

보험 FA가 복합설계 시 1사/2사/3사 최적 보험사 조합을 즉시 계산. 수작업 30분 → 3초 단축.

## 범위

### 포함 (Phase 1 MVP)
- DB 마이그레이션: ohmy_plans, ohmy_coverages, ohmy_premiums, ohmy_raw_responses, ohmy_crawl_logs (+ 부분 unique 인덱스)
- 32개 핵심 담보 시드 (실제 coverage_cd 매핑)
- ohmymanager API 수집 스크립트 (포아송 9분, 3패턴, circuit breaker, UPSERT, 체크포인트)
- composite_calculator: 1사/2사/3사 조합 (보험사당 1만원 제약, 가입금액 비례 환산)
- API 3개: GET composite-coverages, GET composite-plans, POST composite-calculate (인카 가드)
- 프론트 CompositeDesign 페이지 + 라우트 + 메뉴

### 제외 (Phase 2+)
- 74개 전체 플랜 등록 (Phase 1: 1개 placeholder)
- 1세 단위 수집 (Phase 1: 5세 단위)
- Tailscale exit node IP 분산 (Phase 1: 단일 서버)
- PDF 출력, 비선형 담보 가입금액 수집

## 위임 계획

- Step 1-2 DB+시드: **루(Lugh)** — 백엔드
- Step 3 수집기: **루(Lugh)** — 백엔드
- Step 4-5 계산기+API: **루(Lugh)** — 백엔드
- Step 6 UI: **브리짓(Brigid)** — 프론트엔드
- L1 검증: **다그다(팀장)** — 통합 테스트

## 검증 기준

- 5개 테이블 + idx_ohmy_prem_active 인덱스 존재 확인
- ohmy_coverages count = 32, 실제 coverage_cd (a001~e039)
- 수집 1건 실 호출 → ohmy_premiums INSERT (561행 누적)
- 단위 테스트 11/11 PASS (test_composite_calculator)
- API TestClient 호출: 401 (no auth) → 인증 가드 동작
- npm run build 성공 + CompositeDesign 청크 생성
- 프론트 라우트 /composite-design → /login 리다이렉트 (인증 가드)
