Files
sam-docs/system/erp-analysis/03-gps-attendance.md
권혁성 d4e5f62413 docs: [종합정비] Phase 1 시스템 현황 문서 14개 작성
- 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>
2026-02-27 18:03:13 +09:00

4.1 KiB

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