Skip to content

인증 시간 정책 수정#145

Open
chanho0908 wants to merge 7 commits intodevelopfrom
refactor/#143-relative-time-formatter
Open

인증 시간 정책 수정#145
chanho0908 wants to merge 7 commits intodevelopfrom
refactor/#143-relative-time-formatter

Conversation

@chanho0908
Copy link
Copy Markdown
Contributor

@chanho0908 chanho0908 commented Apr 24, 2026

이슈 번호

#143

작업내용

  • 인증 상세 화면 인증 날짜 표시 정책 변경
    7일 이후 월.날짜 -> 24시간 후 일단위로

전체 정책

  • 00초~ 10분 : 방금 전

  • 11분~59분: 분단위로

  • 60분~23시간 59분 : 시간단위로

    • 80분이어도 1시간 전
  • 24시간 후: 일단위로

  • 기존 object Formatter로 구현되어 있던 포맷팅 로직을 Domain 정책으로 수정

  • 찌르기 쿨타임 시간 포맷팅 로직도 도메인 정책으로 수정

  • 테스트 코드 추가 !

결과물

Before After
스크린샷 2026-04-24 오후 12 52 27 스크린샷 2026-04-24 오후 12 50 03

리뷰어에게 추가로 요구하는 사항 (선택)

## 변경 사항
- RelativeTimeFormatter를 CertificationTime 도메인 모델로 리팩토링
- 시간 표시 규칙 개선 (0~10분: 방금 전, 11~59분: 분 단위, 1~23시간: 시간 단위, 24시간+: 일 단위)
- 다국어 지원을 위한 strings.xml 분리

## 아키텍처 개선
**Domain Layer (domain 모듈)**
- CertificationTime sealed class 추가
- 팩토리 메서드 패턴: `CertificationTime.from(certifiedAt)`
- 비즈니스 로직(시간 계산)만 담당

**UI Layer (feature 모듈)**
- formatCertificationTime() Composable 함수로 포맷팅 처리
- stringResource 사용으로 다국어 지원

**제거**
- core/util의 RelativeTimeFormatter 삭제 (Context 의존성 제거)
- UiState의 포맷팅 로직 제거 (순수 데이터 클래스로 변경)
- `CooldownTime` sealed interface에 `Hours` 타입을 추가하고 `MinutesOnly`를 `Minutes`로 변경
- 남은 시간이 시간 단위로 나누어 떨어질 경우 `Hours`를 반환하도록 변환 로직 수정
- 공통 시간 포맷 문자열 리소스(`hours_only`, `hours_minutes`, `minutes_only`) 추가 및 기존 쿨타임 전용 리소스 제거
- `HomeScreen` 및 `PhotologDetailScreen`의 시간 포맷팅 로직을 `Context` 기반으로 변경하고 신규 타입 대응
- `CooldownTimeTest`에 시간 단위 케이스에 대한 테스트 코드 추가 및 기존 테스트 수정
@chanho0908 chanho0908 self-assigned this Apr 24, 2026
@chanho0908 chanho0908 added the Refactor Good for newcomers label Apr 24, 2026
@chanho0908 chanho0908 requested a review from dogmania April 24, 2026 03:59
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

Refactor Good for newcomers

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant