{ "solution": "GUARDiA ESN", "doc_type": "운영자지침서", "out": "C:/GUARDiA/workspace/guardia-esn/doc/guardia-esn_운영자지침서_v1.pptx", "subtitle": "지오정보기술 / 2026", "design": {"primary":"1F3A5F","accent":"2E86C1","text":"222222","font_ko":"맑은 고딕"}, "sections": [ {"title":"1. 배포", "bullets":[ "구성: 단일 JAR — frontend(React) 빌드 산출물을 backend static에 번들", "서비스 포트: 8016 (단일 진입점)", "패키지: com.zioinfo.esn (Spring Boot 3.5 / Java 17)", "기동: systemd 서비스로 단일 JAR 실행, 부팅 시 자동 기동", "프론트 빌드 → backend static 번들 → JAR 빌드 → 배포 순서" ]}, {"title":"2. 환경 설정", "bullets":[ "DB: PostgreSQL esn_db / 계정 esn_user", "멀티테넌트: LGINNOTEK / LGIT / EMART / ZIOINFO 4개 테넌트 데이터 격리", "AI: Ollama 온프레미스 호스트 연동 (알람 분석·POS 분류, 폴백 동작)", "스키마: sql.init.mode=always — 전 스키마 멱등, 부팅 시 안전 재적용", "schema-locations에 db/90_uiws_system.sql, db/93_esn_login_helper.sql 포함" ], "note":"멱등 스키마 — 누락 테이블 발생 시 재기동으로 재적용"}, {"type":"table","title":"3. 시스템관리 (RBAC 권한관리)", "headers":["화면","기능"], "rows":[ ["RoleManagement","역할 등록/수정/다중삭제"], ["RoleMenuPermission","역할-메뉴 읽기/쓰기 권한 매핑"], ["CodeManagement","공통코드 그룹/값 관리 (사용중 코드값 시 삭제 차단)"], ["MenuManagement","메뉴 2-depth 트리 관리"], ["DeptManagement","부서 2-depth 트리 관리"], ["CompanyManagement","거래처 관리"], ["UserList / 승인","사용자 관리 + 회원가입 승인대기 처리"] ]}, {"title":"4. 백업 / 복구", "bullets":[ "DB 백업: esn_db 정기 덤프(스케줄) — 본연 + tb_uiws_* 포함", "복구: 덤프 복원 후 단일 JAR 재기동, 멱등 스키마로 정합 보장", "tb_uiws_* 와 esn_user는 분리 스키마 — 복구 시 병합 금지 원칙 유지", "펌웨어/업데이트 큐는 작업 상태 정합 확인 후 재개" ]}, {"title":"5. 모니터링 / 헬스", "bullets":[ "서비스 헬스: 8016 기동 상태 점검(systemd active + 헬스 확인)", "HCore 관제(HCoreStatus): 게이트웨이/허브 상태 실시간 모니터링", "알람(AlarmList) + AI 원인 분석(AiAnalysis)으로 이상 징후 추적", "AuditLog: 감사 로그로 운영 행위 추적", "Dashboard: 통합 운영 현황 집계" ]}, {"title":"6. 장애 대응", "bullets":[ "기동 실패: 단일 JAR 로그 확인 → DB 연결(esn_db)·포트(8016) 점검", "누락 테이블(relation does not exist): 멱등 스키마 재적용(재기동) 후 확인", "AI 응답 지연/실패: 폴백으로 degraded 동작 — Ollama 호스트 상태 점검", "POS 변환 오류(PosCvtList): 변환/분류 큐 상태·원본 데이터 확인", "오류 응답: 스택트레이스 미노출 — 요약 메시지 기준으로 원인 추적" ]}, {"title":"7. 보안 운영", "bullets":[ "자격증명·비밀번호·내부 IP API 응답/로그 미노출 (불변 규칙)", "외부 API 0 — Ollama(AI)·SMTP(메일)만 사용", "인증: JWT + 2FA + 로그인 실패 잠금, verify-token purpose=2fa 우회차단", "RBAC: /api/system/** hasAnyRole(ADMIN,MANAGER) + 사이드바 가드 이중 방어", "회원가입 승인대기(PENDING) 운영 — 미승인 계정 접근 차단", "열거방지: 아이디찾기 마스킹·미존재 비표시, 비밀번호 재설정 항상 success=true" ], "note":"임시비번 메일/로그 전용 — 어떤 응답에도 미노출"} ] }