- system/overview.md: 전체 아키텍처 개요 - system/api-structure.md: API 구조 (220 모델, 1027 엔드포인트, 18 라우트 도메인) - system/react-structure.md: React 구조 (249 페이지, 612 컴포넌트) - system/mng-structure.md: MNG 구조 (171 컨트롤러, 436 Blade 뷰) - system/docker-setup.md: Docker 7 컨테이너 구성 - system/database/README.md + 9개 도메인 스키마 (270+ 테이블) - core, hr, sales, production, finance, boards, files, system, erp-analysis Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
145 lines
4.1 KiB
Markdown
145 lines
4.1 KiB
Markdown
# GPS 출퇴근 (슬라이드 23-27)
|
|
|
|
## 1. 개요
|
|
|
|
GPS 기반 모바일 출퇴근 관리 시스템으로, 위치 정보를 활용하여 출근/퇴근을 기록합니다.
|
|
|
|
## 2. 마이페이지 팝업 > 출퇴근하기 (슬라이드 24)
|
|
|
|
### 2.1 출퇴근 버튼
|
|
- GPS 출퇴근 사용 시에만 표시
|
|
- 모바일일 경우에만 버튼 활성화
|
|
- 클릭: 출퇴근하기 화면으로 이동
|
|
|
|
### 2.2 출퇴근 허용 반경
|
|
- 기준 화표로부터의 출퇴근 허용 반경을 m 형으로 표시 (기준정보 > 출퇴근관리에서 설정)
|
|
|
|
### 2.3 현재 위치 버튼
|
|
- 클릭: (3-1) 해당 현재 위치를 지도 중심으로 표시
|
|
|
|
### 2.4 [+] 버튼
|
|
- 클릭: 지도 영역 확대
|
|
|
|
### 2.5 확대/축소 슬라이드바
|
|
- 드래그&드랍 또는 클릭: 지도 영역 확대/축소
|
|
|
|
### 2.6 [-] 버튼
|
|
- 클릭: 지도 영역 축소
|
|
|
|
### 2.7 개인 정보 영역
|
|
- 항목: 프로필 이미지, 이름, 부서명, 직급명
|
|
|
|
### 2.8 현재 시:분:초 표시
|
|
- HH:MM:SS
|
|
|
|
### 2.9 출근하기 버튼
|
|
- 클릭:
|
|
1) 출근 위치 미설정 상태일 경우: "출근 위치를 설정해주세요." 알림 Alert 표시
|
|
2) 출근 위치 설정 상태일 경우:
|
|
- (1) 출근 위치가 기준 설정 반경 초과일 경우: "출근 가능 위치가 아닙니다. 출근 위치를 확인해주세요." 알림 Alert 표시
|
|
- [2] GPS 출근 위치 기준 설정 반경 이내: 출근하기 화면으로 이동 (출근 기록 저장)
|
|
|
|
## 3. 출근하기 (슬라이드 25)
|
|
|
|
### 3.1 퇴근하기 버튼
|
|
- 클릭:
|
|
1) 퇴근 위치 미설정 상태일 경우: "퇴근 위치를 설정해주세요." 알림 Alert 표시
|
|
2) 퇴근 위치 설정 상태일 경우:
|
|
- (1) 퇴근 위치가 기준 설정 반경 초과일 경우: "퇴근 가능 위치가 아닙니다. 퇴근 위치를 확인해주세요." 알림 Alert 표시
|
|
- [2] GPS 퇴근 위치 기준 설정 반경 이내: 퇴근하기 화면으로 이동 (퇴근 기록 저장)
|
|
|
|
### 3.2 출근 완료 아이콘 이미지 표시
|
|
|
|
### 3.3 출근 완료 정보
|
|
- 항목: 출근 완료 문구, 시:분:초, 일자(요일)
|
|
|
|
### 3.4 출근 화표의 본사/현장명 표시
|
|
|
|
### 3.5 확인 버튼
|
|
- 클릭: 대시보드로 이동
|
|
|
|
## 4. 퇴근하기 (슬라이드 26)
|
|
|
|
### 4.1 퇴근 완료 아이콘 이미지 표시
|
|
|
|
### 4.2 퇴근 완료 정보
|
|
- 항목: 퇴근 완료 문구, 시:분:초, 일자(요일)
|
|
|
|
### 4.3 퇴근 화표의 본사/현장명 표시
|
|
|
|
### 4.4 확인 버튼
|
|
- 클릭: 대시보드로 이동
|
|
|
|
## 5. 현장 등록 (슬라이드 27)
|
|
|
|
### 5.1 위치 정보 설정
|
|
- 각 현장의 GPS 중심값으로 설정
|
|
|
|
### 5.2 입력 필드
|
|
| 필드명 | 필수 | 설명 |
|
|
|--------|------|------|
|
|
| 주소 | Y | 우편번호 찾기 + 상세주소 |
|
|
| 경도 | Y | |
|
|
| 위도 | Y | |
|
|
| 첨부파일 | N | |
|
|
|
|
---
|
|
|
|
## 데이터 모델
|
|
|
|
### Attendance (출퇴근 기록)
|
|
```
|
|
- id: bigint
|
|
- user_id: bigint (FK)
|
|
- tenant_id: bigint (FK)
|
|
- type: enum('check_in', 'check_out')
|
|
- check_time: datetime
|
|
- latitude: decimal(10,8)
|
|
- longitude: decimal(11,8)
|
|
- location_id: bigint (FK, nullable) # 본사/현장
|
|
- location_name: string
|
|
- is_valid: boolean # 유효 위치 여부
|
|
- created_at: timestamp
|
|
```
|
|
|
|
### Location (본사/현장)
|
|
```
|
|
- id: bigint
|
|
- tenant_id: bigint (FK)
|
|
- name: string
|
|
- address: string
|
|
- detail_address: string
|
|
- latitude: decimal(10,8)
|
|
- longitude: decimal(11,8)
|
|
- allowed_radius: int # 허용 반경 (m)
|
|
- is_active: boolean
|
|
- created_at: timestamp
|
|
```
|
|
|
|
---
|
|
|
|
## API 도출
|
|
|
|
### GPS 출퇴근 API
|
|
```
|
|
POST /api/attendance/check-in # 출근 기록
|
|
POST /api/attendance/check-out # 퇴근 기록
|
|
GET /api/attendance/today # 오늘 출퇴근 현황
|
|
GET /api/attendance/status # 현재 출퇴근 상태
|
|
GET /api/attendance/location/validate # 위치 유효성 검증
|
|
```
|
|
|
|
### 현장 관리 API
|
|
```
|
|
GET /api/locations # 현장 목록
|
|
POST /api/locations # 현장 등록
|
|
PUT /api/locations/{id} # 현장 수정
|
|
DELETE /api/locations/{id} # 현장 삭제
|
|
```
|
|
|
|
### 출퇴근 설정 API
|
|
```
|
|
GET /api/settings/attendance # 출퇴근 설정 조회
|
|
PUT /api/settings/attendance # 출퇴근 설정 수정
|
|
```
|