Files
zellyy-finance/docs/03_개발_단계/2단계/2단계_계획.md
2025-03-21 16:08:43 +09:00

10 KiB

적자 탈출 가계부 - 2단계 계획

1. 2단계 목표

2단계의 주요 목표는 적자 탈출 가계부 앱의 백엔드 인프라를 구축하고, 데이터베이스를 설계하며, 기본적인 API 엔드포인트를 개발하는 것입니다. 이를 통해 3단계에서 진행될 프론트엔드 개발을 위한 기반을 마련합니다.

핵심 목표

  1. Supabase 기반 백엔드 인프라 구축
  2. 데이터베이스 스키마 구현
  3. 기본 API 엔드포인트 개발
  4. 사용자 인증 시스템 구현
  5. 초기 테스트 환경 구성

2. 작업 목록 및 일정

1일차: Supabase 프로젝트 설정

오전

  • [사용자] Supabase 계정 생성 및 프로젝트 생성
  • [AI] Supabase 프로젝트 설정 가이드 작성
  • [공동] 프로젝트 환경 변수 및 보안 설정

오후

  • [AI] 데이터베이스 연결 테스트 코드 작성
  • [사용자] 데이터베이스 연결 테스트
  • [AI] 기본 백엔드 구조 설계 문서 작성

2일차: 데이터베이스 스키마 구현

오전

  • [AI] SQL 스키마 스크립트 작성
    • Users 테이블 생성
    • Cards 테이블 생성
    • Categories 테이블 생성
    • Expenses 테이블 생성
    • Limits 테이블 생성
    • Notifications 테이블 생성
    • Templates 테이블 생성

오후

  • [사용자] SQL 스키마 스크립트 실행 및 검증
  • [AI] 기본 카테고리 데이터 삽입 스크립트 작성
  • [사용자] 기본 데이터 삽입 및 확인
  • [공동] 데이터베이스 인덱스 및 제약 조건 검토
  • [공동] 코드 및 문서 관리 원칙 수립 (Gitea와 옵시디언 통합)

3-4일차: API 엔드포인트 개발

3일차 오전

  • [AI] 사용자 관리 API 개발
    • 회원가입 API
    • 로그인 API
    • 프로필 조회/수정 API
    • 비밀번호 변경/재설정 API

3일차 오후

  • [AI] 카드 관리 API 개발
    • 카드 등록 API
    • 카드 조회 API
    • 카드 수정/삭제 API
    • 카드 한도 설정 API

4일차 오전

  • [AI] 지출 관리 API 개발
    • 지출 등록 API
    • 지출 조회 API
    • 지출 수정/삭제 API
    • 지출 필터링/검색 API

4일차 오후

  • [AI] 분석 및 대시보드 API 개발
    • 카테고리별 지출 분석 API
    • 기간별 지출 추이 API
    • 한도 사용 현황 API
    • 대시보드 요약 정보 API

5일차: 인증 및 보안 구현

오전

  • [AI] 사용자 인증 시스템 구현
    • JWT 토큰 기반 인증 설정
    • 소셜 로그인 연동 (Google, Kakao, Naver, Apple)
    • 권한 관리 시스템 구현

오후

  • [AI] 데이터 보안 구현
    • 민감 정보 암호화 설정
    • API 요청 검증 미들웨어 구현
    • CORS 및 보안 헤더 설정

6일차: 테스트 및 문서화

오전

  • [AI] API 테스트 스크립트 작성
    • 단위 테스트 작성
    • 통합 테스트 작성
    • 성능 테스트 작성

오후

  • [공동] API 문서 작성
    • Swagger/OpenAPI 문서 생성
    • API 엔드포인트 사용 예제 작성
    • 에러 코드 및 응답 형식 문서화

7일차: 2단계 검토 및 3단계 준비

오전

  • [공동] 2단계 산출물 검토
    • 백엔드 기능 테스트
    • API 응답 검증
    • 성능 및 보안 검토

오후

  • [공동] 3단계 계획 수립
    • 3단계 작업 목록 초안 작성
    • 3단계 일정 및 우선순위 결정
    • 3단계 목표 및 성공 기준 정의
  • [AI] 2단계 결과물 최종 정리 및 문서화

3. 기술적 고려사항

3.1 Supabase 설정

  • Supabase 프로젝트 리전: 서울 (ap-northeast-2)
  • 데이터베이스 성능 티어: 스타터 플랜
  • 스토리지 설정: 영수증 이미지 저장용 버킷 구성
  • 백업 설정: 일일 자동 백업 활성화

3.2 API 설계 원칙

  • RESTful API 설계 원칙 준수
  • JSON 응답 형식 표준화
  • HTTP 상태 코드 적절히 활용
  • 페이지네이션 및 필터링 지원
  • 일관된 에러 처리 및 응답 형식

3.3 보안 고려사항

  • 모든 API 요청에 인증 필요 (공개 API 제외)
  • 비밀번호 해싱에 bcrypt 사용
  • API 요청 속도 제한 설정
  • 민감한 정보는 서버 측에서만 처리
  • HTTPS 강제 적용

3.4 성능 최적화

  • 데이터베이스 쿼리 최적화
  • 적절한 인덱스 설정
  • 캐싱 전략 구현 (Redis 고려)
  • 대량 데이터 처리를 위한 페이지네이션
  • 비동기 처리가 필요한 작업 식별

4. 산출물 목록

