Files
sb-front/docs/release-2026-06-06.md
T
ByungCheol 095ba942eb
CI / build (push) Failing after 10m39s
feat: 홈 캘린더 일별 내역 팝업(모달)화 + 릴리스 노트 갱신
- HomeView: 날짜 탭 시 아래 인라인 패널 대신 중앙 팝업으로 내역 표시(시인성)
  · @mouseenter 제거로 터치 '두 번 탭' 버그 해소(단일 탭 동작)
- docs/release-2026-06-06.md: 이어진 세션 변경(하단 내비·설정/계정·매매수정·보안·테스트/배포·안드로이드) 추가

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-06 17:09:05 +09:00

6.0 KiB

Slim Budget — 변경 내역 (2026-06-06 배포)

이번 작업 세션에서 추가·수정한 기능 정리. (프론트 sb_pt, 백엔드 sb_bt, 안드로이드 앱 포함)


1. 홈 대시보드

  • 일별 수입·지출 캘린더 추가 (예산 대비 지출 아래). 날짜를 탭하면 그 날의 내역을 팝업(모달)으로 표시(시인성 개선·단일 탭 동작).

2. 투자 / 계좌

  • 시세 자동조회: 종목코드(6자리)로 네이버 금융에서 현재가 자동 갱신. 투자 탭 진입·포트폴리오 펼침 시 자동, "↻ 시세 갱신" 버튼도 제공.
  • 퇴직연금·연금 등 평가액 직접입력형 계좌: 종목 없이 현재 평가액만 입력해 관리(누적 적립원금 대비 손익% 표시).
  • 보유 종목 표기 2줄 정리(수량 / 평단·현재가).
  • 계좌번호 암호화: DB에 AES-256-GCM으로 저장(키는 서버 .env ACCOUNT_CRYPTO_KEY). 화면에서는 끝 4자리만 노출 + 👁 전체보기 토글로 마스킹.

3. 가계부 내역 / 고정 지출

  • "정기 거래" → "고정 지출" 명칭 변경, 월간/년간 분리·카테고리 소계/합계.
  • 내역·고정지출 추가 시 계좌 종류 라디오 + 셀렉트 패턴, 저장 버튼 sticky.

4. 카드 결제 알림 자동인식 (버그 수정)

  • 현금으로 잘못 선택되던 문제: 알림 자동인식(pending) 건은 매칭 실패해도 계좌 종류를 '카드'로 기본 선택. 백엔드 카드 매칭을 양방향 부분일치(KB국민↔국민) + 카드가 1개뿐이면 자동 매칭으로 개선.
  • 광고 푸시 오인식 차단: 강한 승인신호(승인/출금/취소/환불) 없이 광고성 표현(이벤트·할인·적립·포인트·캐시백·쿠폰 등)이 있으면 결제로 보지 않음. 네이티브 1차 필터에서 '카드' 키워드 제거.
  • 확인(확정) 실패 시 HTTP 상태코드 노출 + 즉시 UI 반영.

5. 게시판

  • "자유게시판" → 커뮤니티 / 짠테크 수다방 / 재테크 팁 3개 게시판으로 분리(카테고리).
  • 사이드바를 가계부 / 게시판 / 관리자 영역 구분선으로 정리.
  • 글 번호 컬럼 미노출.

6. 회원가입 / 인증

  • 이용약관·개인정보 수집 동의(필수 체크) 추가.
  • 관리자 회원가입 제한 토글: 회원 관리 화면에서 신규 가입 on/off. 제한 시 가입 진입(랜딩·로그인·가입 팝업)부터 차단.
  • 봇 가입 차단: 허니팟(숨김 필드) + IP 레이트리밋(Redis, 1시간 5회). Cloudflare Turnstile은 앱 환경 제약으로 제외.
  • 모바일 웹 새로고침 시 로그아웃 버그 수정: 세션 복원을 localStorage 우선으로(Preferences 예외에 견고).
  • 세션 유실(주기적 로그아웃) 해결: Redis AOF 활성화로 재시작에도 세션 영속(서버 설정).

