Project Standards
KittyWallet은 문서와 구현을 함께 관리하고, 거래 기록과 계산 결과가 일관되게 유지되도록 공통 개발 기준과 데이터 처리 기준을 적용했습니다.
공통 개발 기준
문서와 구현
문서와 코드 동시 변경
코드 구조
타입 우선, 책임과 상태 분리
변경 관리
Issue·PR 단위로 변경 추적
품질 검증
코드 검사와 테스트 후 반영
코드 품질
중복과 하드코딩 방지
API 사용
공통 API 계층 사용
사용자 환경
모바일 환경 우선
접근성
명확한 상태 표현
거래와 지갑 기준
거래는 수입과 지출로 구분하고, 지갑은 계좌와 카드로 구분합니다. 거래의 성격과 사용한 지갑을 서로 다른 기준으로 관리합니다.
계좌 지갑의 거래는 잔액에 반영합니다. 카드 지갑의 거래는 카드 사용 내역으로 관리하며 계좌 잔액을 변경하지 않습니다.
| 거래 유형 | 계좌 지갑 | 카드 지갑 |
|---|---|---|
| 수입 | 허용 | 허용하지 않음 |
| 지출 | 허용 | 허용 |
기존 거래 기록과 통계 기준을 유지하기 위해 거래와 연결된 데이터는 물리 삭제보다 논리 삭제를 우선합니다.
잔액 정합성 기준
계좌 지갑의 현재 잔액은 초기 잔액과 거래 내역을 기준으로 자동 계산합니다.
현재 잔액 = 초기 잔액 + 수입 - 지출거래를 등록하거나 변경하면 관련 계좌의 잔액도 같은 기준으로 다시 계산합니다.
날짜별 잔액 검증
KittyWallet은 최종 잔액뿐 아니라 거래일에 따른 잔액 흐름 전체를 검증합니다.
- 삭제되지 않은 계좌 거래를 거래일 기준으로 합산합니다.
- 같은 날짜의 거래는 일별 합산액으로 검증합니다.
- 마이너스를 허용하지 않는 계좌는 어느 날짜에도 잔액이 0 미만일 수 없습니다.
- 마이너스를 허용한 계좌는 설정한 한도 아래로 내려갈 수 없습니다.
- 거래의 날짜·금액·유형·계좌가 변경되면 잔액 흐름을 다시 검증합니다.
카테고리와 통계 기준
카테고리는 거래 분류와 통계 집계의 공통 기준으로 사용합니다.
| 기준 | 적용 내용 |
|---|---|
| 분류 단계 | 하위 분류가 없는 1단계 구조 |
| 거래 유형 | 수입·지출 카테고리를 별도로 구분하지 않음 |
| 기본 카테고리 | 모든 사용자에게 공통 제공 |
| 사용자 카테고리 | 사용자별로 관리 |
| 데이터 보존 | 물리 삭제보다 숨김 우선 |
표시와 통계 포함 분리
카테고리를 신규 거래 선택 목록에 표시하는 기준과 통계에 포함하는 기준은 독립적으로 관리합니다.
| 카테고리 상태 | 신규 거래 선택 | 통계 |
|---|---|---|
| 표시·통계 포함 | 표시 | 포함 |
| 숨김·통계 포함 | 제외 | 포함 |
| 표시·통계 제외 | 표시 | 제외 |
| 숨김·통계 제외 | 제외 | 제외 |
숨긴 카테고리도 기존 거래에서는 계속 표시합니다. 통계에서 제외한 카테고리의 거래도 원본 거래와 계좌 잔액에는 그대로 반영됩니다.
통계 집계 기준
- 거래 기록을 기준으로 집계
- 수입과 지출을 구분
- 삭제된 거래 제외
- 카테고리별 통계 포함 설정 반영
- 제외된 카테고리의 거래를 합계·순액·거래 수·비율에서 제외
- 통계 제외 설정은 거래 내역과 계좌 잔액에 영향을 주지 않음
- 지갑과 카테고리 필터에도 같은 집계 기준 적용
