diff --git a/docs/changelog.md b/docs/changelog.md index 759caee..98249f6 100644 --- a/docs/changelog.md +++ b/docs/changelog.md @@ -53,3 +53,7 @@ - 거래 입력/수정 화면의 상단 저장 버튼을 제거하고 하단 저장/취소 2:1 버튼 구조로 변경했다. - 거래 입력/수정 화면에 필수값 누락 토스트와 해당 입력 줄 포커스/강조 피드백을 추가했다. - 거래 입력/수정 행 스타일을 박스형 입력에서 밑줄형 입력으로 변경했다. +- 회원가입 중 기본 데이터 생성 실패 시 계정만 생성되는 문제를 막기 위해 가입 처리를 트랜잭션으로 묶었다. +- 로그인 시 기본 자산/카테고리가 비어 있는 기존 계정을 자동 보정하도록 했다. +- 설정의 자산 관리를 `+` 추가, 목록, 상세 수정/삭제 흐름으로 변경하고 활성/비활성 토글을 제거했다. +- 거래가 연결되지 않은 자산을 삭제할 수 있는 API를 추가했다. diff --git a/docs/project-guidelines.md b/docs/project-guidelines.md index a3ebb5c..117cb5c 100644 --- a/docs/project-guidelines.md +++ b/docs/project-guidelines.md @@ -22,7 +22,8 @@ - 필수값 없이 저장을 누르면 토스트로 부족한 항목을 알려주고 해당 입력 줄에 포커스와 강조선을 준다. - 거래 입력 행은 위아래 박스 라인 대신 각 입력란 하단 밑줄만 사용하고, 포커스 중인 줄만 포인트 색상으로 강조한다. - 셀렉트 박스보다 모바일 친화적인 바텀 시트를 우선한다. -- 활성/비활성 같은 상태는 텍스트 버튼보다 토글처럼 현재 상태가 보이는 UI를 쓴다. +- 상태를 켜고 끄는 기능이 꼭 필요한 경우에는 텍스트 버튼보다 토글처럼 현재 상태가 보이는 UI를 쓴다. +- 자산 관리는 활성/비활성 토글을 쓰지 않고, 등록된 자산은 모두 사용하는 것으로 본다. - 통계 화면은 그래프보다 숫자와 분류별 리스트를 우선한다. - 방향 이동 UI는 `assets/icons`의 키보드 화살표 SVG를 사용한다. - 거래 목록의 카테고리 표시는 하위 카테고리가 있으면 하위 이름만, 없으면 상위 이름만 보여준다. @@ -33,7 +34,7 @@ - PostgreSQL을 기본 DB로 사용한다. - Prisma migration은 저장소에 포함한다. - 자산 잔액은 현재값을 저장하지 않고 거래 합계로 계산한다. -- 카테고리와 자산은 완전 삭제보다 비활성화를 우선한다. +- 자산은 활성/비활성으로 관리하지 않는다. 삭제는 거래가 연결되지 않은 자산에 한해 제공한다. - 거래에 연결되는 카테고리 선택은 하위가 있으면 하위 카테고리를 우선하고, 하위가 없는 경우에만 상위 카테고리를 직접 선택한다. - CSV Export는 데이터 보존을 위한 필수 기능으로 유지한다. diff --git a/pages/login.vue b/pages/login.vue index 088daca..ae458d5 100644 --- a/pages/login.vue +++ b/pages/login.vue @@ -77,10 +77,15 @@ async function submit() { await navigateTo('/') } catch (err: any) { const status = err?.statusCode || err?.response?.status + const statusMessage = err?.statusMessage || err?.response?._data?.statusMessage || '' if (mode.value === 'register' && status === 409) { error.value = '이미 가입된 이메일입니다.' + } else if (mode.value === 'register' && statusMessage) { + error.value = statusMessage === 'Invalid registration' + ? '이메일과 8자 이상 비밀번호를 확인해 주세요.' + : '가입 처리 중 문제가 생겼습니다. 잠시 후 다시 시도해 주세요.' } else if (mode.value === 'register') { - error.value = '이메일과 8자 이상 비밀번호를 확인해 주세요.' + error.value = '가입 처리 중 문제가 생겼습니다. 잠시 후 다시 시도해 주세요.' } else { error.value = '이메일 또는 비밀번호를 확인해 주세요.' } diff --git a/pages/settings.vue b/pages/settings.vue index 1221acd..9f625a1 100644 --- a/pages/settings.vue +++ b/pages/settings.vue @@ -148,42 +148,67 @@ -