docs: 산출물 4종(개발계획서·설계서·사용자/운영자 지침서) UIMS 이식 반영
This commit is contained in:
parent
7fc31fe082
commit
e4ccc688c3
81
doc/_content_개발계획서.json
Normal file
81
doc/_content_개발계획서.json
Normal file
@ -0,0 +1,81 @@
|
|||||||
|
{
|
||||||
|
"solution": "GUARDiA HRM",
|
||||||
|
"doc_type": "개발계획서",
|
||||||
|
"out": "C:/GUARDiA/workspace/guardia-hrm/doc/hrm_개발계획서_v1.pptx",
|
||||||
|
"subtitle": "AI 기반 통합 인사관리 + UIMS 공통 업무협업 플랫폼 / 지오정보기술 2026",
|
||||||
|
"design": {"primary": "1F3A5F", "accent": "2E86C1", "text": "222222", "font_ko": "맑은 고딕"},
|
||||||
|
"sections": [
|
||||||
|
{"title": "1. 개요 / 배경", "bullets": [
|
||||||
|
"GUARDiA 9세대 신규 솔루션 — 기존 포트폴리오(ERP/CRM/OCR/BI/PMS/RPA/Groupware/Portal/Mall/CMS/MES) 공백 영역인 HRM 도메인 추가",
|
||||||
|
"AI 기반 통합 인사관리: 사원·조직·급여·근태·성과·채용·교육을 단일 플랫폼으로 통합",
|
||||||
|
"2026-06-21 UIMS(URP Infra Working System) 전체 이식 — 공통 업무협업(업무일지·일정·쪽지·통계)과 시스템관리(RBAC) 신규 탑재",
|
||||||
|
"온프레미스 sLLM(Ollama)만 사용 — 외부 AI API 호출 없음, PII AES-256-GCM 암호화 저장"
|
||||||
|
]},
|
||||||
|
{"title": "2. 개발 목표", "bullets": [
|
||||||
|
"인사 본연 업무 자동화: 입퇴사·발령·급여·근태·평가·채용·교육 전 주기 관리",
|
||||||
|
"공통 업무협업 레이어 내재화: 부서원 업무일지·일정·쪽지·근무통계로 협업 강화",
|
||||||
|
"표준 시스템관리(RBAC) 제공: 역할·메뉴·권한·부서·거래처·공통코드 관리",
|
||||||
|
"보안 강화 인증: JWT + 2차 인증(2FA) + 로그인 보조(회원가입·아이디찾기·비밀번호초기화)",
|
||||||
|
"관리자 웹 + 모바일 앱(통합 메신저 런처 app/hrm/) 동시 제공"
|
||||||
|
]},
|
||||||
|
{"type": "table", "title": "3. 개발 범위 — 기능 모듈", "headers": ["구분", "모듈", "주요 기능"], "rows": [
|
||||||
|
["HR 본연", "사원(employee)", "사원 등록·발령·이력, PII 암호화"],
|
||||||
|
["HR 본연", "조직(organization)", "조직도·부서·직급 관리"],
|
||||||
|
["HR 본연", "급여(payroll)", "급여대장·명세서·공제"],
|
||||||
|
["HR 본연", "근태(attendance)", "출퇴근·휴가·근무현황"],
|
||||||
|
["HR 본연", "성과(performance)", "평가·목표(MBO/KPI)"],
|
||||||
|
["HR 본연", "채용(recruitment)", "공고·지원자·전형"],
|
||||||
|
["HR 본연", "교육(training)", "교육과정·이수 관리"],
|
||||||
|
["HR 본연", "AI(ai)", "이직예측·성과예측·채용추천·조직건강도·이력서분석·HR인사이트"],
|
||||||
|
["UIMS 신규", "업무일지(worklog)", "목록/달력/검색/진척 대시보드/CRUD/댓글/확인"],
|
||||||
|
["UIMS 신규", "일정(schedule)", "월 달력/일지/첨부 파일업로드"],
|
||||||
|
["UIMS 신규", "쪽지(message)", "수신·발신함·미읽음 카운트"],
|
||||||
|
["UIMS 신규", "통계(stats)", "개인·전사 근무 피벗"],
|
||||||
|
["UIMS 신규", "시스템관리(system)", "RBAC: 역할·메뉴·권한·부서·거래처·공통코드"]
|
||||||
|
]},
|
||||||
|
{"title": "4. 이번 세션 신규 — UIMS 전체 이식", "bullets": [
|
||||||
|
"공통 업무협업 전체 신규: com.zioinfo.hrm.uiws.* 91개 엔드포인트 + 프론트 4화면",
|
||||||
|
"시스템관리(권한관리 RBAC): tb_uiws_* 테이블, /api/system/* + React 화면 7종(역할·역할메뉴·코드·메뉴·부서·거래처·시스템셸)",
|
||||||
|
"로그인 보조 3종: 회원가입·아이디찾기·비밀번호초기화 (/api/auth/*, 무인증 permitAll)",
|
||||||
|
"2차 인증(2FA): 기존 HRM 로그인에 이메일 인증코드 레이어 추가 — 토글 off 시 단일 JWT 회귀 0",
|
||||||
|
"모바일 앱 QR 배포: 통합 메신저 런처 app/hrm/ 9개 화면 연동"
|
||||||
|
]},
|
||||||
|
{"type": "table", "title": "5. 기술 스택", "headers": ["레이어", "기술"], "rows": [
|
||||||
|
["백엔드", "Spring Boot 3.5 / Java 17 / MyBatis"],
|
||||||
|
["프론트엔드", "React 19 + Vite + TypeScript + Tailwind + Recharts"],
|
||||||
|
["모바일", "React Native + Expo (통합 메신저 런처 app/hrm/)"],
|
||||||
|
["데이터베이스", "PostgreSQL (hrm_db)"],
|
||||||
|
["AI", "온프레미스 Ollama sLLM (외부 API 금지)"],
|
||||||
|
["인증", "JWT + 2FA(이메일 인증코드) + RBAC"],
|
||||||
|
["패키지/포트", "com.zioinfo.hrm / 8014"]
|
||||||
|
]},
|
||||||
|
{"title": "6. 시스템 아키텍처", "bullets": [
|
||||||
|
"단일 JAR 패턴: 프론트 빌드 산출물을 backend static에 번들",
|
||||||
|
"@MapperScan(annotationClass=Mapper.class) 적용 — Mapper bean 미등록 크래시 방지",
|
||||||
|
"Hikari pool max=3 — 공유 PostgreSQL max_connections 포화 방지",
|
||||||
|
"스키마 멱등 적용: schema.sql + 91_uiws_port.sql + 92_uiws_system.sql (sql.init.mode=always, continue-on-error)",
|
||||||
|
"테이블 격리: HR 본연 hrm_* / UIMS tb_uiws_* — 충돌 0 (hrm_users만 additive ALTER)"
|
||||||
|
],
|
||||||
|
"note": "도식 자리: 관리자 웹 + 모바일 앱 → Spring Boot 8014 (HR 모듈 + UIMS 모듈) → PostgreSQL hrm_db / Ollama"},
|
||||||
|
{"title": "7. 일정 (WBS 요약)", "bullets": [
|
||||||
|
"Phase 1 (완료): HR 본연 10개 모듈 + 27 테이블 + AI 6종 + 관리자 웹 + 모바일 9화면",
|
||||||
|
"Phase 2 (이번 세션 완료): UIMS 전체 이식 — 업무모듈·시스템관리·2FA·로그인 보조",
|
||||||
|
"Phase 3 (예정): 서버 배포(8014 재기동·psql 91/92 적용) 및 런타임 E2E 검증",
|
||||||
|
"Phase 4 (예정): Gitea push(포트 복구 후) 및 CI/CD 자동배포 연동"
|
||||||
|
]},
|
||||||
|
{"type": "table", "title": "8. 역할 분담", "headers": ["역할", "담당 영역"], "rows": [
|
||||||
|
["백엔드", "HR/UIMS 모듈 API, 2FA·인증, 스키마"],
|
||||||
|
["프론트엔드", "관리자 웹 화면(HR 11 + UIMS 4 + 시스템 7)"],
|
||||||
|
["모바일", "통합 런처 app/hrm/ 9화면"],
|
||||||
|
["DevOps", "deploy_server·systemd·Gitea·CI/CD"],
|
||||||
|
["QA", "경계면 정합·회귀·보안 불변 검증"]
|
||||||
|
]},
|
||||||
|
{"title": "9. 기대 효과", "bullets": [
|
||||||
|
"인사 운영 전 주기 자동화로 HR 업무 생산성 향상",
|
||||||
|
"공통 업무협업(업무일지·일정·쪽지·통계) 내재화로 부서 협업 강화",
|
||||||
|
"AI 6종(이직예측·성과예측 등)으로 데이터 기반 인사 의사결정 지원",
|
||||||
|
"2FA·RBAC 강화로 PII 보호 및 공공기관 보안 요건 대응",
|
||||||
|
"관리자 웹 + 모바일 동시 제공으로 현장 접근성 확보"
|
||||||
|
]}
|
||||||
|
]
|
||||||
|
}
|
||||||
59
doc/_content_사용자지침서.json
Normal file
59
doc/_content_사용자지침서.json
Normal file
@ -0,0 +1,59 @@
|
|||||||
|
{
|
||||||
|
"solution": "GUARDiA HRM",
|
||||||
|
"doc_type": "사용자지침서",
|
||||||
|
"out": "C:/GUARDiA/workspace/guardia-hrm/doc/hrm_사용자지침서_v1.pptx",
|
||||||
|
"subtitle": "사용자 지침서 (HR 본연 + UIMS 공통 업무협업) / 지오정보기술 2026",
|
||||||
|
"design": {"primary": "1F3A5F", "accent": "2E86C1", "text": "222222", "font_ko": "맑은 고딕"},
|
||||||
|
"sections": [
|
||||||
|
{"title": "1. 시작하기 — 로그인", "bullets": [
|
||||||
|
"관리자 웹 접속 후 아이디·비밀번호로 로그인",
|
||||||
|
"2차 인증(2FA)이 켜진 경우: 로그인 후 등록 이메일로 받은 인증코드를 입력해 인증 완료",
|
||||||
|
"비밀번호 5회 연속 실패 시 계정이 잠기므로 주의",
|
||||||
|
"모바일은 통합 메신저 앱에서 HRM 솔루션으로 진입(QR 코드로 앱 설치)"
|
||||||
|
]},
|
||||||
|
{"title": "2. 시작하기 — 로그인 보조", "bullets": [
|
||||||
|
"회원가입: 로그인 화면 하단 링크 → 가입 신청(관리자 승인 후 사용 가능)",
|
||||||
|
"아이디찾기: 이름 + 이메일 입력 → 부분 마스킹된 아이디 안내",
|
||||||
|
"비밀번호초기화: 아이디 + 이메일 입력 → 임시비밀번호를 이메일로 발송",
|
||||||
|
"보안상 임시비밀번호·인증코드는 화면에 표시되지 않고 이메일로만 전달됩니다"
|
||||||
|
]},
|
||||||
|
{"type": "table", "title": "3. 메뉴 구성", "headers": ["구분", "메뉴"], "rows": [
|
||||||
|
["대시보드", "주요 인사 지표·현황 요약"],
|
||||||
|
["HR 본연", "사원·조직도·급여·근태·성과·채용·교육·AI"],
|
||||||
|
["업무협업(UIMS)", "업무일지·일정관리·쪽지함·업무통계"],
|
||||||
|
["시스템관리", "권한·역할메뉴·공통코드·메뉴·부서·거래처 (관리자 전용)"]
|
||||||
|
]},
|
||||||
|
{"title": "4. HR 본연 사용법", "bullets": [
|
||||||
|
"사원: 사원 등록·조회·발령 이력 관리(개인정보는 암호화 보호)",
|
||||||
|
"조직도: 부서·직급 구조 조회 및 편집",
|
||||||
|
"급여: 급여대장·명세서·공제 항목 확인",
|
||||||
|
"근태: 출퇴근·휴가 신청 및 근무 현황 조회",
|
||||||
|
"성과/채용/교육: 평가(MBO/KPI)·채용 공고·지원자 전형·교육 이수 관리"
|
||||||
|
]},
|
||||||
|
{"title": "5. 업무일지 사용법 (신규)", "bullets": [
|
||||||
|
"업무일지 메뉴 → 목록/달력 보기 전환, 키워드 검색 지원",
|
||||||
|
"신규 작성: 작성 버튼 → 업무 내용·진척률 입력 후 저장",
|
||||||
|
"진척 대시보드에서 본인 업무 진행 현황 확인",
|
||||||
|
"동료 일지에 댓글 작성 및 확인 처리 가능"
|
||||||
|
]},
|
||||||
|
{"title": "6. 일정 / 쪽지 / 통계 사용법 (신규)", "bullets": [
|
||||||
|
"일정관리: 월 달력에서 일정 등록·조회, 파일 첨부 가능",
|
||||||
|
"쪽지함: 수신함·발신함 전환, 미읽음 쪽지 개수 표시, 쪽지 보내기/삭제",
|
||||||
|
"업무통계: 개인·전사 근무 피벗 현황 조회",
|
||||||
|
"다크/라이트 화면은 OS 설정에 따라 자동 전환"
|
||||||
|
]},
|
||||||
|
{"title": "7. 업무 흐름 예시", "bullets": [
|
||||||
|
"출근 → 근태 체크 → 오늘 업무일지 작성 → 진척률 갱신",
|
||||||
|
"팀 일정 확인 → 회의/업무 일정 등록 → 관련 동료에게 쪽지 전달",
|
||||||
|
"주간 마감 → 업무통계로 근무 현황 점검 → 성과/평가 입력",
|
||||||
|
"채용·교육 진행 항목은 해당 메뉴에서 단계별로 처리"
|
||||||
|
]},
|
||||||
|
{"title": "8. 자주 묻는 질문(FAQ)", "bullets": [
|
||||||
|
"Q. 2FA 코드가 오지 않아요 → 등록 이메일 주소 확인, 코드 유효시간(약 5분) 경과 시 재요청",
|
||||||
|
"Q. 로그인이 잠겼어요 → 5회 실패 시 잠금. 관리자에게 잠금 해제 요청",
|
||||||
|
"Q. 회원가입했는데 로그인 안 돼요 → 관리자 승인 대기 상태일 수 있음",
|
||||||
|
"Q. 시스템관리 메뉴가 안 보여요 → 관리자(SUPERADMIN/MANAGER) 권한 필요",
|
||||||
|
"Q. 임시비밀번호는 어디서 보나요 → 화면 미표시, 등록 이메일로만 발송됩니다"
|
||||||
|
]}
|
||||||
|
]
|
||||||
|
}
|
||||||
76
doc/_content_설계서.json
Normal file
76
doc/_content_설계서.json
Normal file
@ -0,0 +1,76 @@
|
|||||||
|
{
|
||||||
|
"solution": "GUARDiA HRM",
|
||||||
|
"doc_type": "설계서",
|
||||||
|
"out": "C:/GUARDiA/workspace/guardia-hrm/doc/hrm_설계서_v1.pptx",
|
||||||
|
"subtitle": "시스템 설계서 (HR 본연 + UIMS 공통 업무협업) / 지오정보기술 2026",
|
||||||
|
"design": {"primary": "1F3A5F", "accent": "2E86C1", "text": "222222", "font_ko": "맑은 고딕"},
|
||||||
|
"sections": [
|
||||||
|
{"title": "1. 시스템 구성도", "bullets": [
|
||||||
|
"프레젠테이션: React 19 관리자 웹 + React Native 모바일 앱(app/hrm/)",
|
||||||
|
"애플리케이션: Spring Boot 3.5 단일 JAR (포트 8014) — HR 모듈 10 + UIMS 모듈 5",
|
||||||
|
"데이터: PostgreSQL hrm_db (hrm_* 인사 테이블 + tb_uiws_* 업무/권한 테이블)",
|
||||||
|
"AI: 온프레미스 Ollama sLLM — HR 인사이트 6종 + 폴백",
|
||||||
|
"연계: 통합 메신저 QR 배포(중앙 ITSM APK 저장소 공개 엔드포인트 재사용)"
|
||||||
|
],
|
||||||
|
"note": "도식 자리: 웹/모바일 → 8014 (HR/UIMS/system/auth) → hrm_db + Ollama"},
|
||||||
|
{"type": "table", "title": "2. 도메인 / 패키지 구조", "headers": ["패키지", "역할"], "rows": [
|
||||||
|
["com.zioinfo.hrm.employee 외 9", "HR 본연 도메인 (사원·조직·급여·근태·성과·채용·교육·ai·integration·admin)"],
|
||||||
|
["com.zioinfo.hrm.uiws.worklog", "업무일지 — /api/worklogs"],
|
||||||
|
["com.zioinfo.hrm.uiws.schedule", "일정·일지·첨부 — /api/schedules·/api/diaries·/api/attachments"],
|
||||||
|
["com.zioinfo.hrm.uiws.message", "쪽지 — /api/messages"],
|
||||||
|
["com.zioinfo.hrm.uiws.stats", "통계 — /api/stats"],
|
||||||
|
["com.zioinfo.hrm.uiws.system", "RBAC 권한관리 — /api/system/*, /api/public"],
|
||||||
|
["com.zioinfo.hrm.auth", "로그인 보조(/api/auth/*) + 2FA(verify)"]
|
||||||
|
]},
|
||||||
|
{"type": "table", "title": "3. API 설계 — UIMS 모듈 엔드포인트", "headers": ["모듈", "base path", "엔드포인트"], "rows": [
|
||||||
|
["업무일지", "/api/worklogs", "목록/달력/검색/진척/CRUD/댓글/확인"],
|
||||||
|
["일정", "/api/schedules·/api/diaries·/api/attachments", "월 달력/검색/CRUD/파일업로드"],
|
||||||
|
["쪽지", "/api/messages", "수신/발신함·상세·삭제·미읽음"],
|
||||||
|
["통계", "/api/stats", "개인/전사 근무 피벗"],
|
||||||
|
["시스템관리", "/api/system/*", "roles·role-menus·menus·depts·companies·codes (65파일)"],
|
||||||
|
["로그인보조", "/api/auth/*", "signup·find-id·reset-password (무인증)"],
|
||||||
|
["2FA", "/api/hrm/auth/verify", "이메일 코드 검증 → access 발급"]
|
||||||
|
]},
|
||||||
|
{"title": "4. API 설계 — RBAC 권한(system)", "bullets": [
|
||||||
|
"응답 봉투 표준: { success, message, data }, 목록 페이로드 data.content(PageResponse)",
|
||||||
|
"roles: 목록/상세/생성/수정/다중삭제(IdsRequest)",
|
||||||
|
"menus·companies: 다중삭제(IdsRequest{ids}) — 행별 삭제는 {ids:[id]} 래핑",
|
||||||
|
"depts: 트리(/tree)·검색(/search)·단건삭제, codes: 그룹+값(values 내장 PUT)",
|
||||||
|
"role-menus: 역할-메뉴 권한 매핑 (HRM 전용 신규 — 좌 권한목록 / 우 메뉴체크)"
|
||||||
|
]},
|
||||||
|
{"type": "table", "title": "5. 화면 설계 — 관리자 웹 메뉴", "headers": ["구분", "화면"], "rows": [
|
||||||
|
["대시보드", "DashboardPage"],
|
||||||
|
["HR 본연", "사원·조직도·급여·근태·성과·채용·교육·AI·Admin"],
|
||||||
|
["UIMS 업무", "업무일지(WorklogList)·일정관리(ScheduleCalendar)·쪽지함(MessageBox)·업무통계(StatsPivot)"],
|
||||||
|
["시스템관리", "RoleManagement·RoleMenuManagement·CodeManagement·MenuManagement·DeptManagement·CompanyManagement·SystemPage(탭 셸)"],
|
||||||
|
["로그인", "LoginPage (2FA 코드 입력 + 회원가입/아이디찾기/비밀번호초기화 링크)"]
|
||||||
|
]},
|
||||||
|
{"type": "table", "title": "6. DB 스키마 — 주요 테이블", "headers": ["분류", "테이블"], "rows": [
|
||||||
|
["HR 본연", "hrm_users 외 27개 (CREATE TABLE IF NOT EXISTS, DROP 없음)"],
|
||||||
|
["UIMS 업무", "tb_uiws_worklog/_dtl/_cmt·tb_uiws_schedule·tb_uiws_diary·tb_uiws_attach·tb_uiws_message/_rcv"],
|
||||||
|
["UIMS 인증", "tb_uiws_login_verify (verify-token·코드 만료 300초)"],
|
||||||
|
["UIMS 시스템", "tb_uiws_dept/_role/_company/_code/_code_grp/_role_menu/_menu/_program/_sys_user (10개)"],
|
||||||
|
["멱등 ALTER", "hrm_users: email_verify_code/expire·login_fail_count·locked·otp_secret·approved·pw_change_yn"]
|
||||||
|
]},
|
||||||
|
{"title": "7. 보안 설계", "bullets": [
|
||||||
|
"인증: JWT + 2FA(이메일 코드). verify-token에 purpose=2fa 클레임 — verify 전 보호 API 접근 차단",
|
||||||
|
"로그인 실패 누적 5회 시 계정 잠금(locked), verify-token·코드 만료 각 300초",
|
||||||
|
"회원가입 승인 게이트: approved=false 로그인 차단 (기본 role=VIEWER)",
|
||||||
|
"PII: AES-256-GCM 암호화 저장. 비밀번호·임시비번·인증코드 — API 응답 0(메일·로그 채널만)",
|
||||||
|
"username·email 마스킹, 사용자 열거 방지(미존재여도 success=true), 스택트레이스 미노출"
|
||||||
|
]},
|
||||||
|
{"title": "8. RBAC / 인가 설계", "bullets": [
|
||||||
|
"SecurityConfig: /api/system/** 조회=SUPERADMIN/MANAGER, 쓰기=SUPERADMIN",
|
||||||
|
"/api/auth/** 및 GET /api/public/** = permitAll(로그인 전 무인증)",
|
||||||
|
"UiwsCurrentUser RBAC를 HRM 역할(SUPERADMIN/MANAGER)로 적응",
|
||||||
|
"프론트 AdminRoute: 토큰+역할 이중 가드(UI 차단) — 실제 인가는 백엔드 RBAC가 403으로 강제",
|
||||||
|
"User 중복회피: UIMS system 사용자는 별도 tb_uiws_sys_user로 격리(인사 사원 테이블 무충돌)"
|
||||||
|
]},
|
||||||
|
{"title": "9. 연계 / 인프라 설계", "bullets": [
|
||||||
|
"단일 JAR: 프론트 빌드 → backend/src/main/resources/static 번들",
|
||||||
|
"deploy_server.py guardia-hrm 블록(포트 8014) + load uiws schema(91·92 psql) 스텝",
|
||||||
|
"AI 연계: Ollama 온프레미스(이직예측·성과예측·채용추천·조직건강도·이력서분석·HR인사이트), LogMailSender 폴백(외부 API 0)",
|
||||||
|
"다크/라이트: index.css --uiws-* 토큰(OS 다크모드 자동 전환, 색상 하드코딩 0)"
|
||||||
|
]}
|
||||||
|
]
|
||||||
|
}
|
||||||
64
doc/_content_운영자지침서.json
Normal file
64
doc/_content_운영자지침서.json
Normal file
@ -0,0 +1,64 @@
|
|||||||
|
{
|
||||||
|
"solution": "GUARDiA HRM",
|
||||||
|
"doc_type": "운영자지침서",
|
||||||
|
"out": "C:/GUARDiA/workspace/guardia-hrm/doc/hrm_운영자지침서_v1.pptx",
|
||||||
|
"subtitle": "운영자 지침서 (배포·운영·보안) / 지오정보기술 2026",
|
||||||
|
"design": {"primary": "1F3A5F", "accent": "2E86C1", "text": "222222", "font_ko": "맑은 고딕"},
|
||||||
|
"sections": [
|
||||||
|
{"type": "table", "title": "1. 시스템 사양", "headers": ["항목", "값"], "rows": [
|
||||||
|
["애플리케이션", "Spring Boot 3.5 / Java 17 (단일 JAR)"],
|
||||||
|
["서비스 포트", "8014"],
|
||||||
|
["데이터베이스", "PostgreSQL (hrm_db)"],
|
||||||
|
["패키지", "com.zioinfo.hrm"],
|
||||||
|
["프론트", "React 19 (backend static 번들)"],
|
||||||
|
["AI", "온프레미스 Ollama"]
|
||||||
|
]},
|
||||||
|
{"title": "2. 설치 / 배포", "bullets": [
|
||||||
|
"단일 JAR 빌드: 프론트 빌드 산출물이 backend static에 번들됨",
|
||||||
|
"deploy_server.py의 guardia-hrm 블록(포트 8014)으로 자동 배포",
|
||||||
|
"systemd 서비스: scripts/setup/setup_hrm_service.py로 서비스 등록 + hrm_db 생성",
|
||||||
|
"Gitea webhook → deploy_server 연동 시 push 기반 자동 배포",
|
||||||
|
"배포 후 8014 health 엔드포인트로 기동 확인"
|
||||||
|
]},
|
||||||
|
{"title": "3. DB 스키마 적용 (UIMS 이식 반영)", "bullets": [
|
||||||
|
"스키마 로드: schema.sql + 91_uiws_port.sql + 92_uiws_system.sql",
|
||||||
|
"Spring sql.init.mode=always + continue-on-error로 멱등 적용",
|
||||||
|
"deploy_server.py guardia-hrm 블록에 'load uiws schema'(91·92 psql) 스텝으로 이중 커버",
|
||||||
|
"tb_uiws_* 신규 테이블 + hrm_users 멱등 ALTER(2FA·승인 컬럼) 자동 반영",
|
||||||
|
"재적용 안전: CREATE TABLE IF NOT EXISTS / ON CONFLICT DO NOTHING"
|
||||||
|
]},
|
||||||
|
{"type": "table", "title": "4. 환경 설정 (application.yml)", "headers": ["설정", "용도"], "rows": [
|
||||||
|
["hrm.uiws.auth.twofa-enabled", "2FA 토글 (off 시 단일 JWT 회귀 0)"],
|
||||||
|
["hrm.uiws.auth.max-login-fail", "로그인 실패 잠금 임계(5)"],
|
||||||
|
["mail.mode", "log (LogMailSender 폴백 — 외부 API 0)"],
|
||||||
|
["hrm.uiws.upload-dir", "첨부 파일 저장 경로"],
|
||||||
|
["sql.init.mode", "always (스키마 멱등 적용)"]
|
||||||
|
]},
|
||||||
|
{"title": "5. 운영 — 모니터링 / 헬스", "bullets": [
|
||||||
|
"8014 health 엔드포인트로 서비스 기동 상태 점검",
|
||||||
|
"systemd 서비스 active 상태 확인(중지 시 재기동)",
|
||||||
|
"PostgreSQL 연결: Hikari pool max=3 — 공유 인스턴스 max_connections 포화 방지",
|
||||||
|
"Ollama AI 호출 실패 시 폴백 동작(서비스 중단 없음)"
|
||||||
|
]},
|
||||||
|
{"title": "6. 백업 / 복구", "bullets": [
|
||||||
|
"hrm_db 정기 백업(pg_dump) — hrm_* 인사 데이터 + tb_uiws_* 업무/권한 데이터 포함",
|
||||||
|
"첨부 파일 디렉터리(upload-dir) 별도 백업",
|
||||||
|
"복구 시 스키마 멱등 구조로 재적용 안전(중복 키 미발생)",
|
||||||
|
"배포 전 백업 → 배포 → 헬스체크 → 이상 시 롤백 시퀀스 권장"
|
||||||
|
]},
|
||||||
|
{"title": "7. 장애 대응 (운영 함정 주의)", "bullets": [
|
||||||
|
"Mapper bean 미등록 크래시 → @MapperScan(annotationClass=Mapper.class) 적용 확인",
|
||||||
|
"PG 연결 포화 → Hikari pool max=3 유지(상향 시 공유 인스턴스 영향 검토)",
|
||||||
|
"repos/guardia-hrm는 fresh git init 사용(모노레포 .git 상속 금지 — bundle 비대화 방지)",
|
||||||
|
"UIMS 테이블 누락(relation does not exist) → 91/92 스키마 psql 재적용 확인",
|
||||||
|
"에러 응답은 요약 메시지만 — 스택트레이스 미노출(GlobalExceptionHandler)"
|
||||||
|
]},
|
||||||
|
{"title": "8. 보안 운영", "bullets": [
|
||||||
|
"2FA verify-token 우회 차단: purpose=2fa 클레임 토큰은 보호 API 접근 불가(verify 전용)",
|
||||||
|
"PII AES-256-GCM 암호화 저장, 비밀번호·임시비번·인증코드는 메일·로그 채널만(API 응답 0)",
|
||||||
|
"RBAC: /api/system/** 조회=SUPERADMIN/MANAGER, 쓰기=SUPERADMIN",
|
||||||
|
"회원가입 승인 게이트(approved=false 로그인 차단), 사용자 열거 방지",
|
||||||
|
"외부 API 0 (Ollama 외 통신 없음). 자격증명·내부 IP는 운영 문서에 미기재"
|
||||||
|
]}
|
||||||
|
]
|
||||||
|
}
|
||||||
BIN
doc/hrm_개발계획서_v1.pptx
Normal file
BIN
doc/hrm_개발계획서_v1.pptx
Normal file
Binary file not shown.
BIN
doc/hrm_사용자지침서_v1.pptx
Normal file
BIN
doc/hrm_사용자지침서_v1.pptx
Normal file
Binary file not shown.
BIN
doc/hrm_설계서_v1.pptx
Normal file
BIN
doc/hrm_설계서_v1.pptx
Normal file
Binary file not shown.
BIN
doc/hrm_운영자지침서_v1.pptx
Normal file
BIN
doc/hrm_운영자지침서_v1.pptx
Normal file
Binary file not shown.
Loading…
Reference in New Issue
Block a user