diff --git a/alarm-settings.md b/alarm-settings.md new file mode 100644 index 0000000..8c3d028 --- /dev/null +++ b/alarm-settings.md @@ -0,0 +1,79 @@ +# 알람 설정 + +## 알람 시스템 개요 + +ShiftRing은 **3단계 안전장치**를 통해 100% 신뢰도의 알람을 제공합니다. + +### 1단계: 자동 예약 +선택된 근무 패턴에 따라 향후 30일치 알람이 자동으로 예약됩니다. + +### 2단계: AlarmClock API +`setAlarmClock()` API를 사용하여 절전 모드(Doze)에서도 정확한 알람을 보장합니다. + +### 3단계: 실시간 동기화 +근무 변경 시 전체 알람 스케줄이 즉시 재구성됩니다. + +--- + +## 알람 시간 설정 + +### 기본 알람 시간 + +| 근무 | 기본 시간 | +|------|----------| +| 주간 | 06:00 | +| 석간 | 14:00 | +| 야간 | 22:00 | +| 야간 맞교대 | 18:00 | + +### 커스텀 시간 설정 + +1. **설정(⚙️) → 알람 설정** 탭 +2. 각 근무별 시간 조정 +3. 자동 저장 + +--- + +## 알람 화면 설명 + +### 알람 울림 시 화면 구성 + +``` +┌─────────────────────────┐ +│ 🕐 06:00 │ ← 근무 종류 및 시간 +│ 주간 알람 │ +├─────────────────────────┤ +│ │ +│ (알람 소리) │ +│ │ +├─────────────────────────┤ +│ [다시 울림] [🔔 해제] │ ← 操作 버튼 +└─────────────────────────┘ +``` + +### 버튼 기능 + +| 버튼 | 기능 | +|------|------| +| 다시 울림 | 설정된 간격(스누즈)만큼 미룬다 | +| 해제 | 알람 즉시 종료 | + +--- + +## 전체 알람 온/오프 + +**알람 설정 페이지 좌상단**의 마스터 스위치로 모든 알람을 일시적으로 활성화/비활성화할 수 있습니다. + +--- + +## 스누즈 설정 + +- **설정 → 알람 설정 → 스누즈 시간**에서 조정 +- 기본: 5분 + +--- + +## 참고 + +- 알람이 작동하려면 [권한 설정](permissions)이 완료되어야 합니다. +- 알람이 울리지 않으면 [문제 해결](troubleshooting)을 참조하세요. diff --git a/calendar.md b/calendar.md new file mode 100644 index 0000000..5c39909 --- /dev/null +++ b/calendar.md @@ -0,0 +1,78 @@ +# 캘린더 사용법 + +## 캘린더 화면 + +``` +┌─────────────────────────┐ +│ < 2026년 02월 > [오늘]│ +├─────────────────────────┤ +│ 일 월 화 수 목 금 토│ +│ 1 2 3 4 5 │ +│ 6 7 8 9 10 11 12│ +│ ... │ +├─────────────────────────┤ +│ 🔵 A조 🔴 B조 🟢 C조 │ ← 타 조 일정 +│ 🟡 D조 │ +└─────────────────────────┘ +``` + +--- + +## 주요 기능 + +### 색상별 근무 표시 + +| 색상 | 근무 | +|------|------| +| 🟡 노랑 | 주간 | +| 🟢 연두 | 석간 | +| 🟣 보라 | 야간 | +| 🔴 빨강 | 휴무 | + +### 월 이동 + +- **스와이프**: 좌우로手势하여 이전/다음 달 이동 +- **휠 다이얼**: 상단年月을 터치하여 직접 선택 + +### 오늘로 복귀 + +상단 **'오늘'** 버튼을 누르면 현재 날짜로 이동 + +--- + +## 근무 수정 + +### 날짜별 근무 변경 + +1. 변경할 날짜를 터치 +2. 팝업에서 근무 상태 선택: + - 연차 + - 월차 + - 교육 + - 반차 + - 휴무 + - 기타 + +### 메모 추가 + +메모栏에 내용을 입력하면: +- 해당 날짜 아래에 점(•) 표시 +- 터치 시 메모 내용 확인 가능 + +### 원래대로 복원 + +**'원래대로'** 버튼을 누르면 기본 순번으로 복원됩니다. + +--- + +## 타 조 일정 확인 + +하단의 다른 조(A/B/C/D)를 터치하면 해당 조의 근무 달력으로 временically切换됩니다. + +--- + +## 물때표 표시 (선택) + +**설정 → 기타 설정 → 물때표 보기**를 활성화하면: +- 달력 상단에 물때 정보 표시 +- 지역 선택 가능 (군산, 변산, 여수, 태안 등) diff --git a/developer-guide.md b/developer-guide.md new file mode 100644 index 0000000..dd3c281 --- /dev/null +++ b/developer-guide.md @@ -0,0 +1,179 @@ +# 개발자 가이드 + +## 프로젝트 개요 + +- **프로젝트명**: ShiftRing (교대링) +- **플랫폼**: Android (Kotlin) +- **지원 버전**: Android 8.0 (API 26) ~ Android 16 (API 34) +- **버전**: v1.1.9 + +--- + +## 프로젝트 구조 + +``` +ShiftRing/ +├── app/ +│ └── src/main/ +│ ├── kotlin/com/shiftring/ +│ │ ├── alarm/ # 알람 관련 +│ │ ├── ui/ # UI 관련 +│ │ └── data/ # 데이터 관련 +│ ├── assets/ +│ │ ├── MANUAL.md # 사용자 매뉴얼 +│ │ └── CHANGELOG.md # 변경 이력 +│ └── AndroidManifest.xml +├── docs/ # 문서 +└── version.json # 버전 정보 +``` + +--- + +## 알람 아키텍처 + +### 전체 흐름 + +``` +[알람 예약] → [AlarmManager] → [AlarmReceiver] → [AlarmActivity] + ↑ ↓ ↓ ↓ +[SharedPrefs] [Doze Mode] [WakeLock] [화면 켜짐] +``` + +### 핵심 컴포넌트 + +| 파일 | 역할 | +|------|------| +| `AlarmUtils.kt` | 알람 예약/취소 로직 | +| `AlarmReceiver.kt` | 알람 수신 및 처리 | +| `AlarmActivity.kt` | 알람 UI 및 해제 | +| `AlarmForegroundService.kt` | 포그라운드 서비스 | + +--- + +## 근무 패턴 + +### 전주 공장 (4팀 순환) + +``` +20일 주기: 주간 → 주간 → 주간 → 주간 → 주간 → 휴무 → 휴무 → 야간 → 야간 → 야간 → 야간 → 야간 → 휴무 → 석간 → 석간 → 석간 → 휴무 → 휴무 → 주간 → 주간 +``` + +### 논산 공장 (3팀 순환) + +``` +3일 주기: 주간 → 야간 → 석간 (월~금 근무, 토~일 휴무) +``` + +--- + +## 데이터 저장 + +### SharedPreferences + +``` +ShiftAlarmPrefs: + - selected_team: String (A/B/C/D) + - selected_factory: String (Jeonju/Nonsan) + - time_ju: String (주간 알람 시간) + - time_seok: String (석간 알람 시간) + - time_ya: String (야간 알람 시간) + - snooze_min: Int (스누즈 시간) +``` + +--- + +## APK 빌드 + +```bash +./gradlew assembleRelease +``` + +출력: `app/build/outputs/apk/release/app.apk` + +--- + +## 버전 관리 + +### version.json 형식 + +```json +{ + "versionCode": 1119, + "versionName": "1.1.9", + "apkUrl": "https://git.webpluss.net/sanjeok77/ShiftRing/releases/download/v1.1.9/app.apk", + "changelog": "버그 수정 내용", + "forceUpdate": false +} +``` + +### 릴리즈 태그 + +``` +v1.1.9 → Releases → assets에 APK 업로드 +``` + +--- + +## Wiki 업데이트 (푸시 방법) + +Wiki는 별도의 Git 저장소로 관리됩니다. + +### SSH로 푸시 + +```bash +# 1. Wiki 저장소 클론 +git clone git@git.webpluss.net:sanjeok77/ShiftRing.wiki.git +cd ShiftRing.wiki + +# 2. 마크다운 파일 작성/수정 +vim new-page.md + +# 3. 푸시 +git add . +git commit -m "Add new page" +git push +``` + +### HTTPS로 푸시 (토큰 사용) + +```bash +# 1. Personal Access Token 생성 +# GitLab/Gitea → Settings → Access Tokens → api 스코프 + +# 2. 토큰으로 클론 +git clone https://username:TOKEN@git.webpluss.net/sanjeok77/ShiftRing.wiki.git + +# 3. 수정 후 푸시 +git add . +git commit -m "Update wiki" +git push + +# 4. 보안: 토큰 숨기기 (다음부터는 토큰 없이 푸시 가능) +git remote set-url origin https://username@git.webpluss.net/sanjeok77/ShiftRing.wiki.git +git config credential.helper store +``` + +### Git 명령어 요약 + +| 명령어 | 설명 | +|--------|------| +| `git status` | 변경 사항 확인 | +| `git add .` | 모든 파일 스테이징 | +| `git commit -m "메시지"` | 커밋 | +| `git push` | 원격에 푸시 | +| `git pull` | 원격에서 가져오기 | + +--- + +## 관련 문서 + +- [기술 문서 (TECHNICAL_DOCUMENTATION.md)](https://git.webpluss.net/sanjeok77/ShiftRing/-/blob/main/TECHNICAL_DOCUMENTATION.md) +- [릴리즈 노트 (RELEASE_NOTES.md)](https://git.webpluss.net/sanjeok77/ShiftRing/-/blob/main/RELEASE_NOTES.md) +- [변경 이력 (CHANGELOG.md)](https://git.webpluss.net/sanjeok77/ShiftRing/-/blob/main/CHANGELOG.md) + +--- + +## 연락처 + +- **개발자**: sanjeok77 +- **이슈**: https://git.webpluss.net/sanjeok77/ShiftRing/-/issues diff --git a/getting-started.md b/getting-started.md new file mode 100644 index 0000000..d2ef57f --- /dev/null +++ b/getting-started.md @@ -0,0 +1,67 @@ +# 기본 사용법 + +## 첫 화면 구성 + +``` +┌─────────────────────────┐ +│ 2026년 02월 [오늘] │ ←年月 이동 +├─────────────────────────┤ +│ 일 월 화 수 목 금 │ +│ 1 2 3 4 5 │ ← 근무 일정 표시 +│ 6 7 8 9 10 11 12 │ +│ ... │ +├─────────────────────────┤ +│ ● ● ● ● ○ ○ ○ ○ ○ ○ │ ← 타 조 근무 +├─────────────────────────┤ +│ [설정] ⚙️ │ ← 설정 버튼 +└─────────────────────────┘ +``` + +--- + +## 근무 표시 색상 + +| 색상 | 근무 | +|------|------| +| 🟡 노랑 | 주간 (06:00) | +| 🟢 연두 | 석간 (14:00) | +| 🟣 보라 | 야간 (22:00) | +| 🔴 빨강 | 휴무 | + +--- + +## 주요操作 + +### 오늘로 이동 +상단 **'오늘'** 버튼을 누르면 현재 날짜로 이동 + +### 월 변경 +화면을 좌우로 스와이프하여 이전/다음 달 이동 + +### 년/월 직접 이동 +상단 **'2026년 02월'** 텍스트를 터치하면 휠 다이얼이 나타남 + +### 타 조 일정 확인 +하단의 다른 조 이름을 터치하면 해당 조의 근무 일정 확인 가능 + +--- + +## 근무 수정 + +기본 순번 외에 직접 근무를 변경할 수 있습니다. + +1. 수정할 날짜를 터치 +2. 근무 상태 선택 (연차, 월차, 교육, 반차 등) +3. 필요시 메모 입력 +4. 저장 + +**원래대로 복원**: '원래대로' 버튼을 누르면 기본 순번으로 복원 + +--- + +## 설정 메뉴 + +⚙️ 버튼을 눌러 설정에 접근: + +- **알람 설정**: 각 근무별 알람 시간 조정 +- **기타 설정**: 물때표, 백업, 앱 공유 등 diff --git a/home.md b/home.md index 2096d49..6936a50 100644 --- a/home.md +++ b/home.md @@ -1,12 +1,48 @@ -# ShiftRing Wiki에 오신 것을 환영합니다 +# 교대링 (ShiftRing) -이곳은 프로젝트 문서를 작성하는 공간입니다. +> 전주/논산 공장을 위한 완벽한 교대 알람 앱 -## 목차 +## 개요 -- [시작하기](home) -- [설치 방법](installation) +**교대링(ShiftRing)**은 삼성전자 전주/논산 공장 근무자를 위한 전문 교대 알람 앱입니다. 주간, 석간, 야간, 맞교대 등 복잡한 교대 패턴을 자동으로 인식하여 알람을 예약합니다. -## 기여하기 +### 주요 기능 -문서 수정에 기여하고 싶으시다면 PR을 보내주세요. +| 기능 | 설명 | +|------|------| +| 🎯 **스마트 알람** | AlarmClock API 기반 100% 신뢰도 알람 | +| 📅 **캘린더 뷰** | 색상으로 구분된 근무 일정 표시 | +| 🔔 **잠금 화면 알람** | Android 14+ 전체화면 알림 지원 | +| 🔋 **배터리 최적화** | Doze 모드에서도 정확한 알람 | +| 💾 **데이터 백업** | 근무 기록 백업/복원 기능 | + +### 지원 버전 + +- **Android**: 8.0 (Oreo) ~ 16 (Baklava) +- **최신 버전**: v1.1.9 + +--- + +## 시작하기 + +1. [설치 방법](installation) +2. [권한 설정](permissions) +3. [기본 사용법](getting-started) + +## 상세 가이드 + +- [알람 설정](alarm-settings) +- [캘린더 사용법](calendar) +- [문제 해결](troubleshooting) +- [개발자 가이드](developer-guide) + +--- + +## 다운로드 + +[**최신 APK 다운로드 (v1.1.9)**](https://git.webpluss.net/sanjeok77/ShiftRing/releases/download/v1.1.9/app.apk) + +--- + +**ShiftRing Team** +Copyright © 2026 sanjeok77. All Rights Reserved. diff --git a/installation.md b/installation.md new file mode 100644 index 0000000..0ef2ff8 --- /dev/null +++ b/installation.md @@ -0,0 +1,58 @@ +# 설치 방법 + +## APK 설치 + +### 최신 버전 다운로드 + +[**ShiftRing v1.1.9 APK 다운로드**](https://git.webpluss.net/sanjeok77/ShiftRing/releases/download/v1.1.9/app.apk) + +### 설치 단계 + +1. APK 파일을 기기로 전송 +2. 파일管理器에서 APK 파일 열기 +3. **"알 수 없는 출처からの 앱 설치 허용"** 메시지가 나오면 허용 +4. 설치 진행 + +> ⚠️ **주의**:_play store에 배포되지 않는 직접 설치 APK입니다. + +--- + +## 초기 설정 + +### 1. 공장 선택 + +앱 실행 후 본인이 근무하는 공장을 선택: + +- **전주 공장**: 4팀 순환 (A/B/C/D) +- **논산 공장**: 3팀 순환 + +### 2. 팀(조) 선택 + +자신의 반을 선택: +- 전주: A, B, C, D +- 논산: 해당 팀 명 + +### 3. 알람 권한 설정 + +반드시 완료해야 할 필수 설정: + +| 권한 | 설정 방법 | +|------|----------| +| 정확한 알람 | 설정 → 앱 → ShiftRing → 권한 → 알람 및 리마인더 → 허용 | +| 배터리 최적화 제외 | 설정 → 배터리 → ShiftRing → 제한 없음 | +| 전체화면 알림 | 설정 → 앱 → ShiftRing → 권한 → 전체화면 알림 → 허용 (Android 14+) | + +자세한 내용은 [권한 설정](permissions) 문서를 참조하세요. + +--- + +## 업데이트 방법 + +### 자동 업데이트 + +앱 실행 시 서버에서 최신 버전을 확인하고 업데이트를 안내합니다. + +### 수동 업데이트 + +1. 위 링크에서 최신 APK 다운로드 +2. 기존 앱 위에 설치 (데이터 보존) diff --git a/permissions.md b/permissions.md new file mode 100644 index 0000000..b1fbbc1 --- /dev/null +++ b/permissions.md @@ -0,0 +1,66 @@ +# 권한 설정 + +알람이 정확하게 작동하기 위해 반드시 설정해야 하는 권한들입니다. + +## 필수 권한 목록 + +### 1. 정확한 알람 (Android 12+) + +**설명**: 정확한 시간에 알람을 울리기 위해 필수 + +**설정 방법**: +``` +설정 → 앱 → ShiftRing → 권한 → 알람 및 리마인더 → 허용 +``` + +### 2. 배터리 최적화 제외 + +**설명**: Doze 모드(절전 모드)에서도 알람이 작동하도록 설정 + +**설정 방법**: +``` +설정 → 배터리 → 배터리 사용량 → ShiftRing → 제한 없음 +``` + +### 3. 전체화면 알림 (Android 14+) + +**설명**: 잠금 화면에서도 즉시 알람 화면 표시 + +**설정 방법**: +``` +설정 → 앱 → ShiftRing → 권한 → 전체화면 알림 → 허용 +``` + +### 4. 다른 앱 위에 표시 + +**설명**: 알람 화면이 다른 앱 위에 나타날 수 있도록 허용 + +**설정 방법**: +``` +설정 → 앱 → ShiftRing → 권한 → 다른 앱 위에 표시 → 허용 +``` + +--- + +## Android 버전별 차이점 + +| Android 버전 | 추가 권한 | +|-------------|---------| +| 8.0~11 | 기본 권한만으로 동작 | +| 12~13 | 정확한 알람 권한 필요 | +| 14+ | 전체화면 알림 권한 필요 | + +--- + +## 권한 확인 방법 + +앱 실행 시 통합 대시보드에서 모든 권한 상태를 확인할 수 있습니다. + + z초록색: 허용됨 +- 🔴 적색: 설정 필요 + +--- + +## 문제가 있다면 + +[문제 해결](troubleshooting) 문서를 참조하세요. diff --git a/troubleshooting.md b/troubleshooting.md new file mode 100644 index 0000000..d1709e0 --- /dev/null +++ b/troubleshooting.md @@ -0,0 +1,95 @@ +# 문제 해결 + +## 알람이 안 울림 + +### 원인 1: 정확한 알람 권한 없음 (Android 12+) + +**증상**: 설정에서 권한이 허용되지 않음 + +**해결**: +``` +설정 → 앱 → ShiftRing → 권한 → 알람 및 리마인더 → 허용 +``` + +### 원인 2: 배터리 최적화 + +**증상**: Doze 모드에서 알람이 지연됨 + +**해결**: +``` +설정 → 배터리 → 배터리 사용량 → ShiftRing → 제한 없음 +``` + +### 원인 3: 전체화면 알림 미허용 (Android 14+) + +**증상**: 알람은 울리지만 화면이 켜지지 않음 + +**해결**: +``` +설정 → 앱 → ShiftRing → 권한 → 전체화면 알림 → 허용 +``` + +--- + +## 잠금 화면에 안 보임 + +Android 14+에서 발생: + +1. **전체화면 알림** 권한 허용 확인 +2. **다른 앱 위에 표시** 권한 허용 확인 + +--- + +## 알람이 너무 늦게 옴 + +배터리 최적화 설정 여부 확인: +- 설정 → 배터리 → ShiftRing → 제한 없음 + +--- + +## 날짜별 근무가 잘못 표시됨 + +1. 공장/팀 설정 확인 + - 설정 → 공장 선택 + - 설정 → 팀 선택 + +2. 해당 날짜를 터근 → '원래대로' 버튼으로 기본 순번 복원 + +--- + +## 앱이 강제 종료됨 + +1. 앱 데이터 삭제 후 재설치 +2. 최신 버전으로 업데이트 + +--- + +## 로그 확인 방법 (개발자용) + +```bash +# 필수 로그만 보기 +adb logcat -s AlarmReceiver:D ShiftAlarm:D *:S + +# 전체 로그 +adb logcat | grep -E "ShiftRing|Alarm" +``` + +--- + +## 정상 동작 로그 예시 + +``` +AlarmReceiver: ===== 알람 수신 ===== +AlarmReceiver: 근무: 주간 | ID: 126021300 +AlarmReceiver: WakeLock 획득 완료 +AlarmReceiver: Foreground Service 시작 +AlarmReceiver: Notification 발행 완료 +AlarmActivity: 화면 켜짐 성공 +``` + +--- + +## 도움이 더 필요하면 + +GitLab Issues에 문제를報告해주세요: +https://git.webpluss.net/sanjeok77/ShiftRing/-/issues