- 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>
9.5 KiB
9.5 KiB
기준정보 (슬라이드 92-104)
1. 개요
기준정보 모듈은 직급, 직책, 권한, 근무, 출퇴근, 휴가, 카드, 계좌, 팝업, 게시판, 일반설정, 알림설정을 관리합니다.
2. 직급관리 (슬라이드 93, 95)
2.1 직급 인풋박스
- 직급 입력 후 추가 버튼 클릭
2.2 추가 버튼
- 클릭: (2-1) 직급 목록 최하단에 표시
2.3 직급 목록
- 디폴트: 사원, 대리, 과장, 차장, 부장, 이사, 상무, 전무, 부사장, 사장
2.4 순서 변경 버튼
- 드래그&드랍: 해당 위치로 순서 변경
2.5 수정 버튼
- 클릭: 직급 수정 팝업 표시
2.6 삭제 버튼
- 클릭:
- 해당 직급으로 사원 설정된 경우: "'직급명'을 사용하고 있는 사원이 있습니다. 다 변경 후 삭제가 가능합니다." 알림 Alert 표시
- 해당 직급으로 사원 미설정된 경우: "정말 삭제하시겠습니까?" 확인 Alert 표시, 확인 클릭 시 "삭제가 완료되었습니다." 알림 Alert 표시
2.7 직급 수정 팝업
- 직급명 인풋박스: 기존 직급명 표시, 수정 가능
3. 직책관리 (슬라이드 94-95)
3.1 기능
- 직급관리와 동일한 구조
3.2 디폴트 직책
- (없음)
3.3 직책 수정 팝업
- 직책명 인풋박스: 기존 직책명 표시, 수정 가능
4. 권한관리 (슬라이드 96)
4.1 관리자
- 디폴트: 모든 메뉴 권한 설정
- 수정 불가, 삭제 불가
4.2 일반
- 디폴트: 대시보드 제외 모든 메뉴 접근 불가
4.3 추가 버튼
- 클릭: 권한 추가 팝업 표시
4.4 삭제 버튼
- 클릭:
- 해당 권한으로 사원 설정된 경우: "'권한명'을 사용하고 있는 사원이 있습니다. 다 변경 후 삭제가 가능합니다." 알림 Alert 표시
- 해당 권한으로 사원 미설정된 경우: "정말 삭제하시겠습니까?" 확인 Alert 표시
4.5 체크박스
- 클릭: 체크 설정/해제 토글
- 디폴트: 체크 해제 상태
4.6 관리
- 읽기 및 수정 권한
4.7 읽기
- 읽기만 권한
5. 근무관리 (슬라이드 97)
5.1 근무 정보
| 필드명 | 설명 |
|---|---|
| 근무 유형 | 종류: 고정형, 변형, 맞춤형 |
| 기본 소정 근로 시간 | 주 00시간 |
| 연장 근로 시간 | 주 00시간 |
| 연장 근로 한도 | 52시간 미만 |
| 근무 요일 설정 | 클릭: 설정된 체크 활성/비활성 토글, 디폴트: 월~금 활성 |
5.2 출근 시간
- 09:00
5.3 퇴근 시간
- 18:00
5.4 휴게 시간
| 필드명 | 설명 |
|---|---|
| 총 휴게 시간 | 1시간 |
| 휴게 시간 | 12:00 ~ 13:00 |
6. 출퇴근관리 (슬라이드 99)
6.1 출퇴근 설정
| 필드명 | 설명 |
|---|---|
| GPS 출퇴근 | 토글: 기준 좌표로 정해진 거리 기준 이내에 있을 때만 출근/퇴근 등록 가능 |
| 허용 반경 | 주 00m |
6.2 본사 위치 정보
| 필드명 | 설명 |
|---|---|
| 본사 주소 | 우편번호 찾기 + 상세주소 |
| 경도 | |
| 위도 |
6.3 현장 목록
- 추가 버튼: 현장 등록 팝업 표시
- 현장명, 주소, 삭제 버튼
7. 휴가관리 (슬라이드 100)
7.1 기준 셀렉트 박스
- 종류: 회계연도, 입사일
- 디폴트: 회계연도
- 입사일 선택 시 (2) 영역 비활성화
- 회계연도 기준: 회사의 회계연도를 기준으로 휴가를 부여하고 조회할 수 있습니다.
- 입사일 기준: 사원의 입사일 회계연도 기준으로 휴가를 부여하고 조회할 수 있습니다.
7.2 기준일 월/일 설정 영역
- 회계연도 기준 시에만 활성화
7.3 기본 연차 설정
- 1년간 출근율 80% 이상이면 15일
- 3년 이상 근속 시 2년에 1일 추가 (최대 25일)
- 1년 미만 또는 출근율 80% 이하인 경우 1일
- 입사일~회계연도 기준일 사정: 회년도 출근율로 판정 80% 이상이면 15일
- (3-1) 연차+1년+1일 시작, 이후 2년에 1일 추가
- 입사일~회계연도 기준으로 전환할 때는 취업규칙 변경, 노사 의견수렴, 전환 시 충북 연차 정산(입사일 기준 vs 회계연도 기준 비교 후 부족분 보전)을 반드시 검토 필요
8. 카드관리 (슬라이드 101-102)
8.1 카드 목록
| 필드명 | 설명 |
|---|---|
| 카드사 | |
| 카드번호 | 앞4자리, 끝4자리 표시 |
| 카드명 | |
| 상태 | |
| 사용자 | 부서명 / 이름 / 직책 |
| 작업 | 상세 버튼 |
8.2 필터
- 종류: 전체, 사용, 정지
- 디폴트: 전체
8.3 카드 상세
| 필드명 | 필수 | 설명 |
|---|---|---|
| 카드사 | Y | 카드사명 선택 |
| 카드번호 | Y | 1234-1234-1234-1234 |
| 유효기간 | Y | MM/YY |
| 카드 비밀번호 앞 2자리 | Y | 입력 시 마스킹 처리 |
| 카드명 | Y | |
| 상태 | Y | 종류: 사용, 정지. 정지 시 해당 카드의 자동 조회 중단 |
| 사용자 | N | 부서명 / 이름 / 직책. 선택 시 해당 카드의 사용자로 설정 |
9. 계좌관리 (슬라이드 103-104)
9.1 계좌 목록
| 필드명 | 설명 |
|---|---|
| 은행 | |
| 계좌번호 | |
| 예금주 | |
| 상태 | |
| 사용자 | 부서명 / 이름 / 직책 |
| 작업 | 상세 버튼 |
9.2 필터
- 종류: 전체, 사용, 정지
- 디폴트: 전체
9.3 계좌 상세
| 필드명 | 필수 | 설명 |
|---|---|---|
| 은행 | Y | 은행 선택 |
| 계좌번호 | Y | |
| 예금주 | Y | |
| 계좌명 | Y | |
| 상태 | Y | 종류: 사용, 정지. 정지 시 해당 계좌의 자동 조회 중단 |
| 사용자 | N | 부서명 / 이름 / 직책. 선택 시 해당 계좌의 사용자로 설정 |
데이터 모델
Position (직급)
- id: bigint
- tenant_id: bigint (FK)
- name: string
- order: int
- created_at: timestamp
JobTitle (직책)
- id: bigint
- tenant_id: bigint (FK)
- name: string
- order: int
- created_at: timestamp
Role (권한)
- id: bigint
- tenant_id: bigint (FK)
- name: string
- is_system: boolean # 시스템 기본 권한 여부
- permissions: json # 메뉴별 권한 설정
- created_at: timestamp
WorkSetting (근무 설정)
- id: bigint
- tenant_id: bigint (FK)
- work_type: enum('fixed', 'flexible', 'custom')
- standard_hours: int # 주당 소정 근로 시간
- overtime_hours: int # 주당 연장 근로 시간
- overtime_limit: int # 연장 근로 한도
- work_days: json # ['mon', 'tue', 'wed', 'thu', 'fri']
- start_time: time
- end_time: time
- break_hours: int
- break_start: time
- break_end: time
AttendanceSetting (출퇴근 설정)
- id: bigint
- tenant_id: bigint (FK)
- use_gps: boolean
- allowed_radius: int # 허용 반경 (m)
- headquarters_address: string
- headquarters_latitude: decimal(10,8)
- headquarters_longitude: decimal(11,8)
LeaveSetting (휴가 설정)
- id: bigint
- tenant_id: bigint (FK)
- base_type: enum('fiscal_year', 'hire_date')
- fiscal_start_month: int
- fiscal_start_day: int
Card (카드)
- id: bigint
- tenant_id: bigint (FK)
- card_company: string
- card_number: string (encrypted)
- expiry_date: string
- card_password: string (encrypted)
- card_name: string
- status: enum('active', 'inactive')
- user_id: bigint (FK, nullable)
- created_at: timestamp
BankAccount (계좌)
- id: bigint
- tenant_id: bigint (FK)
- bank_code: string
- account_number: string
- account_holder: string
- account_name: string
- status: enum('active', 'inactive')
- user_id: bigint (FK, nullable)
- created_at: timestamp
API 도출
직급/직책 API
GET /api/positions # 직급 목록
POST /api/positions # 직급 추가
PUT /api/positions/{id} # 직급 수정
DELETE /api/positions/{id} # 직급 삭제
PUT /api/positions/reorder # 직급 순서 변경
GET /api/job-titles # 직책 목록
POST /api/job-titles # 직책 추가
PUT /api/job-titles/{id} # 직책 수정
DELETE /api/job-titles/{id} # 직책 삭제
PUT /api/job-titles/reorder # 직책 순서 변경
권한 API
GET /api/roles # 권한 목록
POST /api/roles # 권한 추가
GET /api/roles/{id} # 권한 상세
PUT /api/roles/{id} # 권한 수정
DELETE /api/roles/{id} # 권한 삭제
GET /api/menus # 메뉴 목록 (권한 설정용)
설정 API
GET /api/settings/work # 근무 설정 조회
PUT /api/settings/work # 근무 설정 수정
GET /api/settings/attendance # 출퇴근 설정 조회
PUT /api/settings/attendance # 출퇴근 설정 수정
GET /api/settings/leave # 휴가 설정 조회
PUT /api/settings/leave # 휴가 설정 수정
카드/계좌 API
GET /api/cards # 카드 목록
POST /api/cards # 카드 등록
GET /api/cards/{id} # 카드 상세
PUT /api/cards/{id} # 카드 수정
DELETE /api/cards/{id} # 카드 삭제
GET /api/bank-accounts # 계좌 목록
POST /api/bank-accounts # 계좌 등록
GET /api/bank-accounts/{id} # 계좌 상세
PUT /api/bank-accounts/{id} # 계좌 수정
DELETE /api/bank-accounts/{id} # 계좌 삭제