Skip to content

fix: 아바타 프로필 컬러 로직 수정 / 통합 #70

Description

@Kwon812

Issue

작업 유형

  • Feat: 새로운 기능 추가
  • Fix: 버그 수정
  • Docs: 문서 수정
  • Refactor: 리팩토링
  • Design: UI/CSS 수정
  • Chore: 설정, 패키지, 기타 작업
  • Hotfix: 긴급 수정

작업 내용

  • 아바타/프로필 색상 생성 로직을 shared로 승격하고, 전 화면에서 userId 기준으로 색상을 통일한다.
  • 현재 중복·분산된 색상 함수(getParticipantColor, getAvatarColor 등)를 하나로 통합한다.

작업 배경

  • 현재 아바타 색상 기준이 화면마다 제각각이라, 같은 사용자가 화면마다 다른 색으로 보이고 식별성이 떨어진다.

    위치 현재 색상 기준
    사이드바 (내 아바타) bg-orange-400 고정
    헤더 (내 아바타) bg-orange-400 고정
    설정 멤버목록 리스트 index 순환 (순서 바뀌면 색도 변함)
    스프린트 담당자 이름 첫 글자 해시 (같은 초성이면 동일 색)
    회의록 참석자 userId 해시
    task 매퍼 이름 전체 해시
  • 해시 로직 자체가 3벌로 중복되어 있다:

    • src/entities/meeting-note/model/meeting-note.mapper.tsgetParticipantColor (6색)
    • src/features/manage-sprint-tasks/lib/avatar-color.tsgetAvatarColor (7색)
    • src/entities/task/model/task.mapper.ts → 사본 getAvatarColor
  • 색상 유틸은 특정 도메인에 종속될 이유가 없는데, 설정 멤버목록이 @/entities/meeting-note를 import하는 등 부자연스러운 도메인 결합이 생기고 있다.

To Do

  • src/shared/lib/avatar-color.ts 생성 — getAvatarColor(seed: string): string (단일 팔레트로 통일)
  • 중복 함수 제거 후 shared로 통합
    • meeting-note.mapper.tsgetParticipantColor → shared 사용
    • manage-sprint-tasks/lib/avatar-color.ts → shared 사용
    • task.mapper.ts의 사본 → shared 사용
  • 각 소비처의 seed를 userId로 통일
    • 사이드바 WorkspaceSidebar.tsx (고정 주황 → userId 해시)
    • 헤더 WorkspaceHeader.tsx (고정 주황 → userId 해시)
    • 설정 멤버목록 MemberList.tsx (import 출처를 shared로, 미사용 AVATAR_COLORS/index·주석 정리)
    • 스프린트 TaskCard.tsx / TaskFormDialog.tsx (이름 첫 글자 → userId)
    • 회의록 참석자 매핑 (userId 유지, import 출처만 shared로)
  • 팔레트 6색/7색 불일치 정리 (하나로 확정)
  • tsc / eslint 통과 및 죽은 코드 제거

완료 기준

  • 어느 화면에서든 같은 사용자 = 같은 색으로 표시된다.
  • 멤버 순서가 바뀌어도 색이 변하지 않는다.
  • 색상 생성 유틸이 src/shared/lib/avatar-color.ts 한 곳에만 존재한다.
  • getParticipantColor / getAvatarColor 중복 정의가 모두 제거된다.
  • 타입 에러·린트 경고 없음.

참고 자료

  • 통일 기준 함수: src/entities/meeting-note/model/meeting-note.mapper.tsgetParticipantColor
  • 중복 함수: src/features/manage-sprint-tasks/lib/avatar-color.ts, src/entities/task/model/task.mapper.ts
  • 소비처: WorkspaceSidebar.tsx, WorkspaceHeader.tsx, MemberList.tsx, TaskCard.tsx, TaskFormDialog.tsx
  • 시드는 이름/닉네임이 아닌 userId 권장 (닉네임·이름 변경에도 색 유지, 충돌 최소)

예상 브랜치명

fix/#70/unify-avatar-color

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions