# 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 # 출퇴근 설정 수정 ```