프로젝트 진행 로드맵
1. Android Studio 프로젝트 및 패키징
- Android Studio 실행 → New Project > Empty Activity (언어: Kotlin) 선택.
- 패키지명과 최소 SDK(권장 26 이상)를 정의하고 프로젝트 생성.
- Project 뷰에서
app/src/main/java/<패키지> 위치로 이동.
- ui, data, service 서브패키지를 각각 생성하여 모듈 구조 고정.
- ui: Compose 화면, Activity, ViewModel 배치. data: DTO, Repository, Retrofit, Room 등. service: Service, BroadcastReceiver, WorkManager.
- Gradle에 Compose BOM, WorkManager, Retrofit/OkHttp, Coil, SmsManager 호환 라이브러리를 추가하고 Sync.
- 권한 선언:
READ_CALL_LOG, READ_PHONE_STATE, CALL_PHONE, RECEIVE_BOOT_COMPLETED, READ_MEDIA_IMAGES, SEND_SMS, POST_NOTIFICATIONS.
2. 서버 API 스펙
- Auth:
POST /api/v1/auth/login (전화번호+PIN), POST /api/v1/auth/refresh, 헤더 Authorization: Bearer.
- 템플릿:
GET /api/v1/templates, GET /api/v1/templates/{id}, POST /api/v1/templates/custom (Multipart), DELETE /api/v1/templates/custom/{id}.
- 사용자 설정:
GET /api/v1/settings, PUT /api/v1/settings, PATCH /api/v1/settings/auto-reply, PATCH /api/v1/settings/template.
- 발송 로그:
GET /api/v1/logs (필터: 기간, 유형), POST /api/v1/logs (성공/실패 기록), GET /api/v1/logs/{id}, DELETE /api/v1/logs/{id}.
- 보안: 도메인
www.당나귀.net/phone_LMS에 SSL 구성, 업로드 2MB 이하(JPEG/PNG), 로그 1년 보관 후 배치 정리.
3. 명함 템플릿 및 애니메이션 가이드
- 리소스 구분: 사용자 스캔 이미지 vs 서버 템플릿. 동일 비율(1024×576) 권장.
- 템플릿 메타데이터: 색상 팔레트, 폰트, 애니메이션 스크립트(JSON) 포함. 예)
{ "effects": ["fadeIn","slideUp"], "duration": 1800 }.
- 애니메이션 스타일: 페이드, 패럴랙스, 텍스트 슬라이드, 강조 스케일 등 3~4종 세트로 정의. 너무 화려한 플래시는 피하고 2초 이내 반복.
- 동일 템플릿이라도 전화번호·이름을 동적으로 바꿀 수 있도록 텍스트 레이어를 분리.
- 미리보기 GIF/MPEG4 및 고해상도 PNG 동시 생성, MMS 제한(최대 300KB~500KB) 대응을 위해 압축 프로필 저장.
4. 권한 흐름 및 자동 발송 UI 프로토타입
- 권한 순서: 앱 최초 실행 시 안내 →
READ_PHONE_STATE, READ_CALL_LOG, SEND_SMS 순차 요청 → 거부 시 설정 이동 CTA.
- 자동 발송 토글: UI 상단에 “통화 종료 자동 발송”, “부재중 자동 발송” 스위치 및 상태 설명.
- 최근 통화 카드: `LazyColumn`으로 목록 렌더링, 각 항목에 “즉시 발송” 버튼 제공.
- 수동 발송 버튼: 명함 미리보기 아래 CTA 배치, 누르면 기본 MMS 인텐트 또는 내부 `SmsManager` 호출.
- 테스트 프로토: Fake Repository로 더미 템플릿/통화 데이터를 주입하고 권한 승인/거부 플로우를 시뮬레이션. Espresso 테스트로 자동 발송 토글 상태와 워크매니저 호출 여부 검증.