{ "solution": "GUARDiA MES", "doc_type": "설계서", "out": "C:/GUARDiA/workspace/guardia-mes/doc/mes_설계서_v1.pptx", "subtitle": "AI 기반 제조실행시스템 (MES/WMS/QMS) · 지오정보기술 / 2026", "design": {"primary":"1F3A5F","accent":"2E86C1","text":"222222","font_ko":"맑은 고딕"}, "sections": [ {"title":"1. 시스템 구성도", "bullets":[ "단일 JAR 서비스(포트 8013): Spring Boot 3.5 백엔드 + React 19 정적 번들", "DB: PostgreSQL mes_db (제조 도메인 + tb_uiws_* 권한관리 테이블)", "AI: Ollama 온프레미스(11434) — 불량분석·예측·예지보전·SPC 이상감지 (폴백 내장)", "외부 연계: ERP·ITSM·OCR·BI (REST)", "클라이언트: 관리자 웹 + 현장 작업자 모바일앱(통합 메신저 앱 app/mes)" ], "note":"구성도 도식 자리 — 클라이언트/서비스/DB/AI/연계 5블록"}, {"type":"table", "title":"2. 도메인 / ERD 요약 (MES 본연)", "headers":["영역","핵심 엔터티"], "rows":[ ["MES","작업지시·생산실적·공정/라우팅·BOM·설비/OEE·LOT추적·생산계획"], ["WMS","입고·출고·재고·로케이션·재고실사·LOT/시리얼"], ["QMS","검사(수입/공정/출하)·검사기준·NCR·CAPA·SPC관리도·성적서"], ["기준정보","품목·거래처·회원·BOM 구성"] ]}, {"type":"table", "title":"3. 도메인 / ERD 요약 (UIMS 이식)", "headers":["영역","테이블/엔터티"], "rows":[ ["업무협업","업무일지·일정·쪽지·통계 (uiws.* 도메인)"], ["권한관리(RBAC)","tb_uiws_sys_user(VARCHAR user_id)·role·dept_role·program·menu·role_menu"], ["기준(시스템)","tb_uiws_dept·company·code_grp·code"], ["주의","tb_uiws_sys_user 와 mes_user(BIGSERIAL)는 별개·미병합"] ]}, {"type":"table", "title":"4. API 설계 — 주요 엔드포인트", "headers":["영역","베이스 / 메서드"], "rows":[ ["MES/WMS/QMS","도메인별 REST CRUD (작업지시·생산실적·검사·재고 등)"], ["로그인 보조","POST /api/mes/auth/signup · /find-id · /reset-password (permitAll)"], ["권한관리","/api/system/{users,roles,roles/{id}/menus,menus,depts,companies,codes}"], ["공통조회","GET /api/public/** (permitAll, 드롭다운 룩업)"], ["응답봉투","ApiResponse{success,message,data} · 목록 PageResponse{content,total,page,size}"] ]}, {"type":"table", "title":"5. 화면 설계 — 관리자 웹 메뉴", "headers":["섹션","화면"], "rows":[ ["MES","작업지시·생산실적·공정진행·BOM/라우팅·설비OEE·LOT추적·생산계획"], ["WMS","입출고·재고·로케이션·피킹·재고실사"], ["QMS","수입/공정/출하검사·부적합NCR·CAPA·SPC관리도·성적서"], ["기준/공통","품목·거래처·사용자·설정·분석·AI도구"], ["업무(UIMS)","업무일지·일정·쪽지·통계"], ["시스템관리(권한)","권한관리·역할-메뉴권한·공통코드·메뉴관리·부서관리·거래처관리 (SUPERADMIN)"] ]}, {"type":"table", "title":"6. 화면 설계 — UIMS 시스템관리 라우트", "headers":["라우트","화면 / 권한"], "rows":[ ["/uiws/system/roles","권한 관리(역할 CRUD·다중삭제) · SUPERADMIN"], ["/uiws/system/role-menus","역할-메뉴 권한(읽기/쓰기 매핑) · SUPERADMIN"], ["/uiws/system/codes","공통코드(그룹+값 일괄 CRUD) · SUPERADMIN"], ["/uiws/system/menus","메뉴 관리(2-depth 트리) · SUPERADMIN"], ["/uiws/system/depts","부서 관리(2-depth 트리) · SUPERADMIN"], ["/uiws/system/companies","거래처 관리(CRUD·다중삭제) · SUPERADMIN"] ]}, {"title":"7. DB 스키마 설계", "bullets":[ "DB: mes_db — 제조 도메인 테이블 + db/92_uiws_system.sql(권한관리 10테이블)", "권한관리: dept·company·code_grp·code·sys_user·role·dept_role·program·menu·role_menu", "멱등 적용: CREATE IF NOT EXISTS / ON CONFLICT DO NOTHING + 최소 시드(ROLE/COMPANY/DEPT)", "application.yml schema-locations에 92_uiws_system.sql 병기 (mode=always·continue-on-error)", "MesUser에 approved 필드 추가(기존 계정 기본 true → 로그인 회귀 0)" ]}, {"title":"8. 보안 설계", "bullets":[ "인증: JWT + 2차 인증(2FA, 이메일 인증코드 verify-token)", "RBAC: /api/system/** → hasRole(SUPERADMIN), /api/public/** permitAll, /api/mes/auth/** permitAll", "회원가입 승인 게이트: approved=false 차단, role=VIEWER 기본", "계정 열거 방지: reset-password 미존재도 success=true, 임시비번 응답/로그 미노출(메일만)", "아이디찾기 마스킹(앞 2자), 임시비번 BCrypt 저장", "보안 불변: 자격증명·비밀번호·SSH·내부IP·스택트레이스 미노출 (외부 API 0)" ]}, {"type":"table", "title":"9. 연계 설계", "headers":["연계 대상","내용"], "rows":[ ["ERP","재고/정산 연계"], ["ITSM","CS / 운영 연계"], ["OCR","문서/상품 등록 연계"], ["BI","제조 데이터 분석 피드"], ["통합 메신저앱","모바일 QR 배포 (중앙 APK 저장소 재사용)"] ]} ] }