70 lines
4.4 KiB
Markdown
70 lines
4.4 KiB
Markdown
[계획 문서 경로]
|
|
- common-docs/improvement/plans/dev-plan-2026-03-05-kis-remember-credentials-checkbox.md
|
|
|
|
[요구사항 요약]
|
|
- 설정 화면에서 앱토큰(앱키), 앱시크릿키, 계좌번호에 대해 "기억하기" 체크박스를 제공한다.
|
|
- 체크한 항목만 브라우저 재시작 후에도 복원되도록 로컬 저장을 추가한다.
|
|
- 기존 KIS 검증/계좌인증 동작은 그대로 유지한다.
|
|
|
|
[가정]
|
|
- 사용자 요청의 "앱토큰"은 현재 화면 필드명 기준 "앱키(appKey)"로 해석한다.
|
|
- "기억하기"는 장기 저장(localStorage), 미체크는 저장하지 않음으로 해석한다.
|
|
- 기존 세션값이 있으면(이미 입력/검증된 상태) 기억값 자동 복원으로 덮어쓰지 않는다.
|
|
|
|
[영향 범위]
|
|
- 수정:
|
|
- features/settings/components/KisAuthForm.tsx
|
|
- features/settings/components/KisProfileForm.tsx
|
|
- features/layout/components/user-menu.tsx
|
|
- features/auth/components/session-manager.tsx
|
|
- 추가:
|
|
- features/settings/lib/kis-remember-storage.ts
|
|
- 삭제:
|
|
- 없음
|
|
|
|
[구현 단계]
|
|
- [x] 1. 기억하기 저장 유틸 추가: 앱키/앱시크릿/계좌별 체크 상태/값을 localStorage로 읽기/쓰기/삭제하는 공통 함수를 만들었다. (`features/settings/lib/kis-remember-storage.ts`)
|
|
- [x] 2. 앱키/앱시크릿 체크박스 UI 추가: 인증 폼에 2개 체크박스를 추가하고, 체크 여부에 따라 자동 저장/삭제를 연결했다. (`features/settings/components/KisAuthForm.tsx`)
|
|
- [x] 3. 계좌번호 체크박스 UI 추가: 계좌 인증 폼에 체크박스를 추가하고 동일한 저장/복원 흐름을 연결했다. (`features/settings/components/KisProfileForm.tsx`)
|
|
- [x] 4. 로그아웃/세션만료 시 정리 연동: 기존 세션 정리 루틴에 기억값 키를 포함해 민감 정보가 남지 않게 했다. (`features/layout/components/user-menu.tsx`, `features/auth/components/session-manager.tsx`)
|
|
|
|
[사용할 MCP/Skills]
|
|
- MCP: shell_command(코드 탐색/수정), apply_patch(파일 수정)
|
|
- Skills: dev-auto-pipeline, dev-plan-writer, dev-mcp-implementation, dev-refactor-polish, dev-test-gate, dev-plan-completion-checker, nextjs-app-router-patterns, vercel-react-best-practices
|
|
|
|
[참조 문서(common-docs)]
|
|
- common-docs/api-reference/openapi_all.xlsx
|
|
- common-docs/api-reference/kis_api_reference.md
|
|
- common-docs/api-reference/kis-error-code-reference.md
|
|
- common-docs/features/trade-stock-sync.md
|
|
- common-docs/ui/GLOBAL_ALERT_SYSTEM.md
|
|
|
|
[주석/문서 반영 계획]
|
|
- 상태 주석: 기억하기 체크 상태가 입력 필드 자동복원/저장에 미치는 영향을 한 줄 주석으로 추가한다.
|
|
- 복잡 로직: "초기 복원"과 "변경 저장"을 [Step 1], [Step 2] 주석으로 분리한다.
|
|
- JSX 구역 주석: 입력/체크박스 구역을 나눠 화면 구조를 더 쉽게 읽게 유지한다.
|
|
|
|
[리스크/회귀 포인트]
|
|
- 체크박스 초기화 시 하이드레이션 타이밍 차이로 깜빡임이 생길 수 있다.
|
|
- store 입력 setter 호출은 인증 상태를 리셋하므로, 복원 시 기존 세션값을 덮어쓰지 않도록 조건이 필요하다.
|
|
- 민감값 장기 저장 정책 변경이므로 로그아웃 시 정리 누락이 없어야 한다.
|
|
|
|
[검증 계획]
|
|
- [x] 1. lint: 타입/린트 오류 없이 통과했다. (`npm run lint` 통과)
|
|
- [x] 2. build: Next.js 프로덕션 빌드가 통과했다. (`npm run build` 통과)
|
|
- [x] 3. 동작: 체크박스/저장 로직을 코드 경로로 검증했다. (기억하기 on/off -> `setKisRememberEnabled` -> `setRememberedKisValue`)
|
|
- [x] 4. 동작: 복원 로직을 코드 경로로 검증했다. (`hasHydrated` 이후 입력값 비어 있을 때만 `getRememberedKisValue` 복원)
|
|
- [x] 5. 동작: 로그아웃/세션만료 시 기억값 정리 키 포함을 반영했다. (`SESSION_RELATED_STORAGE_KEYS`에 `KIS_REMEMBER_LOCAL_STORAGE_KEYS` 추가)
|
|
|
|
[진행 로그]
|
|
- 2026-03-05: 계획 문서 작성.
|
|
- 2026-03-05: 구현 1~4 완료 (기억하기 체크박스 + localStorage 유틸 + 세션 정리 키 반영).
|
|
- 2026-03-05: `npm run lint`, `npm run build` 통과.
|
|
- 2026-03-05: Playwright 스모크에서 `/settings` 접근 시 `/login` 리다이렉트 및 콘솔 치명 오류 없음 확인(인증 미보유로 설정 폼 직접 상호작용은 환경상 제한).
|
|
|
|
[계획 대비 완료체크]
|
|
- 완료: 구현 1~4, 검증 1~5
|
|
- 부분 완료: 없음
|
|
- 미완료: 없음
|
|
- 최종 판정: 배포 가능
|