← 문서 목록

우리매장 기능 가이드

우리매장 앱 — 기능 가이드

최종 업데이트: 2026-08-10 (v5.41) Android / Kotlin + Jetpack Compose


앱 개요

우리매장은 소상공인을 위한 매장 관리 앱입니다.
직원 등록부터 출퇴근 기록, 스케줄 관리, 급여 계산까지 한 앱에서 처리합니다.

앱은 사장 앱직원 앱 두 모듈로 구성됩니다.


빌드 플레이버

사장 앱 (app 모듈)

플레이버 IS_DEV MOCK_PRO 용도
devDebug true false 개발·목업 데이터, Firebase 우회
prodDebug false false Firebase 연동 디버그
prodRelease false false 스토어 배포
prodPro false true PRO 기능 전체 오픈, 광고 없음

직원 앱 (staff-app 모듈)

플레이버 IS_DEV 용도
devDebug true 개발용 (Firebase 우회, mock 매장 자동 연결)
prodRelease false 스토어 배포

사장 앱 화면 구성 (5개 탭 + 시트 레이어)

아이콘 설명
🏠 오늘 현황 · 직원 목록 · 주간 리포트
직원 👥 직원 등록·수정·퇴직 관리
스케줄 📅 월간 달력 중심 근무 일정 관리
출퇴근 출근/퇴근 처리 · 상세 수정
급여 💰 인건비 계산 · 지급 관리 · 히스토리

🚀 온보딩 (최초 1회)

prodPro 첫 로그인 시 OnboardingScreen 표시


🏠 홈 탭

상단 헤더

오늘 현황 카드

빠른 실행 타일 (4개)

타일 동작
➕ 직원 추가 직원 추가 시트 열기
📅 스케줄 등록 일정 추가 시트 열기
💰 급여 계산 급여 탭으로 이동
🎙 음성 조회 음성 인식 기능 실행

급여일 D-day 배너

오늘의 직원 목록

주간 리포트


👥 직원 탭

직원 목록

직원 추가 버튼 (헤더 우상단)

직원 추가/수정 시트 (AddStaffSheet)

아바타 설정

기본 정보

급여 정보

고정 근무 패턴 설정 (자동채우기 기능 연동)

직원 상세 시트 (StaffDetailSheet)

퇴직 처리


📅 스케줄 탭

뷰 구성

상단 토글로 두 가지 뷰 전환:


📅 월간 달력 뷰

달력 그리드

DayPanel (날짜 탭 시 하단 표시)

근무 추가/수정 시트 (ScheduleSheet) 헤더 우상단 "+ 근무 추가" 버튼 또는 ✏️ 버튼으로 열기

항목 내용
근무 유형 오픈 / 마감 / 오후 / 기타 칩 선택
시작/종료 시간 탭 → Material3 TimePicker
반복 (추가 모드만) 없음 / 매주 / 격주 / 매일 / 한달
직원 선택 활성 직원 2열 그리드 (멀티 선택)

반복 등록

근무 유형별 자동 설정

유형 기본 시간 색상
오픈 09:00~18:00 주황 #FF6B35
마감 14:00~22:00 보라 #8B5CF6
오후 12:00~20:00 파랑 #2563EB
기타 09:00~18:00 회색 #6B7280

📊 주간 보드 뷰 (읽기 전용)

직원 × 7일 그리드 — 한 주 흐름 파악용

헤더 영역

그리드

시프트 블록 색상 규칙 | 키워드 | 배경 | 텍스트 | |--------|------|--------| | "오픈" 포함 | 연주황 | 주황 | | "오후" 포함 | 연파랑 | 파랑 | | "마감" 포함 | 연보라 | 보라 | | 그 외 | 연초록 | 초록 | | 없음 (휴무) | 연회색 | 회색 |


⏱ 출퇴근 탭

오늘 근무 현황

근무 현황 상세 시트 (AttendDetailSheet)


💰 급여 탭

직원 급여 카드

급여 상세 시트 (PayrollDetailSheet)

급여 히스토리 (PayHistorySheet)


⚙️ 프로필 시트

프로필 버튼(홈 우상단) 탭으로 진입

내 정보

내 매장

매장 설정

앱 설정

로그아웃


📱 직원 앱 (staff-app)

직원 전용 별도 앱. 초대코드로 매장에 연결 후 사용.

앱 정보

인증 흐름

  1. 스플래시 → 로그인 상태 확인
  2. 미로그인: 로그인 화면 (이메일/비밀번호 또는 Google 로그인)
  3. 로그인 후 매장 미연결: 초대코드 입력 화면
  4. 연결 완료: 메인 4탭 화면 진입

초대코드 연결 (InviteCodeScreen)

4탭 구성

내용
시간대 인사말, 오늘 출퇴근 카드, 스케줄 카드, 이번 달 급여 요약
스케줄 월간 달력 뷰 + 리스트 뷰 토글, 자신의 근무 일정 조회
출퇴근 출퇴근 버튼(Canvas 파티클 이펙트), 월별 이력
급여 이번 달 다크 카드(금액·시간·시급·지급여부), 월별 이력

☁️ Firestore 동기화


아바타 & 색상 시스템

그라디언트 팔레트 (9가지)

인덱스 이름 색상
0 orange #FF6B35 → #FF9A6C
1 teal #2EC4B6 → #5EEAD4
2 purple #8B5CF6 → #A78BFA
3 pink #EC4899 → #F472B6
4 blue #3B82F6 → #60A5FA
5 green #10B981 → #34D399
6 amber #F59E0B → #FBBF24
7 red #EF4444 → #F87171
8 indigo #6366F1 → #818CF8

색상 결정 규칙

아바타 타입


계좌번호 하이픈 패턴

은행 자릿수 패턴
국민 14 6-2-6
신한 12 3-3-6
우리 13 4-3-6
하나 14 / 11 3-6-5 / 3-2-6
기업 14 3-6-5
농협 13 / 11 3-4-4-2 / 3-4-4
카카오 13 4-2-7
토스 12 4-4-4
씨티 12 3-6-3
SC제일 12 3-4-5
우체국 14 6-2-6

패턴 없는 은행은 숫자 그대로 표시 (fallback)


빌드 & 설치

# 사장 앱 — 빌드만 (devDebug 기본)
.\scripts\build.ps1

# 사장 앱 — prodPro 빌드만
.\scripts\build.ps1 -Flavor prodPro -BuildType release

# 사장 앱 — 빌드 + ADB 설치
.\scripts\build-install.ps1 -Target <ip:port>
.\scripts\build-install.ps1 -Target <ip:port> -Flavor prodPro -BuildType release

# 직원 앱 — 빌드 + ADB 설치
.\scripts\build-install-staff.ps1 -Target <ip:port>

주의: ADB 포트는 세션마다 변경됩니다. 매번 사용자에게 직접 받아서 사용하세요.


주요 기술 스택

항목 내용
언어 Kotlin
UI Jetpack Compose (Material3)
아키텍처 MVVM (ViewModel + Repository)
로컬 DB Room (SQLite)
클라우드 Firebase Auth + Firestore
광고 AdMob (FREE 플랜 배너+전면)
이미지 로딩 Coil (AsyncImage)
내비게이션 HorizontalPager (5탭) + BottomNavigationBar
빌드 플레이버 devDebug (목업) / prodRelease / prodPro
빌드 스크립트 scripts/build.ps1, scripts/build-install.ps1, scripts/build-install-staff.ps1