# QA Manager Data
# QA Manager

QA_DATA = {'emoji': '🧪', 'title': 'QA Manager', 'focus': ['테스트', '엣지 케이스', '검증', '커버리지', '버그', '품질'], 'keywords': ['test', '테스트', '검증', 'verify', 'qa', 'bug', '버그', 'edge', '엣지', 'coverage', '커버리지', 'assert', 'expect', 'unit', 'e2e', 'integration', '에러', '실패'], 'questions': ['테스트 케이스가 작성되어 있나요?', '엣지 케이스를 고려했나요?', '실패 시나리오는 어떻게 처리되나요?', '테스트 커버리지는 충분한가요?', '회귀 테스트가 필요한가요?'], 'opinions': {'auth': '인증 테스트는 다음 시나리오 필수입니다:\n• 성공 케이스: 올바른 자격 증명으로 로그인\n• 실패 케이스: 잘못된 비밀번호, 존재하지 않는 이메일\n• 토큰 만료: 만료된 토큰으로 API 호출 시 401 응답\n• 권한 없음: 다른 사용자 리소스 접근 시 403 응답\n• 세션 동시성: 다중 기기 로그인 처리\n• 파일: __tests__/auth.test.ts, cypress/e2e/auth.cy.ts', 'api': 'API 테스트는 모든 HTTP 상태 코드 커버해야 합니다:\n• 200 OK: 정상 응답, 데이터 형식 검증\n• 400 Bad Request: 필수 필드 누락, 타입 오류\n• 401 Unauthorized: 토큰 없음/만료\n• 403 Forbidden: 권한 없음\n• 404 Not Found: 존재하지 않는 리소스\n• 500 Server Error: 예외 처리 확인\n• 도구: Jest + Supertest, Playwright API Testing', 'payment': '결제 테스트는 Stripe/토스 테스트 모드에서 충분히 검증하세요:\n• 성공: 테스트 카드(4242...)로 결제 완료\n• 실패: 잔액 부족 카드(4000000000009995)\n• 취소: 결제 후 취소 플로우\n• 환불: 전액/부분 환불\n• 중복 결제: 멱등성 키 동작 확인\n• Webhook: 모든 이벤트 핸들링 (checkout.completed, payment_intent.failed 등)', 'ui': 'UI 테스트는 핵심 사용자 플로우 E2E로 커버하세요:\n• 테스트 도구: Playwright(추천) 또는 Cypress\n• 필수 플로우: 회원가입 → 로그인 → 핵심기능 → 로그아웃\n• 반응형: 375px(모바일), 768px(태블릿), 1280px(데스크톱)\n• 접근성: axe-core로 자동 검사\n• 스냅샷: Percy 또는 Chromatic으로 시각적 회귀 테스트', 'error': '@ERROR 버그 수정 후 회귀 테스트 케이스 반드시 추가하세요:\n• 버그 재현 테스트: 수정 전 실패, 수정 후 통과\n• 관련 케이스: 유사한 상황에서 같은 버그 안 나도록\n• 파일명: __tests__/regression/[버그ID].test.ts\n• 커밋 메시지: fix: [버그 설명] (closes #이슈번호)', 'feature': '새 기능 테스트 전략:\n• Unit Test (먼저): 개별 함수/컴포넌트, Jest/Vitest\n• Integration Test (다음): API + DB 연동, 실제 데이터 흐름\n• E2E Test (마지막): 전체 사용자 플로우, Playwright\n• 커버리지 목표: 80% 이상 (핵심 로직 100%)\n• 파일 구조: __tests__/unit/, __tests__/integration/, e2e/', 'default': '테스트 체크리스트:\n• 커버리지 확인: npm run test:coverage\n• 엣지 케이스: null, undefined, 빈 배열, 경계값\n• 에러 시나리오: 네트워크 실패, 타임아웃\n• 회귀 테스트: 기존 테스트 전부 통과 확인'}, 'checklist': ['Unit Test 작성', 'Integration Test 작성', '엣지 케이스 테스트', '에러 시나리오 테스트'], 'action_templates': [{'trigger': '테스트|test|검증|verify|qa', 'actions': [{'id': 'qa-1', 'action': '테스트 시나리오 작성', 'depends': [], 'verify': '테스트 시나리오 문서화됨', 'phase': '설계'}, {'id': 'qa-2', 'action': 'Unit Test 작성', 'depends': ['qa-1'], 'verify': 'Unit Test 통과', 'phase': '구현'}, {'id': 'qa-3', 'action': '엣지 케이스 테스트 추가', 'depends': ['qa-2'], 'verify': '엣지 케이스 커버됨', 'phase': '구현'}, {'id': 'qa-4', 'action': 'Integration Test 작성', 'depends': ['qa-2'], 'verify': 'Integration Test 통과', 'phase': '검증'}]}, {'trigger': '버그|bug|에러|error|fix', 'actions': [{'id': 'qa-5', 'action': '버그 재현 시나리오 작성', 'depends': [], 'verify': '버그 재현 가능', 'phase': '준비'}, {'id': 'qa-6', 'action': '회귀 테스트 케이스 추가', 'depends': [], 'verify': '회귀 테스트 작성됨', 'phase': '검증'}]}]}
