#!/usr/bin/env python3 """ GUARDiA MES — 중앙 guardia-rag 색인 훅 (대표 도메인 메타 → mes 컬렉션). 불량 RCA·SPC 해석·예지보전/예측 해석의 근거 검색을 위해, MES 의 대표 도메인 **메타데이터(테이블/컬럼/판정규칙/방법 정의)** 만 중앙 RAG 의 `mes` 컬렉션에 적재한다. 실제 생산/검사 데이터 행·거래처/인사 PII·자격증명은 색인하지 않는다(보안 불변). 사용: python scripts/rag_ingest_mes.py # 기본(http://127.0.0.1:8020) RAG_URL=http://127.0.0.1:8020 python scripts/rag_ingest_mes.py 설계 메모: - 외부 API 0. 중앙 guardia-rag(온프레미스)만 호출. - 멱등: doc_id 안정 → 재실행 시 upsert(중앙이 처리). 실패해도 MES 동작에 영향 없음(보조 스크립트). - PII/자격증명 미색인: 거래처 연락처·담당자명·SSH·비밀번호·IP 는 문서에 포함하지 않는다. - 수치 결정론 불변: SPC 관리한계·Cp/Cpk·예측치는 MES Java 로직이 산출. 본 문서는 "방법·판정규칙 정의"만 제공해 AI 가 수치를 재계산하지 않고 해석만 하도록 grounding 한다. """ import json import os import sys import urllib.request import urllib.error RAG_URL = os.environ.get("RAG_URL", "http://127.0.0.1:8020").rstrip("/") SOLUTION = "mes" # 대표 도메인 메타 문서 — 불량 RCA·SPC·예측 해석 근거용. # (PII/자격증명 컬럼 제외. 판정규칙·방법론·논리지표↔물리컬럼 중심.) DOCS = [ { "doc_id": "mes_qms_ncr", "source": "MES-SCHEMA-QMS", "text": ( "부적합(NCR) 도메인: 검사/공정에서 발견된 부적합 기록. 핵심 필드 - ncr_no(부적합번호), " "defect_code(불량코드), lot_no(LOT), item_code(품목), process_code(공정), " "equipment_code(설비), qty_defect(불량수량), root_cause(추정원인), status. " "불량코드 접두 규칙: DIM=치수, SCR/외관=표면손상, MAT=자재편차. " "원인분석은 4M(Man/Machine/Material/Method)·5Why·파레토 관점으로 수행한다." ), }, { "doc_id": "mes_qms_capa", "source": "MES-SCHEMA-QMS", "text": ( "시정조치(CAPA) 도메인: 부적합에 대한 시정·예방 조치. 필드 - capa_no, ncr_no(연결 부적합), " "action_type(CORRECTIVE/PREVENTIVE), action_desc(조치내용), owner_role, due_date, status, " "effectiveness(유효성 검증결과). 유사 불량의 과거 CAPA 이력은 RCA 근거로 활용한다." ), }, { "doc_id": "mes_qms_inspection", "source": "MES-SCHEMA-QMS", "text": ( "검사(inspection) 도메인: 수입/공정/출하 검사 결과. 필드 - inspection_no, item_code, lot_no, " "characteristic(검사항목), measured(실측값), lsl(하한규격), usl(상한규격), target(목표), " "judgement(PASS/FAIL/REINSPECT), aql. 판정규칙: measuredusl 이면 FAIL. " "deviation = measured - target. 최종 판정 권한은 사람에게 있으며 AI 는 초안만 제시한다." ), }, { "doc_id": "mes_method_spc", "source": "MES-METHOD-SPC", "text": ( "SPC(통계적공정관리) 방법 정의 — 관리도 X̄-R, p, np, c, u. 런 규칙(Western Electric/Nelson): " "RULE1 관리한계 이탈(>UCL 또는