Files
auto-trade/common-docs/improvement/plans/dev-plan-2026-03-05-kis-remember-credentials-checkbox.md

4.4 KiB

[계획 문서 경로]

  • 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
  • 삭제:
    • 없음

[구현 단계]

  • 1. 기억하기 저장 유틸 추가: 앱키/앱시크릿/계좌별 체크 상태/값을 localStorage로 읽기/쓰기/삭제하는 공통 함수를 만들었다. (features/settings/lib/kis-remember-storage.ts)
  • 2. 앱키/앱시크릿 체크박스 UI 추가: 인증 폼에 2개 체크박스를 추가하고, 체크 여부에 따라 자동 저장/삭제를 연결했다. (features/settings/components/KisAuthForm.tsx)
  • 3. 계좌번호 체크박스 UI 추가: 계좌 인증 폼에 체크박스를 추가하고 동일한 저장/복원 흐름을 연결했다. (features/settings/components/KisProfileForm.tsx)
  • 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 호출은 인증 상태를 리셋하므로, 복원 시 기존 세션값을 덮어쓰지 않도록 조건이 필요하다.
  • 민감값 장기 저장 정책 변경이므로 로그아웃 시 정리 누락이 없어야 한다.

[검증 계획]

  • 1. lint: 타입/린트 오류 없이 통과했다. (npm run lint 통과)
  • 2. build: Next.js 프로덕션 빌드가 통과했다. (npm run build 통과)
  • 3. 동작: 체크박스/저장 로직을 코드 경로로 검증했다. (기억하기 on/off -> setKisRememberEnabled -> setRememberedKisValue)
  • 4. 동작: 복원 로직을 코드 경로로 검증했다. (hasHydrated 이후 입력값 비어 있을 때만 getRememberedKisValue 복원)
  • 5. 동작: 로그아웃/세션만료 시 기억값 정리 키 포함을 반영했다. (SESSION_RELATED_STORAGE_KEYSKIS_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 리다이렉트 및 콘솔 치명 오류 없음 확인(인증 미보유로 설정 폼 직접 상호작용은 환경상 제한).

[계획 대비 완료체크]

  • 완료: 구현 14, 검증 15
  • 부분 완료: 없음
  • 미완료: 없음
  • 최종 판정: 배포 가능