**WEL03 실습가이드 - 가상 수질검사 데이터 위험 신호 대시보드** 구 분 **실습가이드 [교육용가상자료]** **1. 실습 개요** 본 실습은 교육용 가상 급수원 수질 센서 자료로 수질 위험 신호 대시보드를 미션 단위로 구현하는 과정이다. 미션마다 정답 코드(WEL03_정답코드.md)의 해당 코드를 웹 파이썬 실행기에 붙여 넣어 실행하고, 출력된 수치가 평가 기준을 충족하는지 확인한 뒤 파라미터를 바꿔 보는 도전 과제를 수행한다. 미션별 코드는 서로 독립적이어서 어느 미션부터 실행해도 동작한다. 코드의 기준치는 교육용 가정값이며 실제 음용 판정은 공식 기준과 의무(예방의학) 담당 확인에 따른다. | **과제** | WEL03 가상 수질검사 데이터 위험 신호 대시보드 | | --- | --- | | **난이도·유형** | 중급 / 코딩형 | | --- | --- | | **예상 소요시간** | 미션 10개, 총 27.5시간 | | --- | --- | | **준비물** | WEL03_정답코드.md, 웹 파이썬 실행기(numpy·pandas·scipy·scikit-learn·matplotlib 사용 가능), 결과 기록용 문서 | | --- | --- | **2. 진행 방법** - 정답코드 md에서 해당 미션의 코드 블록 전체를 복사해 실행기에 붙여 넣고 실행한다(부분 복사 시 가상 데이터 생성 함수가 빠져 오류가 난다). - 실행 결과를 md의 '실행 결과 예시'와 비교한다. 난수 시드가 고정되어 같은 값이 나오지만, 처리 시간(초·ms)과 처리 속도는 실행 환경에 따라 달라진다. - 도전 과제는 코드 상단의 파라미터(LIMITS 기준치, 스파이크 배수, 신뢰도 임계값, 부하 배수 등)를 바꿔 다시 실행하고 변화와 이유를 기록한다. - 그래프 글자는 영문, 표·출력은 한글이다. 한글이 깨지면 실행기 글꼴 문제이며 결과에는 영향이 없다. - 실제 부대·급수 시설·검사 결과는 입력하지 않는다. 급수 중단·재개는 지휘관 결정 사항이며 도구의 판정은 판단 보조 정보다. **3. 미션 진행 요약** | **미션** | **난이도·시간** | **핵심 확인 결과** | | --- | --- | --- | | **M1. 야전 급수원 가상 수질검사 항목(pH, 탁도, 잔류염소, 중금속, 대장균) 데이터셋 정의** | 초급 1.5시간 | 스키마 완성도 15/15(100%), 정상 샘플 20건 오류 0건 | | **M2. 수질 센서 결측치 대체 및 시계열 센서 이상치 정제 전처리 모듈 구현** | 초급~중급 2시간 | 처리 속도 약 2만 건/초(목표 1,000건/초 이상), 오류율 0%, 결측 125건에서 0건 | | **M3. 음용 적합/부적합 판정 1차 기준치 필터링 Baseline 알고리즘 구현** | 중급 2.5시간 | 정확도 97.9%(전처리 없음 96.8%, 목표 75% 이상), 위험 재현율 88.6% | | **M4. 복합 오염원 유입 징후 및 급수 안전도 위험 등급 분류 머신러닝 모델 고도화** | 중급 3시간 | 랜덤 포레스트 정확도 99.3%, 위험 재현율 97.2%(목표 85% 이상), 1건 지연 약 19ms(목표 200ms 이하) | | **M5. 센서 오류에 의한 단수 오경보 방지 및 수질 안전 신뢰도 지수 산출 모듈 개발** | 중급~고급 3시간 | 오경보율 8.4%에서 0.7%(91% 감축, 목표 40% 이상), 잡음 재현 일치율 93.6%(목표 90% 이상) | | **M6. 야전 급수차 및 정수 시설별 수질 상태 실시간 시각화 대시보드 구현** | 중급 2.5시간 | 갱신 1회 평균 약 120ms(목표 1초 이내), 상세 조회 평균 약 5ms(목표 100ms 이내) | | **M7. 수질 위험 경보 발생 시 급수관 긴급 채수 검사 및 급수 중단 HITL 결재선 설계** | 고급 3시간 | 경보 10건 큐 등록, 자동 급수 중단 0건, 급수 중단 9·유지 1 | | **M8. 오염물질 대량 유입 가상 시나리오 부하 테스트 및 경보 반응 시간 검증** | 고급 3.5시간 | 시스템 중단 0건, 데이터 유실률 0%, 메모리 말기/초기 1.00, 경보 30/30 탐지 | | **M9. AAR 기반 수질 이상 오판 사례 분석 및 수질 위험 판단 임계치 재조정** | 고급 3시간 | 검증 세트 정확도 향상 0.1%p(목표 10%p 미달), 재발 오류 1건(목표 0건 미달) | | **M10. 가상 수질검사 데이터 위험 신호 대시보드 시스템 통합 패키지 완성** | 최고급 3.5시간 | E2E 성공률 100%(5종), 자체 점검 8/8, 함수 커버리지 100%(11/11) | **미션 1. 야전 급수원 가상 수질검사 항목(pH, 탁도, 잔류염소, 중금속, 대장균) 데이터셋 정의** | **난이도·시간** | 초급 · 1.5시간 | | --- | --- | | **진행 순서** | 1) M1 코드를 실행해 스키마 필드 15개와 샘플 20건 검증 결과를 확인한다. 2) 오류 주입 5종이 각각 어떤 규칙에 걸렸는지 표로 정리한다. 3) 데이터 명세 요약표에서 단위와 허용 범위를 확인한다. | | --- | --- | | **확인할 결과** | 스키마 완성도 15/15(100%), 정상 샘플 20건 오류 0건 주입 오류 5종 모두 검출 | | --- | --- | | **도전 과제** | quality 묶음에 '수온(temp_c, 0~60)' 필드를 추가하고 범위 밖 값을 넣어 검출되는지 확인한다. | | --- | --- | | **제출물** | 스키마·검증기 코드, 데이터 명세 요약(필드·단위·범위) | | --- | --- | **미션 2. 수질 센서 결측치 대체 및 시계열 센서 이상치 정제 전처리 모듈 구현** | **난이도·시간** | 초급~중급 · 2시간 | | --- | --- | | **진행 순서** | 1) M2 코드를 실행해 처리 속도, 오류율, 남은 결측 수를 확인한다. 2) 고장 유형별 처리 내역표에서 stuck·spike·dropout이 어떻게 표시되는지 본다. 3) 단위 테스트 5종과 동적 임계값 효과(오제거 건수)를 정리한다. | | --- | --- | | **확인할 결과** | 처리 속도 약 2만 건/초(목표 1,000건/초 이상), 오류율 0%, 결측 125건에서 0건 보간 MAE 0.042 대 평균 대체 0.122, 단위 테스트 5/5 | | --- | --- | | **도전 과제** | SPIKE_K의 주간 배수를 6.0에서 3.0으로 낮춰 정상 변동 오제거가 어떻게 늘어나는지 확인한다. | | --- | --- | | **제출물** | 전처리 모듈 코드, 전처리 전후 비교표와 단위 테스트 결과 | | --- | --- | **미션 3. 음용 적합/부적합 판정 1차 기준치 필터링 Baseline 알고리즘 구현** | **난이도·시간** | 중급 · 2.5시간 | | --- | --- | | **진행 순서** | 1) M3 코드를 실행해 전처리 유무에 따른 정확도와 혼동행렬을 확인한다. 2) 놓친 위험과 오경보의 원인(사건 유형, 센서 고장)을 정리한다. 3) 즉시 판정과 2시간 연속 확인의 차이를 비교한다. | | --- | --- | | **확인할 결과** | 정확도 97.9%(전처리 없음 96.8%, 목표 75% 이상), 위험 재현율 88.6% 오경보 17건, 놓친 위험 중 중금속 완만 증가 22시간 | | --- | --- | | **도전 과제** | LIMITS의 탁도 위험 기준을 2.0에서 1.5NTU로 낮춰 재현율과 오경보가 어떻게 달라지는지 확인한다. | | --- | --- | | **제출물** | Baseline 판정 코드, 혼동행렬·오차 분석 보고(가정 기준치 명시) | | --- | --- | **미션 4. 복합 오염원 유입 징후 및 급수 안전도 위험 등급 분류 머신러닝 모델 고도화** | **난이도·시간** | 중급 · 3시간 | | --- | --- | | **진행 순서** | 1) M4 코드를 실행해 Baseline과 랜덤 포레스트 성능을 비교한다. 2) 복합 위협 시나리오 10종의 PASS/FAIL 표를 확인한다. 3) FAIL인 시나리오의 원인과 다음 미션(신뢰도 지수)의 보완 방향을 적는다. | | --- | --- | | **확인할 결과** | 랜덤 포레스트 정확도 99.3%, 위험 재현율 97.2%(목표 85% 이상), 1건 지연 약 19ms(목표 200ms 이하) 시나리오 9/10 통과(센서 드리프트 교란은 FAIL) | | --- | --- | | **도전 과제** | RandomForestClassifier의 max_depth를 10에서 4로 줄여 재현율과 오경보가 어떻게 달라지는지 비교한다. | | --- | --- | | **제출물** | 분류 모델 코드, 시나리오별 시험 결과표와 한계 분석 | | --- | --- | **미션 5. 센서 오류에 의한 단수 오경보 방지 및 수질 안전 신뢰도 지수 산출 모듈 개발** | **난이도·시간** | 중급~고급 · 3시간 | | --- | --- | | **진행 순서** | 1) M5 코드를 실행해 신뢰도 등급별 경보 수와 조치 표를 확인한다. 2) 신뢰도 적용 전후 오경보율을 비교한다. 3) 임계값 민감도 표와 잡음 재현 5회 일치율을 정리한다. | | --- | --- | | **확인할 결과** | 오경보율 8.4%에서 0.7%(91% 감축, 목표 40% 이상), 잡음 재현 일치율 93.6%(목표 90% 이상) High 137·Med 112·Low 13건, AUC 0.821 | | --- | --- | | **도전 과제** | High 기준을 60점에서 80점으로 올려 상신 경보 수와 실제 위험 상신 비율이 어떻게 변하는지 확인하고 놓침 위험을 논의한다. | | --- | --- | | **제출물** | 신뢰도 엔진 코드, 등급별 조치 기준표와 민감도 분석 | | --- | --- | **미션 6. 야전 급수차 및 정수 시설별 수질 상태 실시간 시각화 대시보드 구현** | **난이도·시간** | 중급 · 2.5시간 | | --- | --- | | **진행 순서** | 1) M6 코드를 실행해 갱신 시간과 급수원 상태판을 확인한다. 2) 긴급 경보로 강조되는 급수원과 근거(초과 항목)를 읽는다. 3) 그래프 5종에서 경보 급수원을 한눈에 찾는 방법을 설명한다. | | --- | --- | | **확인할 결과** | 갱신 1회 평균 약 120ms(목표 1초 이내), 상세 조회 평균 약 5ms(목표 100ms 이내) 긴급 경보 강조 3곳(W04, W07, W08), 컴포넌트 5종 | | --- | --- | | **도전 과제** | 야간 모드 색상을 바꾸거나 경보 강조 기준을 '주의 포함'으로 넓혀 인지 부하가 어떻게 달라지는지 비교한다. | | --- | --- | | **제출물** | 대시보드 코드, 상황판 화면 캡처, 경보 강조 기준 설명 | | --- | --- | **미션 7. 수질 위험 경보 발생 시 급수관 긴급 채수 검사 및 급수 중단 HITL 결재선 설계** | **난이도·시간** | 고급 · 3시간 | | --- | --- | | **진행 순서** | 1) M7 코드를 실행해 검토 큐와 결재 결과(급수 중단·유지)를 확인한다. 2) 우회·위반 시도 6종이 차단되는 이유를 정리한다. 3) 감사 로그 해시 체인과 임의 수정 탐지를 확인한다. | | --- | --- | | **확인할 결과** | 경보 10건 큐 등록, 자동 급수 중단 0건, 급수 중단 9·유지 1 우회 시도 차단 6/6, 로깅 성공률 100%(49건), 변조 탐지 | | --- | --- | | **도전 과제** | 큐 우선순위 점수에서 '대장균' 가중치를 높여 상위 5건이 어떻게 바뀌는지 확인한다. | | --- | --- | | **제출물** | 결재선 코드, 급수 중단 HITL 가이드(역할·순서·기록), 차단 시험 결과 | | --- | --- | **미션 8. 오염물질 대량 유입 가상 시나리오 부하 테스트 및 경보 반응 시간 검증** | **난이도·시간** | 고급 · 3.5시간 | | --- | --- | | **진행 순서** | 1) M8 코드를 실행해 평시와 부하 500% 비교표를 확인한다. 2) 유실률·중단·메모리·경보 반응 시간을 읽는다. 3) 기능 축소 적용 전후 주기 처리 시간과 병목을 정리한다. | | --- | --- | | **확인할 결과** | 시스템 중단 0건, 데이터 유실률 0%, 메모리 말기/초기 1.00, 경보 30/30 탐지 기능 축소 시 주기 평균 약 91ms 대 미적용 약 659ms(예산 300ms) | | --- | --- | | **도전 과제** | 급수원 수를 48곳에서 96곳으로 늘려 기능 축소 전환 시점과 반응 시간이 어떻게 달라지는지 확인한다. | | --- | --- | | **제출물** | 부하 시험 코드, 스트레스 시험 분석 보고(Fail-safe 동작 포함) | | --- | --- | **미션 9. AAR 기반 수질 이상 오판 사례 분석 및 수질 위험 판단 임계치 재조정** | **난이도·시간** | 고급 · 3시간 | | --- | --- | | **진행 순서** | 1) M9 코드를 실행해 오판 원인 분류표와 재조정 파라미터(YAML)를 확인한다. 2) 튜닝·검증·벤치마크 세트의 정확도 변화와 새로 틀린 건수를 비교한다. 3) 목표 미달 사유를 설명하고 남은 원인에 대한 운영 조치를 적는다. | | --- | --- | | **확인할 결과** | 검증 세트 정확도 향상 0.1%p(목표 10%p 미달), 재발 오류 1건(목표 0건 미달) 오판 110건에서 102건, 남은 원인은 센서 고장·경계 혼동 | | --- | --- | | **도전 과제** | ecoli_3h_min을 2에서 3으로 바꿔 놓침과 오경보가 어떻게 달라지는지 확인한다. 목표 미달이 임계치 문제가 아닌 이유를 설명한다. | | --- | --- | | **제출물** | AAR 분석 코드, AAR 보고서(원인·조치·회귀 테스트), 재조정 YAML | | --- | --- | **미션 10. 가상 수질검사 데이터 위험 신호 대시보드 시스템 통합 패키지 완성** | **난이도·시간** | 최고급 · 3.5시간 | | --- | --- | | **진행 순서** | 1) M10 코드를 실행해 End-to-End 5종 결과를 확인한다. 2) 자체 점검 8항목과 함수 커버리지, README 7개 장을 확인한다. 3) 브리핑 요약의 수치가 실행 결과와 맞는지 대조한다. | | --- | --- | | **확인할 결과** | E2E 성공률 100%(5종), 자체 점검 8/8, 함수 커버리지 100%(11/11) 급수 중단 검토 상신 6곳 전부 PENDING, README 7개 장 | | --- | --- | | **도전 과제** | CONFIG의 conf_high를 바꿔 검토 큐에 올라가는 급수원 수가 어떻게 달라지는지 확인한다. | | --- | --- | | **제출물** | 통합 도구 코드, 운영 문서 요약, 지휘관 브리핑 요약 | | --- | --- | **4. 최종 점검표** | **점검 항목** | **확인** | | --- | --- | | 미션 1~10 코드가 모두 오류 없이 실행되었다 | ( ) | | 각 미션의 확인할 결과를 기록했다 | ( ) | | 도전 과제 결과와 이유를 기록했다 | ( ) | | 브리핑 수치가 실행 결과와 일치한다 | ( ) | | 실제 부대·급수 시설·검사 결과를 사용하지 않았다 | ( ) | | 급수 중단·재개는 지휘관 결정으로 설계했고 실제 판정은 공식 기준과 담당 확인에 따른다고 명시했다 | ( ) |