Skip to content

Feature/main features#17

Merged
trz-21 merged 13 commits into
mainfrom
feature/main-features
Jun 7, 2026
Merged

Feature/main features#17
trz-21 merged 13 commits into
mainfrom
feature/main-features

Conversation

@trz-21

@trz-21 trz-21 commented Jun 7, 2026

Copy link
Copy Markdown
Collaborator

핵심 기능들 구현

image

trz-21 and others added 13 commits June 7, 2026 12:55
JWT + argon2 기반 register/login API를 Hexagonal 구조로 추가.
- users 마이그레이션, User/Plan 도메인 모델
- UserRepository 포트 + PgUserRepository 어댑터
- AuthService 포트 + StandardAuthService (해시/토큰)
- register(201)/login(200) 핸들러, 라우터/AppState 연결
- 단위 9개 + 통합 5개 테스트

수익(플랜 제한) 로직은 제외.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
분석 기능의 도메인·포트·어댑터 계층 추가 (서비스/HTTP는 후속).
- analyses 마이그레이션, Analysis/AnalysisResult/Insights 모델
- AnalysisRepository/CoupangCrawler/AiAnalyzer 포트
- PgAnalysisRepository (JSONB result, testcontainer 테스트)
- MockCoupangCrawler + HttpCoupangCrawler (방어적 파싱 헬퍼)
- MockAiAnalyzer + ClaudeAiAnalyzer (프롬프트/파싱 헬퍼)
- 신규 단위테스트 13개

수익(플랜 제한) 로직 제외.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
분석 비동기 파이프라인 + 인증 미들웨어 + HTTP 엔드포인트로 백엔드 MVP 완성.
- StandardAnalysisService: create→spawn(process_analysis: crawl/aggregate/analyze)
- StandardUserService: /users/me 사용량(플랜 제한 없음)
- AuthUser 추출기(Bearer 토큰 검증)
- POST /analyses(202), GET /analyses/:id, GET /analyses 목록, GET /users/me
- config claude_api_key/model, main 어댑터 조립
- 단위 8개 + 통합 4개 테스트

수익(플랜 제한 강제) 로직 제외.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
- useAuthStore (Zustand + persist localStorage)
- QueryProvider (TanStack Query) 루트 레이아웃 연결
- 로그인/회원가입 페이지 (api 호출 → setAuth → /dashboard)
- store 3개 + login 페이지 1개 테스트

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
- 인증 가드 레이아웃 (하이드레이션 안전, 미인증 시 /login)
- 대시보드: URL 입력 → createAnalysis → 결과 페이지 이동
- 히스토리 목록 (useQuery + listAnalyses)
- UrlInput/AnalysisCard 컴포넌트 추출
- 신규 테스트 12개 (컴포넌트 10 + 페이지 2)

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
- useAnalysisPolling 훅 (TanStack Query v5, 2초 폴링, 완료/실패 시 중단)
- InsightReport: 개선 TOP3/경쟁사 약점/구매 요인/평점 분포
- 분석 결과 페이지 (진행중/완료/실패 상태별 UI)
- frontend.md 폴링 예시 v5 동기화
- 신규 테스트 14개

MVP 사용자 흐름(입력→분석→리포트) 완성. 수익 기능 제외.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
- adapters/claude → adapters/gemini (ClaudeAiAnalyzer → GeminiAiAnalyzer)
- generateContent API + x-goog-api-key + responseMimeType=application/json
- config/env: CLAUDE_* → GEMINI_*, 기본 모델 gemini-2.5-flash
- AiAnalyzer 포트/Insights 모델/MockAiAnalyzer 폴백은 유지
- 스펙(tech-stack/backend/harness) 동기화

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
- DEFAULT_MODEL / config fallback / .env / 테스트 헬퍼 기본값 교체
- gemini-2.5-flash → gemini-2.0-flash-lite (현재 지원 최저가)
- 스펙(tech-stack/backend) 동기화

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
- Next.js 기본 보일러플레이트 page.tsx 제거
- 토큰 보유 → /dashboard, 비로그인 → /login (mount 후 replace)
- root-page 리다이렉트 분기 테스트 추가
- 스펙(frontend.md) 동기화

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
- 로그인 후에도 인증 필요 호출이 401 되던 버그 수정
- useAuthStore.getState().token → Bearer 헤더 첨부
- 토큰 유무별 헤더 첨부 동작 회귀 테스트 추가

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
- 제공된 키에서 gemini-2.0-flash-lite는 free tier 쿼터 0(429),
  gemini-2.5-flash는 200 정상 → 기본 모델 교체
- DEFAULT_MODEL / config fallback / .env / 테스트 헬퍼 / 스펙 동기화

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
- next-api/review 엔드포인트 + 완전한 브라우저 헤더로 재구현
- COUPANG_PROXY_URL 스크래핑 API 프록시 패스스루({url} 치환)
- CRAWLER_MODE(http|mock) 토글 — 로컬 데모는 mock+실제 Gemini
- AppError::detail() + tracing으로 실패 원인 노출(403 등)
- parse_reviews 재귀 탐색/상품명 깊이 탐색, 크롤러 테스트 6종 추가

진단: 데이터센터 IP는 쿠팡 Akamai가 403 차단 → 헤더/쿠키로 우회 불가.
안정적 수집은 프록시(스크래핑 API) 또는 가정용 IP 필요.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
@trz-21 trz-21 merged commit 95ed577 into main Jun 7, 2026
0 of 2 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant