docs: 산출물 4종(개발계획서·설계서·사용자/운영자 지침서) UIMS 이식 반영
This commit is contained in:
parent
ce313fae96
commit
b5a6b829d2
60
doc/_content/admin_guide.json
Normal file
60
doc/_content/admin_guide.json
Normal file
@ -0,0 +1,60 @@
|
||||
{
|
||||
"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":"임시비번 메일/로그 전용 — 어떤 응답에도 미노출"}
|
||||
]
|
||||
}
|
||||
84
doc/_content/design_spec.json
Normal file
84
doc/_content/design_spec.json
Normal file
@ -0,0 +1,84 @@
|
||||
{
|
||||
"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":[
|
||||
"프레젠테이션: React 19 + Vite + TS — backend static 번들(단일 JAR)",
|
||||
"애플리케이션: Spring Boot 3.5 / Java 17 / MyBatis — 포트 8016",
|
||||
"데이터: PostgreSQL esn_db / esn_user",
|
||||
"AI: Ollama 온프레미스(알람 분석·POS 분류, 폴백) — 외부 API 0",
|
||||
"외부 연계: 통합 메신저 앱 QR(중앙 ITSM APK 저장소 공개 엔드포인트, 읽기전용)"
|
||||
], "note":"단일 JAR · 8016 · esn_db"},
|
||||
{"type":"table","title":"2. 멀티테넌트 도메인", "headers":["테넌트","비고"], "rows":[
|
||||
["LGINNOTEK","ESL 운영 테넌트"],
|
||||
["LGIT","ESL 운영 테넌트"],
|
||||
["EMART","ESL 운영 테넌트"],
|
||||
["ZIOINFO","ESL 운영 테넌트"]
|
||||
]},
|
||||
{"type":"table","title":"3. 도메인 / 엔티티 (본연 13 VO)", "headers":["엔티티","의미"], "rows":[
|
||||
["Tenant / StoreGroup / Store","테넌트·매장그룹·매장"],
|
||||
["Template","ESL 화면 템플릿"],
|
||||
["TagBinding","ESL 기기 바인딩"],
|
||||
["Product","상품 / 가격"],
|
||||
["Alarm","알람 + 알람이력"],
|
||||
["HCore","게이트웨이 / 허브 관제"],
|
||||
["PosCvt","POS 데이터 변환 / 분류"],
|
||||
["Firmware / UpdateQueue","펌웨어 + 업데이트 큐"],
|
||||
["WorkHistory","작업 이력"],
|
||||
["Dashboard","통합 대시보드 집계"]
|
||||
]},
|
||||
{"type":"table","title":"3-1. UIMS 이식 엔티티 (tb_uiws_*)", "headers":["영역","비고"], "rows":[
|
||||
["worklog / schedule / message / stats","공통 업무협업 테이블"],
|
||||
["tb_uiws_sys_user","시스템관리 사용자 (VARCHAR user_id)"],
|
||||
["역할 / 메뉴 / 코드 / 부서 / 거래처","RBAC 시스템관리 테이블"],
|
||||
["격리 원칙","tb_uiws_sys_user ≠ esn_user(BIGSERIAL) — 병합 금지"]
|
||||
]},
|
||||
{"type":"table","title":"4. API 설계 — 본연 컨트롤러 15종", "headers":["컨트롤러","역할"], "rows":[
|
||||
["Tenant / StoreGroup / Store","테넌트·매장 관리"],
|
||||
["Template / TagBinding","템플릿·기기 바인딩"],
|
||||
["Product","상품/가격"],
|
||||
["Alarm / HCore","알람·게이트웨이 관제"],
|
||||
["PosCvt","POS 변환/분류"],
|
||||
["Firmware / UpdateQueue","펌웨어·업데이트 큐"],
|
||||
["Work / User","작업이력·사용자"],
|
||||
["Dashboard / Ai","대시보드·AI 분석"]
|
||||
]},
|
||||
{"type":"table","title":"4-1. API 설계 — UIMS 이식 (uiws.system 10 + auth 3)", "headers":["base","항목"], "rows":[
|
||||
["/api/system/codes","공통코드 (그룹 values[] 치환 PUT)"],
|
||||
["/api/system/companies","거래처 (DELETE 바디 {ids[]})"],
|
||||
["/api/system/depts","부서 (+/tree, 단건 DELETE)"],
|
||||
["/api/system/menus","메뉴 (2-depth, 다중 DELETE)"],
|
||||
["/api/system/roles","역할 (다중 DELETE)"],
|
||||
["/api/system/roles/{roleId}/menus","역할-메뉴 권한 매핑 (읽기/쓰기)"],
|
||||
["/api/system/{programs,users,DeptRole}","프로그램·사용자·부서역할"],
|
||||
["/api/auth/signup | find-id | reset-password","로그인 보조 3종 (permitAll)"]
|
||||
]},
|
||||
{"type":"table","title":"5. 화면 설계 — 메뉴 목록", "headers":["구분","화면"], "rows":[
|
||||
["본연","Dashboard · TenantAdmin · StoreList · TemplateList · TagBindingList"],
|
||||
["본연","ProductList · AlarmList · HCoreStatus · PosCvtList"],
|
||||
["본연","FirmwareList · UpdateQueueList · WorkHistory · UserList"],
|
||||
["본연","AiAnalysis · AuditLog · SystemSettings · MobileApp · Login · AiTechniqueSettings"],
|
||||
["UIMS 업무","WorklogList · ScheduleCalendar · MessageBox · StatsPivot"],
|
||||
["UIMS 시스템관리","RoleManagement · RoleMenuPermission · CodeManagement"],
|
||||
["UIMS 시스템관리","MenuManagement · DeptManagement · CompanyManagement"]
|
||||
]},
|
||||
{"title":"6. DB 스키마 설계", "bullets":[
|
||||
"DB: esn_db / 계정 esn_user (PostgreSQL)",
|
||||
"본연 도메인 스키마 + UIMS 이식 스키마 멱등 적용 (sql.init.mode=always)",
|
||||
"db/90_uiws_system.sql — tb_uiws_* (self-contained, 멱등)",
|
||||
"db/93_esn_login_helper.sql — esn_user에 name·approval_status 멱등 ALTER",
|
||||
"스키마 격리: tb_uiws_sys_user(VARCHAR) ≠ esn_user(BIGSERIAL) — 절대 병합 안 함"
|
||||
], "note":"전 스키마 멱등 — 부팅 시 안전 재적용"},
|
||||
{"title":"7. 보안 설계", "bullets":[
|
||||
"인증: JWT + 2FA (verify-token purpose=2fa 우회차단 + 로그인 실패 잠금)",
|
||||
"RBAC: /api/system/** hasAnyRole(ADMIN,MANAGER) + 사이드바 esn_role==='ADMIN' 가드 (이중 방어)",
|
||||
"공개: /api/public/** · /api/auth/** permitAll",
|
||||
"열거방지: find-id 미존재 found:false, reset-password 항상 success=true",
|
||||
"임시비번 메일/로그 전용 — API 응답·예외 미노출",
|
||||
"온프레미스: 외부 API 0 (Ollama·SMTP만), 자격증명·스택트레이스 미노출"
|
||||
], "note":"이중 방어 · 열거방지 · 온프레미스"}
|
||||
]
|
||||
}
|
||||
80
doc/_content/dev_plan.json
Normal file
80
doc/_content/dev_plan.json
Normal file
@ -0,0 +1,80 @@
|
||||
{
|
||||
"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":[
|
||||
"레거시 ESN(전자가격표/전자선반, ESL) 8개 프로젝트가 Spring Boot 1.5/Java 8 등 구형 스택에 분산 운영",
|
||||
"통합 대상: ESN_WEB_ZIOINFO, ESN_WEB_LGInnotek, ESN_DAEMON_EMART, ESN_DAEMON_LGIT, esn, ESL_AUTO_UPDATE, restapi_lgit, UCS_LGU",
|
||||
"단일 현대화 플랫폼으로 통합하여 멀티테넌트 운영·유지보수·관제를 일원화",
|
||||
"온프레미스 sLLM(Ollama)으로 알람 원인 분석·POS 데이터 자동 분류 AI 적용 (외부 API 금지)"
|
||||
]},
|
||||
{"title":"2. 목표", "bullets":[
|
||||
"8개 레거시 프로젝트 → Spring Boot 3.5 Java 17 + React 19 단일 플랫폼 통합",
|
||||
"멀티테넌트(LGINNOTEK / LGIT / EMART / ZIOINFO) 단일 운영 콘솔",
|
||||
"ESL 화면 템플릿·기기 바인딩·상품/가격·펌웨어·업데이트 큐 통합 관리",
|
||||
"HCore 게이트웨이/허브 관제 + 알람 이력 + 작업 이력 통합 가시화",
|
||||
"UIMS(UIWS) 공통 업무협업 레이어 + 시스템관리(RBAC) 이식으로 운영 협업 체계 내장"
|
||||
]},
|
||||
{"type":"table","title":"3. 범위 — 솔루션 본연 모듈", "headers":["모듈","설명"], "rows":[
|
||||
["Tenant / StoreGroup / Store","멀티테넌트·매장그룹·매장 관리"],
|
||||
["Template / TagBinding","ESL 화면 템플릿 + ESL 기기 바인딩"],
|
||||
["Product","상품 / 가격 관리"],
|
||||
["Alarm","알람 + 알람 이력"],
|
||||
["HCore","게이트웨이 / 허브 관제"],
|
||||
["PosCvt","POS 데이터 변환 / 분류"],
|
||||
["Firmware / UpdateQueue","펌웨어 버전 관리 + 업데이트 큐"],
|
||||
["Work","작업 이력"],
|
||||
["Dashboard / Ai","통합 대시보드 + Ollama AI 분석"]
|
||||
]},
|
||||
{"type":"table","title":"3. 범위 — UIMS(UIWS) 이식 추가 모듈", "headers":["모듈","설명"], "rows":[
|
||||
["worklog","업무일지"],
|
||||
["schedule","일정(FullCalendar)"],
|
||||
["message","쪽지"],
|
||||
["stats","통계"],
|
||||
["uiws.system","시스템관리(권한관리 RBAC) 10 컨트롤러"],
|
||||
["auth (보조)","회원가입 승인대기 · 아이디찾기 · 비밀번호 재설정"]
|
||||
]},
|
||||
{"type":"table","title":"4. 기술 스택", "headers":["레이어","기술"], "rows":[
|
||||
["Backend","Spring Boot 3.5 / Java 17 / MyBatis (단일 JAR)"],
|
||||
["Frontend","React 19 + Vite + TypeScript (backend static 번들)"],
|
||||
["Database","PostgreSQL (esn_db / esn_user)"],
|
||||
["AI","Ollama 온프레미스 (알람 분석·POS 분류, 폴백 포함)"],
|
||||
["패키지","com.zioinfo.esn"],
|
||||
["인증","JWT + 2FA (verify-token purpose=2fa 우회차단)"]
|
||||
]},
|
||||
{"title":"5. 아키텍처", "bullets":[
|
||||
"단일 JAR — frontend(React) 빌드 산출물을 backend static에 번들",
|
||||
"백엔드 포트 8016 (단일 진입점)",
|
||||
"DB: PostgreSQL esn_db / 계정 esn_user",
|
||||
"멀티테넌트 4개 테넌트(LGINNOTEK / LGIT / EMART / ZIOINFO) 데이터 격리",
|
||||
"AI: Ollama 온프레미스 단일 호스트, 폴백 동작 — 외부 API 호출 0"
|
||||
], "note":"단일 JAR · 8016 · esn_db · 멀티테넌트"},
|
||||
{"title":"6. UIMS 이식 범위 (이번 세션 추가)", "bullets":[
|
||||
"공통 업무협업: worklog·schedule·message·stats (com.zioinfo.esn.uiws.*) — 사전 이식 + 이번 보조",
|
||||
"시스템관리(RBAC): com.zioinfo.esn.uiws.system, base /api/system/* — 10 컨트롤러, 화면 6종",
|
||||
"테이블 프리픽스 tb_uiws_* (self-contained, esn_user와 분리 — 절대 병합 안 함)",
|
||||
"로그인 보조 3종: 회원가입 승인대기·아이디찾기(마스킹)·비밀번호 재설정(임시비번 메일 전용)",
|
||||
"2FA: 기존 JWT + 2FA 유지 + 로그인 실패 잠금",
|
||||
"모바일 앱 QR: 통합 메신저 앱 다운로드(중앙 ITSM APK 저장소 공개 엔드포인트 재사용, 읽기전용)"
|
||||
], "note":"기존 ESL/HCore·login/2FA 흐름 무변경 — 신규 레이어만 가산"},
|
||||
{"type":"table","title":"7. 일정 (WBS)", "headers":["단계","주요 작업","산출물"], "rows":[
|
||||
["분석","레거시 8개 도메인 분석·통합 설계","통합 도메인 모델"],
|
||||
["설계","ERD·API·화면 설계","설계서"],
|
||||
["구현(코어)","ESL·HCore·Product·Firmware·UpdateQueue·Alarm","백엔드 15 컨트롤러"],
|
||||
["구현(프론트)","Dashboard·관제·관리 화면","React 페이지"],
|
||||
["이식(UIMS)","업무협업·시스템관리(RBAC)·로그인 보조·2FA","uiws.* + 화면 6종"],
|
||||
["AI","Ollama 알람 분석·POS 분류","AI 분석 화면"],
|
||||
["검증/배포","빌드·경계면 QA·단일 JAR 배포(8016)","릴리스"]
|
||||
]},
|
||||
{"title":"8. 기대 효과", "bullets":[
|
||||
"레거시 8개 프로젝트 통합 → 운영·유지보수 비용 절감, 기술부채 해소",
|
||||
"멀티테넌트 단일 콘솔로 4개 테넌트 ESL 통합 관제",
|
||||
"온프레미스 AI로 알람 원인 분석·POS 분류 자동화 (외부 의존 0)",
|
||||
"UIMS 공통 업무협업·RBAC 내장으로 운영 협업·권한 통제 강화",
|
||||
"JWT+2FA·승인대기·열거방지로 인증 보안 수준 향상"
|
||||
]}
|
||||
]
|
||||
}
|
||||
48
doc/_content/user_guide.json
Normal file
48
doc/_content/user_guide.json
Normal file
@ -0,0 +1,48 @@
|
||||
{
|
||||
"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":[
|
||||
"로그인 화면에서 아이디·비밀번호 입력 후 로그인",
|
||||
"2단계 인증(2FA): 인증코드 확인 단계 통과 후 접속 (실패 누적 시 잠금)",
|
||||
"회원가입: 로그인 화면 하단 '회원가입' → 신청은 승인대기(PENDING) 상태, 관리자 승인 후 사용",
|
||||
"아이디 찾기: '아이디찾기' → 이름·이메일 입력, 일치 시 마스킹된 아이디 표시(예: ad****)",
|
||||
"비밀번호 재설정: '비밀번호 재설정' → 임시비밀번호가 등록 이메일로 발송됨"
|
||||
], "note":"임시비밀번호는 화면에 표시되지 않고 메일로만 전달됩니다"},
|
||||
{"title":"2. ESL 관리 — 템플릿 / 태그바인딩 / 상품가격", "bullets":[
|
||||
"템플릿(TemplateList): ESL 화면 템플릿을 등록·조회·관리",
|
||||
"태그바인딩(TagBindingList): ESL 기기와 상품/템플릿 바인딩 설정",
|
||||
"상품/가격(ProductList): 상품 정보·가격을 등록·조회·수정",
|
||||
"테넌트/매장(TenantAdmin·StoreList): 멀티테넌트·매장 단위로 데이터 조회"
|
||||
]},
|
||||
{"title":"3. 관제 — HCore / 알람 / POS / 펌웨어 / 업데이트큐", "bullets":[
|
||||
"HCore 상태(HCoreStatus): 게이트웨이/허브 관제 상태 모니터링",
|
||||
"알람(AlarmList): 알람 및 알람 이력 조회, AI 알람 원인 분석 참고(AiAnalysis)",
|
||||
"POS 변환(PosCvtList): POS 데이터 변환/분류 현황 조회",
|
||||
"펌웨어(FirmwareList): 펌웨어 버전 관리",
|
||||
"업데이트 큐(UpdateQueueList): 펌웨어/업데이트 작업 큐 진행 상황 조회",
|
||||
"작업 이력(WorkHistory): 수행 작업 이력 조회"
|
||||
]},
|
||||
{"title":"4. 업무협업 (UIMS) — 업무일지 / 일정 / 쪽지 / 통계", "bullets":[
|
||||
"업무일지(WorklogList): 일일 업무 내용을 작성·조회",
|
||||
"일정(ScheduleCalendar): 캘린더(FullCalendar)에서 일정 등록·확인",
|
||||
"쪽지(MessageBox): 구성원 간 쪽지 송수신",
|
||||
"통계(StatsPivot): 업무 통계 피벗 조회"
|
||||
]},
|
||||
{"title":"5. 모바일 앱 (QR 다운로드)", "bullets":[
|
||||
"MobileApp 화면에서 통합 메신저 앱 다운로드 QR 코드 확인",
|
||||
"QR 스캔 → 다운로드 페이지에서 앱 설치 (앱스토어 불필요)",
|
||||
"QR/버전 정보는 중앙 APK 저장소를 읽기 전용으로 표시"
|
||||
]},
|
||||
{"title":"6. FAQ", "bullets":[
|
||||
"Q. 회원가입 후 로그인이 안 됩니다 → 승인대기 상태입니다. 관리자 승인 후 이용 가능",
|
||||
"Q. 아이디 찾기에서 결과가 안 나옵니다 → 이름·이메일이 등록 정보와 일치해야 합니다(보안상 미존재 시 결과 비표시)",
|
||||
"Q. 비밀번호 재설정 메일이 안 옵니다 → 등록 이메일 확인, 스팸함 확인",
|
||||
"Q. 시스템관리(권한) 메뉴가 안 보입니다 → 관리자(ADMIN) 권한 사용자에게만 노출됩니다",
|
||||
"Q. AI 분석 결과가 비어 있습니다 → 온프레미스 AI 폴백으로 동작하며 데이터/상황에 따라 결과가 달라질 수 있습니다"
|
||||
]}
|
||||
]
|
||||
}
|
||||
BIN
doc/guardia-esn_개발계획서_v1.pptx
Normal file
BIN
doc/guardia-esn_개발계획서_v1.pptx
Normal file
Binary file not shown.
BIN
doc/guardia-esn_사용자지침서_v1.pptx
Normal file
BIN
doc/guardia-esn_사용자지침서_v1.pptx
Normal file
Binary file not shown.
BIN
doc/guardia-esn_설계서_v1.pptx
Normal file
BIN
doc/guardia-esn_설계서_v1.pptx
Normal file
Binary file not shown.
BIN
doc/guardia-esn_운영자지침서_v1.pptx
Normal file
BIN
doc/guardia-esn_운영자지침서_v1.pptx
Normal file
Binary file not shown.
Loading…
Reference in New Issue
Block a user