zioinfo-esn/doc/_content/admin_guide.json

65 lines
4.2 KiB
JSON

{
"solution": "zioinfo-esn",
"doc_type": "운영자지침서",
"out": "C:/GUARDiA/workspace/zioinfo-esn/doc/zioinfo-esn_운영자지침서_v2.pptx",
"subtitle": "설치·운영·권한관리(RBAC) / 지오정보기술 / 2026",
"design": {"primary":"1F3A5F","accent":"2E86C1","text":"222222","font_ko":"맑은 고딕"},
"sections": [
{"type":"table", "title":"1. 설치 / 배포 정보", "headers":["항목","값"], "rows":[
["서비스","zioinfo-esn (단일 JAR · esn-1.0.0)"],
["백엔드 포트","8015"],
["프론트(개발)","Vite 3014"],
["빌드","Maven (Java 17) · React 빌드 → backend static 번들"],
["배포","Gitea webhook → 자동 배포 파이프라인"],
["DB","PostgreSQL / esn_db"]
]},
{"title":"2. 환경 설정 (환경변수)", "bullets":[
"DB_URL / DB_USER : PostgreSQL esn_db 접속 (비밀번호는 환경변수로 주입, 문서 미기재)",
"OLLAMA_URL : 온프레미스 Ollama 엔드포인트(기본 11434) · 텍스트 모델 llama3.2:1b",
"ITSM_URL : ITSM 연계(기본 9001)",
"JWT_SECRET : JWT 서명 키(운영 시 환경변수로 교체 · 문서/코드 노출 금지)",
"메일 설정 미구성 시 2FA 인증코드는 LogMailSender 폴백으로 로그 기록"
], "note":"자격증명·비밀번호·시크릿 값은 본 문서에 기재하지 않음"},
{"title":"3. DB 스키마 / 마이그레이션", "bullets":[
"부팅 시 멱등 적용: sql.init mode:always, continue-on-error",
"적용 순서: schema.sql → 90_uiws_system.sql → 91_uiws_port.sql",
"90_uiws_system.sql: 권한관리 10테이블 + 시드(역할 ADMIN/MANAGER/USER, ZIOINFO 회사, ROOT 부서)",
"91_uiws_port.sql: 업무 9테이블 + esn_user 2FA 컬럼 ALTER",
"전 구문 IF NOT EXISTS / ON CONFLICT DO NOTHING → 재배포 안전(중복 무해)",
"UIMS 테이블은 tb_uiws_* 프리픽스 → 기존 esn_*(ESL) 충돌 없음"
]},
{"title":"4. 권한관리(RBAC) 운영 — 신규", "bullets":[
"시스템관리 메뉴는 esn_role ∈ {ADMIN, MANAGER}에게만 노출",
"역할관리: 역할 등록·수정·다중삭제(검색·페이징)",
"메뉴권한: 역할별 메뉴 읽기/쓰기 토글 → 전체 저장(쓰기 ON 시 읽기 자동 ON)",
"메뉴·공통코드·부서·거래처 관리(CRUD)",
"신규 가입자 승인: 승인 전 로그인 차단 → ADMIN 승인 처리 필요"
]},
{"title":"5. 백업 / 복구", "bullets":[
"PostgreSQL esn_db 정기 백업(pg_dump) 권장 — ESL 운영데이터 + UIMS 업무데이터 포함",
"스키마는 멱등 부팅으로 자동 재생성되나 데이터는 별도 백업 필요",
"복구 시 DB 복원 후 서비스 재기동 → 스키마 보강 SQL 멱등 재적용으로 정합 유지"
]},
{"type":"table", "title":"6. 모니터링 / 헬스", "headers":["항목","확인 방법"], "rows":[
["헬스체크","GET /actuator/health (show-details: never)"],
["서비스 기동","8015 포트 응답 확인"],
["AI 상태","Ollama 11434 가용성 · 미가용 시 폴백 동작 확인"],
["DB 연결","Hikari pool(max 3) 포화 여부 모니터링"]
]},
{"title":"7. 장애 대응", "bullets":[
"AI 응답 없음: Ollama 미가용/RAM 부족 가능 → 폴백 동작으로 핵심 기능 유지, 모델/리소스 점검",
"테이블 없음(relation does not exist): 보강 SQL(90/91) 멱등 재적용 후 재기동",
"DB 연결 포화: Hikari max-pool=3 — 동시 부하 시 풀 상향 검토",
"2FA 메일 미발송: 메일 설정 확인, 미설정 시 LogMailSender 로그에서 코드 확인",
"계정 잠금 누적: 권한관리에서 사용자 잠금 해제"
]},
{"title":"8. 보안 운영", "bullets":[
"외부 API 호출 0 — Ollama·메일(내부)만 사용",
"자격증명·비밀번호·내부IP·JWT 시크릿은 응답/로그/문서에 노출 금지",
"2FA verify-token(purpose=2fa)은 보호 API 접근 불가 — 우회 차단 가드 유지",
"RBAC 변경 API는 ADMIN/MANAGER 한정(백엔드 403) · 비밀번호 BCrypt 저장",
"회원가입 승인대기·아이디찾기 마스킹·스택트레이스 미노출 정책 준수"
]}
]
}