Add comprehensive wiki documentation

2026-02-22 14:37:11 +09:00
parent 6206e8d856
commit 4ca632240a
8 changed files with 665 additions and 7 deletions

79
alarm-settings.md Normal file

@@ -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)을 참조하세요.

78
calendar.md Normal file

@@ -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切换됩니다.
---
## 물때표 표시 (선택)
**설정 → 기타 설정 → 물때표 보기**를 활성화하면:
- 달력 상단에 물때 정보 표시
- 지역 선택 가능 (군산, 변산, 여수, 태안 등)

179
developer-guide.md Normal file

@@ -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

67
getting-started.md Normal file

@@ -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. 저장
**원래대로 복원**: '원래대로' 버튼을 누르면 기본 순번으로 복원
---
## 설정 메뉴
⚙️ 버튼을 눌러 설정에 접근:
- **알람 설정**: 각 근무별 알람 시간 조정
- **기타 설정**: 물때표, 백업, 앱 공유 등

50
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.

58
installation.md Normal file

@@ -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. 기존 앱 위에 설치 (데이터 보존)

66
permissions.md Normal file

@@ -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) 문서를 참조하세요.

95
troubleshooting.md Normal file

@@ -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