feat: Phase 5-6 — Shared Types, 테스트 109건, 보안 강화, 폼 검증#2
Open
DrJinHoChoi wants to merge 7 commits intomasterfrom
Open
feat: Phase 5-6 — Shared Types, 테스트 109건, 보안 강화, 폼 검증#2DrJinHoChoi wants to merge 7 commits intomasterfrom
DrJinHoChoi wants to merge 7 commits intomasterfrom
Conversation
…안 강화, 폼 검증 통합 Phase 5: - 5A: @etp/shared 타입 통합 — WebSocket 이벤트 타입, API 응답 타입 정의, 프론트엔드 5개 페이지 로컬 인터페이스를 shared 타입으로 교체 - 5B: 라우터 경화 — 404 NotFound 페이지, RouteErrorBoundary, App.tsx catch-all 라우트 추가 - 5C: 대시보드 최근 거래 피드 — backend getRecentTrades 엔드포인트, 한국어 상대시간 유틸, 실시간 WebSocket 피드 - 5D: 프론트엔드 테스트 0건→109건 — UI 컴포넌트 6개, 페이지 4개, 스토어/서비스 5개 테스트 파일 Phase 6 (진행 중): - 6A: 백엔드 보안 강화 — 비밀번호 강도 검증(@matches 데코레이터), 엔드포인트별 Rate Limiting(로그인 5회/분, DID 3회/분), 환경변수 시작 시 검증(class-validator), DID privateKey 클라이언트 노출 제거 - 6B: 프론트엔드 폼 검증 통합 — Zod v4 + react-hook-form으로 Login 페이지 리팩토링, auth/wallet/trading Zod 스키마 생성 테스트: 백엔드 101개 + 프론트엔드 109개 = 총 210개 통과 Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
- CI/CD: Redis 서비스 추가, Lint 단계, prisma migrate deploy, E2E 테스트 단계 - Trading.tsx/Wallet.tsx: react-hook-form + Zod 스키마 연결 및 인라인 에러 표시 - auth.e2e-spec: 강한 비밀번호 적용 + 약한 비밀번호 거부 테스트 추가 - trading.e2e-spec: 매수 주문, 유효성 검증, 주문 매칭 플로우 테스트 추가 - settlement.e2e-spec (신규): 정산 조회/생성/확인/분쟁 제기/분쟁 거부 E2E - token.e2e-spec (신규): 잔고 조회/이체 검증/관리자 권한/잔고 일관성 E2E Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
ESLint 패키지가 devDependencies에 없어 CI에서 'eslint: not found' 에러 발생. ESLint 설정 완료 후 lint 단계를 다시 추가할 예정. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
CI 환경에서 register 시 DID 자동발급이 실패할 수 있어, trading/settlement E2E 테스트의 beforeAll에서 명시적으로 POST /api/auth/did/issue를 호출하여 DID를 보장함. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
E2E jest config에서 uuid mock mapping을 제거하여 실제 UUID가 생성되도록 함. mock UUID는 모든 사용자에게 동일한 DID를 생성하여 unique constraint 에러를 유발함. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
모든 E2E 테스트에서 ThrottlerGuard를 비활성화하여 다수의 register/login 요청이 rate limiting에 걸리지 않도록 함. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
APP_GUARD로 등록된 ThrottlerGuard는 overrideGuard가 아닌 overrideProvider로 오버라이드해야 함. 비밀번호 강도 테스트 4개 복원. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
@etp/shared타입 통합 — WebSocket 이벤트/API 응답 타입 정의, 프론트엔드 5개 페이지의 로컬 인터페이스를 shared 타입으로 교체 (any 제거)Test plan
pnpm --filter backend test)pnpm --filter frontend test)pnpm --filter backend build)pnpm --filter frontend build)/nonexistent접속 시 404 페이지 표시 확인🤖 Generated with Claude Code