7. 웹 접근 정책

  • PC·모바일 웹은 안내 페이지만 노출(앱 다운로드 안내). 실제 이용은 앱(Capacitor)에서만. 개발 모드(npm run dev)는 예외로 전체 앱 표시.

(이어진 작업) 앱 UX · 보안 · 품질 강화

8. 앱 하단 내비게이션

  • 화면 하단 고정 아이콘 바(뒤로 · 앞으로 · 홈 · 새로고침 · 설정). 스크롤과 무관하게 항상 노출, 안드로이드 소프트키 위 안전영역에 배치.
  • 사이드바의 '홈' 메뉴 제거(하단 내비로 대체). 로그인 전에는 햄버거 메뉴·네이버 로그인 버튼 숨김.

9. 설정 / 계정정보

  • 설정 화면(하단 내비 → 설정): 계정정보 · 앱 버전(v1.0.0) · App Data 삭제(로그인/캐시 초기화 후 재시작).
  • 계정정보 상세 → 정보변경: 비밀번호 재인증 후 이름 · 이메일 · 비밀번호를 한 화면에서 변경. 헤더의 비밀번호 변경 아이콘·모달은 제거(진입점 일원화).
  • 로그인 후 대시보드(/)로 이동 통일.

10. 투자 매매내역

  • 종목별 매매이력을 인라인 최근 5건 + "전체 N건 보기" 스크롤 모달로 정리(길어짐 방지).
  • 매매 수정 기능 추가(PUT /api/account/invest/trades/{id}). 수정 시 시점별 시뮬레이션으로 보유수량 음수 방지 검증.

11. 보안 / 인증 (백엔드)

  • 세션 DB 이중 저장(auth_session): Redis 유실·재시작에도 로그인 유지(Redis 미스 시 DB에서 복원·재수화).
  • 무차별 대입 방지: 실패한 시도만 카운트 — 로그인 IP당 10회/10분, 비밀번호 재인증 회원당 5회/10분 초과 시 429.
  • 인터셉터 보호 경로 누락 수정: verify-password·profile이 인증 없이 500 나던 문제 → 401 정상화.
  • 전역 예외 처리 강화: 미처리 500 로그에 메서드+경로 기록(추적성), 잘못된 JSON은 400.

12. 품질 / 배포 파이프라인

  • 자동화 테스트 도입: 프론트 Vitest 32(스토어·API·로그인 플로우), 백엔드 JUnit 34(단위 + @WebMvcTest 통합).
  • 테스트 게이트: CI와 배포 워크플로 모두 테스트 실패 시 배포 중단. 백엔드 배포에 CI와 동일한 MariaDB/Redis 서비스 추가.
  • 번들: 마크다운 에디터는 라우트 지연 청크임을 명시(경고 한도 현실화).

13. 안드로이드

  • 에지투에지(targetSdk 36) 대응: 콘텐츠 루트에 시스템 바 인셋 패딩 적용 → 헤더는 상태바 아래, 하단 내비는 소프트키 위.

운영 반영 시 체크

  • 서버 /opt/sb-backend/.env
    • ACCOUNT_CRYPTO_KEY — 계좌번호 암호화를 켤 때만(미설정 시 평문, 깨지지 않음).
  • app_setting · auth_session 테이블 — 배포 시 member.sql 초기화로 자동 생성(가입 허용 플래그 / 세션 DB 백업).
  • Redis appendonly yes — 세션 영속(이미 적용). 단, 세션 DB 이중 저장으로 Redis 유실에도 로그인 유지.
  • 앱 버전 표기는 package.jsonversion(현재 1.0.0)을 단일 출처로 사용.
  • 배포는 main 푸시 → CI·Deploy 워크플로 모두 테스트 통과해야 진행(Gitea Actions).