2단계 완료 시 다음과 같은 산출물이 생성될 예정입니다:

  1. Supabase 프로젝트 설정 문서

    • 프로젝트 구성 정보
    • 환경 변수 목록
    • 접근 권한 설정
  2. 데이터베이스 스키마 문서

    • SQL 스키마 스크립트
    • ER 다이어그램 (구현 버전)
    • 인덱스 및 제약 조건 목록
  3. API 문서

    • API 엔드포인트 목록 및 설명
    • 요청/응답 형식 예제
    • 인증 및 권한 요구사항
  4. 테스트 문서

    • 테스트 케이스 목록
    • 테스트 결과 보고서
    • 성능 테스트 결과
  5. 개발 가이드

    • 로컬 개발 환경 설정 방법
    • API 사용 예제 코드
    • 문제 해결 가이드

5. 위험 요소 및 대응 계획

5.1 기술적 위험

  • Supabase 제한 사항: 무료/스타터 플랜의 제한 사항 파악 및 대응 계획 수립
  • 데이터베이스 성능: 대량 데이터 처리 시 성능 이슈 대응 방안 마련
  • API 응답 시간: 복잡한 쿼리의 응답 시간 최적화 전략 수립

5.2 일정 관련 위험

  • 기술 학습 시간: Supabase 학습에 필요한 추가 시간 고려
  • 예상치 못한 문제: 버퍼 시간을 일정에 포함하여 계획

5.3 보안 관련 위험

  • 데이터 보안: 민감 정보 보호를 위한 추가 보안 조치 계획
  • 인증 시스템: 보안 취약점 방지를 위한 철저한 테스트 계획

6. 성공 기준

2단계는 다음 기준이 충족될 때 성공적으로 완료된 것으로 간주합니다:

  1. 모든 데이터베이스 테이블이 성공적으로 생성되고 관계가 설정됨
  2. 모든 필수 API 엔드포인트가 구현되고 테스트됨
  3. 사용자 인증 시스템이 안전하게 작동함
  4. API 응답 시간이 목표 성능 기준을 충족함 (평균 응답 시간 < 300ms)
  5. 모든 API가 문서화되고 프론트엔드 개발에 사용할 준비가 됨

7. 다음 단계 미리보기

2단계 완료 후 진행될 3단계의 주요 내용은 다음과 같습니다:

  1. Flutter 프로젝트 설정 및 기본 구조 구현
  2. UI 컴포넌트 개발 및 스타일 가이드 작성
  3. 백엔드 API와의 연동 구현
  4. 핵심 화면 및 기능 구현
  5. 사용자 테스트 및 피드백 수집

8. 진행 상황

8.1 완료된 작업

  1. Supabase 프로젝트 설정

    • 프로젝트 생성 및 기본 설정
    • 데이터베이스 연결 설정
    • 스토리지 버킷 구성
    • 백업 설정 구성
  2. 데이터베이스 스키마 구현

    • 사용자 테이블 생성
    • 카테고리 테이블 생성
    • 지출/수입 테이블 생성
    • 예산 테이블 생성
    • 카드 테이블 생성
    • 한도 테이블 생성
    • 템플릿 테이블 생성
    • 알림 테이블 생성
    • 분석 설정 테이블 생성
  3. 기본 데이터 삽입

    • 기본 카테고리 데이터 삽입
    • 테스트 사용자 데이터 삽입
    • 샘플 지출/수입 데이터 삽입
  4. API 엔드포인트 개발

    • 사용자 관리 API 함수 구현
    • 카테고리 관리 API 함수 구현
    • 지출/수입 관리 API 함수 구현
    • 예산 관리 API 함수 구현
    • 카드 관리 API 함수 구현
    • 한도 관리 API 함수 구현
    • 템플릿 관리 API 함수 구현
    • 알림 관리 API 함수 구현
    • 분석 관리 API 함수 구현
  5. 사용자 인증 시스템 구현

    • JWT 토큰 기반 인증
    • 비밀번호 암호화 (bcrypt)
    • 소셜 로그인 연동 (Google, Kakao, Naver, Apple)
    • 이메일 인증 및 비밀번호 재설정
    • Row Level Security (RLS) 정책 구현
    • 토큰 블랙리스트 관리 (로그아웃)
  6. 데이터 보안 구현

    • 민감 정보 암호화 설정
    • API 요청 검증 미들웨어 구현
    • CORS 및 보안 헤더 설정
    • 데이터 암호화 전략 수립
    • 보안 감사 및 검증
  7. 성능 테스트 및 최적화

    • 데이터베이스 쿼리 성능 테스트
    • 성능 병목 지점 식별
    • 성능 최적화 전략 수립
    • 성능 테스트 보고서 작성

8.2 진행 중인 작업

  • 보안 감사 및 검증
    • 보안 취약점 분석
    • 보안 테스트 및 검증

8.3 다음 단계

  • 백엔드 테스트

    • 단위 테스트 작성 및 실행
    • 인증 시스템 단위 테스트 작성 및 실행
    • 기타 API 함수 단위 테스트 작성 및 실행
    • 통합 테스트 구현
    • 보안 테스트 및 취약점 분석
  • 3단계 준비

    • 프론트엔드 개발 환경 설정
    • API 연동 계획 수립
    • 3단계 세부 일정 및 작업 목록 작성

9. 이슈 및 고려사항

  1. Supabase Realtime 서비스 상태

    • Realtime 서비스가 현재 Unhealthy 상태로 표시됨
    • 실시간 기능이 필요한 경우 추가 디버깅 필요
    • 우선순위: 중간 (기본 CRUD 작업에는 영향 없음)
  2. 대용량 데이터 처리 전략

    • 장기적인 데이터 보관 정책 수립 필요
    • 오래된 데이터 아카이빙 전략 고려
    • 우선순위: 낮음 (초기 단계에서는 문제 없음)
  3. API 성능 최적화

    • 복잡한 분석 쿼리 최적화 필요
    • 캐싱 전략 구현 고려
    • 우선순위: 중간 (기본 기능에는 영향 없음)