304 lines
10 KiB
Markdown
304 lines
10 KiB
Markdown
# 적자 탈출 가계부 - 2단계 계획
|
|
|
|
## 1. 2단계 목표
|
|
|
|
2단계의 주요 목표는 적자 탈출 가계부 앱의 백엔드 인프라를 구축하고, 데이터베이스를 설계하며, 기본적인 API 엔드포인트를 개발하는 것입니다. 이를 통해 3단계에서 진행될 프론트엔드 개발을 위한 기반을 마련합니다.
|
|
|
|
### 핵심 목표
|
|
1. [x] Supabase 기반 백엔드 인프라 구축
|
|
2. [x] 데이터베이스 스키마 구현
|
|
3. [x] 기본 API 엔드포인트 개발
|
|
4. [x] 사용자 인증 시스템 구현
|
|
5. [ ] 초기 테스트 환경 구성
|
|
|
|
## 2. 작업 목록 및 일정
|
|
|
|
### 1일차: Supabase 프로젝트 설정
|
|
|
|
#### 오전
|
|
- [x] [사용자] Supabase 계정 생성 및 프로젝트 생성
|
|
- [x] [AI] Supabase 프로젝트 설정 가이드 작성
|
|
- [x] [공동] 프로젝트 환경 변수 및 보안 설정
|
|
|
|
#### 오후
|
|
- [x] [AI] 데이터베이스 연결 테스트 코드 작성
|
|
- [x] [사용자] 데이터베이스 연결 테스트
|
|
- [x] [AI] 기본 백엔드 구조 설계 문서 작성
|
|
|
|
### 2일차: 데이터베이스 스키마 구현
|
|
|
|
#### 오전
|
|
- [x] [AI] SQL 스키마 스크립트 작성
|
|
- [x] Users 테이블 생성
|
|
- [x] Cards 테이블 생성
|
|
- [x] Categories 테이블 생성
|
|
- [x] Expenses 테이블 생성
|
|
- [x] Limits 테이블 생성
|
|
- [x] Notifications 테이블 생성
|
|
- [x] Templates 테이블 생성
|
|
|
|
#### 오후
|
|
- [x] [사용자] SQL 스키마 스크립트 실행 및 검증
|
|
- [x] [AI] 기본 카테고리 데이터 삽입 스크립트 작성
|
|
- [x] [사용자] 기본 데이터 삽입 및 확인
|
|
- [x] [공동] 데이터베이스 인덱스 및 제약 조건 검토
|
|
- [x] [공동] 코드 및 문서 관리 원칙 수립 (Gitea와 옵시디언 통합)
|
|
|
|
### 3-4일차: API 엔드포인트 개발
|
|
|
|
#### 3일차 오전
|
|
- [x] [AI] 사용자 관리 API 개발
|
|
- [x] 회원가입 API
|
|
- [x] 로그인 API
|
|
- [x] 프로필 조회/수정 API
|
|
- [x] 비밀번호 변경/재설정 API
|
|
|
|
#### 3일차 오후
|
|
- [x] [AI] 카드 관리 API 개발
|
|
- [x] 카드 등록 API
|
|
- [x] 카드 조회 API
|
|
- [x] 카드 수정/삭제 API
|
|
- [x] 카드 한도 설정 API
|
|
|
|
#### 4일차 오전
|
|
- [x] [AI] 지출 관리 API 개발
|
|
- [x] 지출 등록 API
|
|
- [x] 지출 조회 API
|
|
- [x] 지출 수정/삭제 API
|
|
- [x] 지출 필터링/검색 API
|
|
|
|
#### 4일차 오후
|
|
- [x] [AI] 분석 및 대시보드 API 개발
|
|
- [x] 카테고리별 지출 분석 API
|
|
- [x] 기간별 지출 추이 API
|
|
- [x] 한도 사용 현황 API
|
|
- [x] 대시보드 요약 정보 API
|
|
|
|
### 5일차: 인증 및 보안 구현
|
|
|
|
#### 오전
|
|
- [x] [AI] 사용자 인증 시스템 구현
|
|
- [x] JWT 토큰 기반 인증 설정
|
|
- [x] 소셜 로그인 연동 (Google, Kakao, Naver, Apple)
|
|
- [x] 권한 관리 시스템 구현
|
|
|
|
#### 오후
|
|
- [x] [AI] 데이터 보안 구현
|
|
- [x] 민감 정보 암호화 설정
|
|
- [x] API 요청 검증 미들웨어 구현
|
|
- [x] CORS 및 보안 헤더 설정
|
|
|
|
### 6일차: 테스트 및 문서화
|
|
|
|
#### 오전
|
|
- [x] [AI] API 테스트 스크립트 작성
|
|
- [x] 단위 테스트 작성
|
|
- [x] 통합 테스트 작성
|
|
- [x] 성능 테스트 작성
|
|
|
|
#### 오후
|
|
- [x] [공동] API 문서 작성
|
|
- [x] Swagger/OpenAPI 문서 생성
|
|
- [x] API 엔드포인트 사용 예제 작성
|
|
- [x] 에러 코드 및 응답 형식 문서화
|
|
|
|
### 7일차: 2단계 검토 및 3단계 준비
|
|
|
|
#### 오전
|
|
- [x] [공동] 2단계 산출물 검토
|
|
- [x] 백엔드 기능 테스트
|
|
- [x] API 응답 검증
|
|
- [x] 성능 및 보안 검토
|
|
|
|
#### 오후
|
|
- [ ] [공동] 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. [x] **Supabase 프로젝트 설정**
|
|
- [x] 프로젝트 생성 및 기본 설정
|
|
- [x] 데이터베이스 연결 설정
|
|
- [x] 스토리지 버킷 구성
|
|
- [x] 백업 설정 구성
|
|
|
|
2. [x] **데이터베이스 스키마 구현**
|
|
- [x] 사용자 테이블 생성
|
|
- [x] 카테고리 테이블 생성
|
|
- [x] 지출/수입 테이블 생성
|
|
- [x] 예산 테이블 생성
|
|
- [x] 카드 테이블 생성
|
|
- [x] 한도 테이블 생성
|
|
- [x] 템플릿 테이블 생성
|
|
- [x] 알림 테이블 생성
|
|
- [x] 분석 설정 테이블 생성
|
|
|
|
3. [x] **기본 데이터 삽입**
|
|
- [x] 기본 카테고리 데이터 삽입
|
|
- [x] 테스트 사용자 데이터 삽입
|
|
- [x] 샘플 지출/수입 데이터 삽입
|
|
|
|
4. [x] **API 엔드포인트 개발**
|
|
- [x] 사용자 관리 API 함수 구현
|
|
- [x] 카테고리 관리 API 함수 구현
|
|
- [x] 지출/수입 관리 API 함수 구현
|
|
- [x] 예산 관리 API 함수 구현
|
|
- [x] 카드 관리 API 함수 구현
|
|
- [x] 한도 관리 API 함수 구현
|
|
- [x] 템플릿 관리 API 함수 구현
|
|
- [x] 알림 관리 API 함수 구현
|
|
- [x] 분석 관리 API 함수 구현
|
|
|
|
5. [x] **사용자 인증 시스템 구현**
|
|
- [x] JWT 토큰 기반 인증
|
|
- [x] 비밀번호 암호화 (bcrypt)
|
|
- [x] 소셜 로그인 연동 (Google, Kakao, Naver, Apple)
|
|
- [x] 이메일 인증 및 비밀번호 재설정
|
|
- [x] Row Level Security (RLS) 정책 구현
|
|
- [x] 토큰 블랙리스트 관리 (로그아웃)
|
|
|
|
6. [x] **데이터 보안 구현**
|
|
- [x] 민감 정보 암호화 설정
|
|
- [x] API 요청 검증 미들웨어 구현
|
|
- [x] CORS 및 보안 헤더 설정
|
|
- [x] 데이터 암호화 전략 수립
|
|
- [x] 보안 감사 및 검증
|
|
|
|
7. [x] **성능 테스트 및 최적화**
|
|
- [x] 데이터베이스 쿼리 성능 테스트
|
|
- [x] 성능 병목 지점 식별
|
|
- [x] 성능 최적화 전략 수립
|
|
- [x] 성능 테스트 보고서 작성
|
|
|
|
### 8.2 진행 중인 작업
|
|
- [x] 보안 감사 및 검증
|
|
- [x] 보안 취약점 분석
|
|
- [x] 보안 테스트 및 검증
|
|
|
|
### 8.3 다음 단계
|
|
- [ ] 백엔드 테스트
|
|
- [x] 단위 테스트 작성 및 실행
|
|
- [x] 인증 시스템 단위 테스트 작성 및 실행
|
|
- [x] 기타 API 함수 단위 테스트 작성 및 실행
|
|
- [x] 통합 테스트 구현
|
|
- [x] 보안 테스트 및 취약점 분석
|
|
|
|
- [ ] 3단계 준비
|
|
- [ ] 프론트엔드 개발 환경 설정
|
|
- [ ] API 연동 계획 수립
|
|
- [ ] 3단계 세부 일정 및 작업 목록 작성
|
|
|
|
## 9. 이슈 및 고려사항
|
|
|
|
1. [ ] **Supabase Realtime 서비스 상태**
|
|
- [ ] Realtime 서비스가 현재 Unhealthy 상태로 표시됨
|
|
- [ ] 실시간 기능이 필요한 경우 추가 디버깅 필요
|
|
- [ ] 우선순위: 중간 (기본 CRUD 작업에는 영향 없음)
|
|
|
|
2. [ ] **대용량 데이터 처리 전략**
|
|
- [ ] 장기적인 데이터 보관 정책 수립 필요
|
|
- [ ] 오래된 데이터 아카이빙 전략 고려
|
|
- [ ] 우선순위: 낮음 (초기 단계에서는 문제 없음)
|
|
|
|
3. [ ] **API 성능 최적화**
|
|
- [ ] 복잡한 분석 쿼리 최적화 필요
|
|
- [ ] 캐싱 전략 구현 고려
|
|
- [ ] 우선순위: 중간 (기본 기능에는 영향 없음)
|