Files
pbl02/scenario_md/DAT10-데이터·자동화·업무플랫폼_공급망 모니터링-데이터 마이닝 기반 공급망 재난 식별 SaaS/DAT10-데이터·자동화·업무플랫폼_공급망 모니터링-데이터 마이닝 기반 공급망 재난 식별 SaaS.md
T
2026-10-08 16:43:48 +09:00

98 lines
18 KiB
Markdown

**데이터 마이닝 기반 공급망 재난 식별 SaaS**
난 이 도 **고급**
| **프로젝트 목표** | 전시에는 통신망이 끊긴 채 보급소가 입고와 불출을 각자 기록하고, 복구 후 여러 기록을 합치는 과정에서 중복·누락·충돌·위변조가 생기며, 이를 놓치면 재고 판단과 업체 공급 이상 징후 식별이 늦어진다. 본 프로젝트는 방산 공급망 회복력 연구(미국 방위산업기반 정책연구)의 문제의식을 교육용 가상 자료로 재구성해, 가상 보급소 5곳이 오프라인으로 재고를 기록하고 동기화하는 SaaS를 만들고 동기화된 자료에서 공급망 재난 징후(업체 공급 감소, 재고 소진 임박)를 식별하는 과제이다. 요구사항·스키마, 오프라인 입력 전처리, P2P/USB 교환, CRDT 동기화와 충돌 탐지, 무결성 검증, 대시보드, 군수관 HITL 병합, 7일 단절 후 일괄 동기화 스트레스, AAR 재튜닝, 통합 패키지까지 단계별로 구현한다. 최종 목표는 오프라인 재고 동기화의 정확도와 무결성을 근거와 함께 보여 주되, 충돌 병합과 보급 조치는 군수관·지휘관이 하도록 지원하는 시스템을 완성하는 것이다. |
| --- | --- |
| **유의사항** | 모든 보급소·업체·품목·재고 자료는 코드 안에서 만든 교육용 가상 자료이며 실제 부대, 업체, 품목, 재고, 장비 제원은 사용하지 않는다. 서명 키는 데모용 가상 값이며 실제 키 관리 체계는 다루지 않는다. 부대 자료의 외부 AI 서비스 입력과 부대 내 촬영은 금지한다. 병합 확정, 공급 징후에 대한 보급 조치, 업체 대응은 군수관·지휘관이 규정과 지휘계통에 따라 결정하며 본 도구의 경보와 신뢰도는 판단 보조 정보이다. 엑셀 미션이 오프라인 동기화 중심이어서 프로젝트명의 공급망 재난 식별은 동기화된 자료의 마이닝 단계(미션 6·7·10)로 연결해 다룬다. 미션별 정답 코드는 각각 한 파일로 독립 실행된다. |
| --- | --- |
**1단계. 요구사항·로컬 DB 스키마 설계 및 오프라인 입력 전처리**
| **미션 1. 전술 통신 두절 환경에서의 야전 군수 재고 관리 요구사항 분석 및 로컬 DB 스키마 설계** [초급 · 1.5시간] | **미션 1. 전술 통신 두절 환경에서의 야전 군수 재고 관리 요구사항 분석 및 로컬 DB 스키마 설계** [초급 · 1.5시간] |
| --- | --- |
| **목표** | 통신이 끊긴 환경에서 보급소가 입고·불출·조정을 기록하는 오프라인 재고 관리의 요구사항 12개를 정리하고, 이를 만족하는 트랜잭션 스키마(필드 12개)와 로컬 DB 구조를 설계한다. |
| **수행** | 가상 보급소 5곳과 품목 12종의 트랜잭션(ID·보급소·품목·구분·수량·시각·상황·업체·논리 시계·동기화 상태·체크섬·비고) 필드를 자료형·단위·허용 범위와 함께 정의하고, ID는 노드 접두어와 일련번호로 만들어 중복 입력을 막는 멱등 키로 쓴다. 메모리 SQLite에 테이블 5개와 재고 뷰 1개를 만들고 UNIQUE·외래 키·CHECK 제약이 잘못된 입력을 막는지 5건 시험한다. 정상 2,100건 검증 오류 0건을 확인하고 자료형·허용값·형식·범위·논리·누락·개인정보 의심 오류 8종을 주입해 검출을 확인한다. 요구사항 12개가 각각 어떤 구조로 충족되는지 검증표로 만든다. |
| **산출물** | data/schema/dat10_input_schema.json 및 docs/dat10_data_spec.md |
| **평가** | **[필수] 요구사항·스키마 설계** — 스키마 필드 정의 완성도 100%, 샘플 데이터 검증 오류 0건, 주입 오류 8종 검출, 제약 조건 5/5 차단, 요구사항 12개 충족, 개인 식별 필드 0개이며 통신 두절 환경의 재고 기록 요구에 맞는 구조인가. |
| **미션 2. 오프라인 데이터 입력 유효성 검증 및 로컬 SQLite 트랜잭션 전처리 모듈 구현** [초급~중급 · 2시간] | **미션 2. 오프라인 데이터 입력 유효성 검증 및 로컬 SQLite 트랜잭션 전처리 모듈 구현** [초급~중급 · 2시간] |
| --- | --- |
| **목표** | 형식이 섞인 오프라인 입력 줄을 파싱·검증하고 SQLite 트랜잭션으로 안전하게 적재하는 전처리 모듈을 구현해 처리 속도 1,000건/초 이상, 전처리 오류율 0%를 확인한다. |
| **수행** | ID\|품목\|구분\|수량\|시각 형식, 쉼표 형식, 키=값 형식, JSON 형식이 섞이고 재전송 중복이 포함된 가상 입력 8,250줄을 파싱해 허용값·범위 오류를 가려낸다. 평시·야간·통신불량 상황마다 구분별 수량 임계값을 중앙값과 MAD로 동적 조정해 고정 임계값과 오탐을 비교하고, 500건 배치 트랜잭션으로 적재하되 제약 위반이 나오면 롤백 후 행 단위로 격리한다. 같은 ID를 다시 넣어도 행 수가 변하지 않는지(멱등), 원본과 적재 값이 일치하는지 대조해 오류율과 처리 속도를 측정한다. |
| **산출물** | src/preprocess/dat10_preprocessor.py 및 전처리 전후 데이터셋 |
| **평가** | **[필수] 오프라인 입력 전처리** — 데이터 정제 처리 속도 1,000건/초 이상, 정답 대조 전처리 오류율 0%, 입력 상황(평시·야간·통신불량)별 임계값 조정의 타당성, 입력 노이즈(형식 혼재·이상 수량·중복)를 격리하고 삭제하지 않는가. |
**2단계. P2P/USB 교환 Baseline 및 CRDT 동기화·충돌 탐지**
| **미션 3. 오프라인 단말 간 1차 피어투피어(P2P)/USB 재고 데이터 교환 Baseline 기능 구현** [중급 · 2.5시간] | **미션 3. 오프라인 단말 간 1차 피어투피어(P2P)/USB 재고 데이터 교환 Baseline 기능 구현** [중급 · 2.5시간] |
| --- | --- |
| **목표** | 보급소 단말 5곳이 접촉할 때 USB·P2P로 재고 트랜잭션을 주고받는 Baseline 교환 기능을 만들고 7일 후 정보 공유 정확도 75% 이상을 확인한다. |
| **수행** | 7일간 접촉 56회(접촉당 방향별 최대 80건, 손실 5%)의 가상 일정에서 상대 상태를 모르는 전체 전송, ID 차집합 델타 전송, 델타에 우선순위(오래된 것 먼저)를 더한 방식을 비교한다. 우선순위 가중치(내 기록·오래됨)는 튜닝 시드 3개로 탐색하고 시험 시드 3개로 검증한다. 접촉 1회 지연과 7일 후 모든 노드가 전체 트랜잭션 중 알고 있는 비율(완전성), 완전 수렴 여부를 보고 접촉이 부족한 한계를 확인한다. |
| **산출물** | src/models/dat10_baseline_model.py 및 기본 추론 결과 보고서 |
| **평가** | **[필수] P2P/USB 교환 Baseline** — 7일 후 정보 공유 정확도(완전성) 75% 이상, 전송 효율과 접촉 지연 측정, 우선순위 가중치 1차 튜닝 결과, 방식 선택 기준의 투명성을 확인했는가. |
| **미션 4. 네트워크 복구 시 클라우드 중앙 서버와의 양방향 데이터 충돌 해결(CRDT) 동기화 고도화** [중급 · 3시간] | **미션 4. 네트워크 복구 시 클라우드 중앙 서버와의 양방향 데이터 충돌 해결(CRDT) 동기화 고도화** [중급 · 3시간] |
| --- | --- |
| **목표** | 통신 복구 후 노드와 중앙 서버가 양방향으로 병합하는 CRDT 동기화를 구현하고, 같은 품목 정보를 서로 모르게 고친 충돌의 탐지 재현율 85% 이상과 처리 지연 200ms 이하를 확인한다. |
| **수행** | 재고 수량은 품목별 PN-카운터(노드별 증가·감소 누적, 병합은 요소별 최댓값)로 만들어 노드 5곳과 서버를 2단계로 병합하고, 마지막 값이 이기는 방식(LWW)과 갱신 유실을 비교한다. 멱등·교환·결합·오래된 상태 재전송 성질을 무작위 상태 200쌍으로 시험한다. 품목 정보(최소 보유 기준) 동시 수정 충돌 400쌍을 시간 근접 규칙, 값 비교 규칙, 버전 벡터 규칙, 버전 벡터와 값 비교를 합친 규칙으로 탐지해 재현율·정밀도·오경보 패턴을 비교하고, 병합 지연을 측정한다. |
| **산출물** | src/models/dat10_advanced_detector.py 및 예외 탐지 테스트 결과 |
| **평가** | **[선택] CRDT 동기화·충돌 탐지** — 충돌 탐지 재현율 85% 이상, 병합 처리 지연 200ms 이하, 갱신 유실 0건, 오프라인 동안 서로 다른 값으로 고친 충돌과 시계 어긋남 사례에 대한 방어 로직이 현실적이고 오경보 패턴을 설명하는가. |
**3단계. 무결성 검증 엔진 및 오프라인/온라인 대시보드**
| **미션 5. 오프라인 위변조 방지 암호화 해시 및 데이터 무결성 검증 엔진 개발** [중급~고급 · 3시간] | **미션 5. 오프라인 위변조 방지 암호화 해시 및 데이터 무결성 검증 엔진 개발** [중급~고급 · 3시간] |
| --- | --- |
| **목표** | 보급소 로그의 해시 체인과 레코드별 HMAC 서명으로 위변조를 찾는 오프라인 무결성 검증 엔진을 만들고, 단순 전체 해시 비교 대비 오경보율을 40% 이상 줄이고 신뢰도 등급 산출의 일관성 90% 이상을 확인한다. |
| **수행** | 수량 수정·기록 삭제·순서 변경·위조 삽입·재전송 변조(같은 ID, 다른 수량)·꼬리 절단 6종의 악성 변형과 중복 전송·순서 뒤바뀜·공백 차이 3종의 정상 변형을 보급소 5곳에 6회씩 주입한다. 정규화(중복 제거·정렬·공백 정리) 후 체인 연속·서명·같은 ID 내용 충돌·일련번호 연속·시각 이상·꼬리 일치 6항목을 가중합해 High/Med/Low 신뢰도를 부여하고, 전체 해시 비교의 탐지율·오경보율과 비교한다. 같은 로그를 20회 반복 점검해 등급 일관성을 보고 서명 불일치 레코드를 지목하는 불확실성 표시를 만든다. |
| **산출물** | src/verification/dat10_confidence_engine.py |
| **평가** | **[필수] 무결성 검증 엔진** — 오경보율(정상 변형을 변조로 올린 비율) 40% 이상 감축, 신뢰도 산출 일관성 90% 이상, 악성 6종 탐지율과 미탐 보고, 등급(High/Med/Low) 부여 기준과 점검 항목 가중치가 운용 상황에 타당한가. |
| **미션 6. 오프라인/온라인 전환 상태 및 재고 변동 내역 실시간 대시보드 UI 구현** [중급 · 2.5시간] | **미션 6. 오프라인/온라인 전환 상태 및 재고 변동 내역 실시간 대시보드 UI 구현** [중급 · 2.5시간] |
| --- | --- |
| **목표** | 보급소별 오프라인/온라인 상태와 품목별 재고 변동 내역, 공급 경보를 보여 주는 실시간 대시보드 화면 모델을 구현하고 갱신 1초 이내·조작 응답 100ms 이내를 확인한다. |
| **수행** | 7일치 트랜잭션 2,100건을 1시간 단위 168회 데이터 스트림으로 흘려 보급소 상태판(온라인·오프라인·미동기 건수·지연 시간), 품목별 재고 게이지(소진 예상 일수와 납기 비교), 변동 내역, 경보 목록 4개 패널의 화면 모델을 갱신한다. 야간 모드 전환·보급소 필터·경보만 보기·경보 확인(ack)을 100회씩 실행해 응답 시간을 재고, 주간·야간 색상의 대비비 4.5 이상을 계산하고, 소진 임박·장기 오프라인을 긴급 경보로 강조해 4개 패널을 그린다. |
| **산출물** | src/ui/dat10_dashboard.py (또는 웹 UI 컴포넌트) |
| **평가** | **[선택] 오프라인/온라인 대시보드** — 화면 모델 갱신 1초 이내, UI 조작 응답 100ms 이내, 시각화 패널 4종 이상 렌더링, 야간 모드 대비비 4.5 이상, 긴급 경보 강조가 상황판으로서 직관적이고 인지 부하를 줄이는가. |
**4단계. 군수관 HITL 병합 워크플로우 및 일괄 동기화 스트레스 시험**
| **미션 7. 동기화 충돌 발생 시 군수관 수동 병합(Conflict Resolution) HITL 워크플로우 설계** [고급 · 3시간] | **미션 7. 동기화 충돌 발생 시 군수관 수동 병합(Conflict Resolution) HITL 워크플로우 설계** [고급 · 3시간] |
| --- | --- |
| **목표** | 동기화 충돌이 발생했을 때 시스템이 값을 자동 확정하지 않고 군수관이 수동 병합하며, 영향이 큰 건은 지휘관이 승인하는 HITL 워크플로우를 구현해 검토 큐 대기시간과 처리 로깅 성공률 100%를 확인한다. |
| **수행** | 충돌 12건(실사 수량·최소 보유 기준을 두 보급소가 다르게 수정)을 시스템 제안 - 보급담당 상신 - 군수관 검토와 수동 병합 - 확정(차이 25% 이상이면 지휘관 승인) 순서로 처리하고, 병합 전후 값과 사유·근거를 기록하며 반려 사유를 필수로 한다. 병합 값은 두 값 범위(±20%) 안으로 제한한다. 지휘관 피드백 입력 폼은 분류(우선순위·자원·절차·기타)를 검증한다. 시스템 자동 병합, 권한 없는 병합, 병합 없는 확정, 로그 수정 등 14건의 우회 시도가 모두 차단되는지 확인하고, 위험도 우선 큐(대기 노화 가산)와 선입선출의 대기시간을 비교하고 해시 체인 감사 로그를 검증한다. |
| **산출물** | src/hitl/dat10_approval_workflow.py 및 docs/dat10_hitl_guide.md |
| **평가** | **[필수] 충돌 병합 HITL** — 승인·반려·병합·거부 처리 로깅 성공률 100%, 검토 큐 대기시간(고위험 건) 개선, 우회 시도 차단, 지휘 책임 분계선(군수관 병합, 지휘관 승인)이 명확하고 성급한 자동 단정을 막는 체계에 부합하는가. |
| **미션 8. 7일간 통신 단절 후 대량 재고 트랜잭션 일괄 동기화 스트레스 테스트** [고급 · 3.5시간] | **미션 8. 7일간 통신 단절 후 대량 재고 트랜잭션 일괄 동기화 스트레스 테스트** [고급 · 3.5시간] |
| --- | --- |
| **목표** | 7일간 통신이 끊겼다가 복구된 직후 보급소 5곳의 누적 트랜잭션이 한꺼번에 서버로 몰리는 상황을 기준 100%·200%·500%로 시험해 시스템 다운 0건·데이터 유실 0%와 기능 축소 동작을 확인한다. |
| **수행** | 트랜잭션 2,100건을 기준으로 4,200건·10,500건까지 늘려 배치 50건 단위로 큐와 작업자 스레드 4개가 처리하게 하고, 같은 배치 중복 재전송(5%)·서명 후 수량 변조(1%)·작업자 오류(37배치마다)를 주입한다. 큐가 쌓이면 서명을 표본 10%만 점검하는 기능 축소로 전환하고 나중에 전수 사후 검증해 위조를 되돌린다. 중복 확인을 목록 탐색에서 집합 조회로 바꾼 최적화 전후의 처리량과 응답 시간을 비교하고 단계별 병목을 재며, 반복 실행 후 메모리 증가를 점검한다. |
| **산출물** | tests/dat10_stress_test.py 및 스트레스 테스트 분석 보고서 |
| **평가** | **[선택] 일괄 동기화 스트레스** — 트래픽 500% 상황에서 시스템 다운 0건, 데이터 유실률 0%(재고 차이 0), 위조 전부 격리, 병목 프로파일과 최적화 효과, 기능 축소(Fail-safe)와 사후 검증의 적절성을 확인했는가. |
**5단계. AAR 재튜닝 및 통합 패키지·배포 가이드 완성**
| **미션 9. AAR 기반 동기화 누락 및 데이터 충돌 사례 분석 및 동기화 룰셋 재튜닝** [고급 · 3시간] | **미션 9. AAR 기반 동기화 누락 및 데이터 충돌 사례 분석 및 동기화 룰셋 재튜닝** [고급 · 3시간] |
| --- | --- |
| **목표** | 동기화 누락·충돌 판정 오류 사례를 AAR로 원인별로 분류하고 규칙 파라미터(중복 판정 방식, 충돌 탐지 규칙, 자동 병합 임계, 재시도 횟수)를 재튜닝해 종합 정확도 10%p 이상 향상과 재발 오류 0건을 시험한다. |
| **수행** | 가상 사례 1,200건(중복 재전송·재입력, 같은 크기의 서로 다른 거래, 동시·후속 메타 수정과 시계 어긋남, 수량 차이, 통신불량 전송 실패)에 현행 규칙을 적용해 오류를 D1~D6 원인으로 분류한다. 파라미터마다 AAR 사례에서 후보를 탐색해 재튜닝하고, 별도 시험 3,000건의 정확도 향상폭과 AAR 사례의 재발 오류, 규칙 단위 회귀 테스트 8개의 통과 여부를 확인한다. 튜닝 결과를 YAML 문자열로 출력하고 사례 은행에 누적해 승인 후 반영하는 지속 학습 연계 방안을 정리한다. |
| **산출물** | docs/dat10_aar_report.md 및 configs/dat10_tuned_params.yaml |
| **평가** | **[필수] AAR 재튜닝** — AAR 피드백 적용 후 종합 정확도 10%p 이상 향상, 재발 오류 현황(목표 0건)을 정직하게 보고, 회귀 테스트 통과, 오류 원인 규명의 객관성과 조치의 논리적 타당성, 지속 학습 연계 방안을 확인했는가. |
| **미션 10. 오프라인 동기화 야전 재고 관리 SaaS 최종 패키징 및 야전 배포 가이드 완성** [최고급 · 3.5시간] | **미션 10. 오프라인 동기화 야전 재고 관리 SaaS 최종 패키징 및 야전 배포 가이드 완성** [최고급 · 3.5시간] |
| --- | --- |
| **목표** | 입력 검증·서명 점검·중복 제거·PN-카운터 병합·충돌 탐지·공급망 재난 징후 마이닝·검토 큐·감사 로그·브리핑을 묶은 오프라인 동기화 야전 재고 관리 SaaS 패키지와 배포 가이드를 완성한다. |
| **수행** | 앞 미션의 기능을 통합 파이프라인으로 묶어 설치 스크립트 5단계 점검, 시드 4종 End-to-End 실행(업체 1곳 공급 중단, 노드 1곳 3일치 미동기, 변조 20·깨진 줄 5·중복 60건 주입), 자체 점검 11항목과 함수 커버리지를 수행한다. 업체별 최근 3일 입고량이 첫 3일 대비 급감한 업체를 공급망 재난 징후 후보로 찾고 오프라인 노드 때문에 생기는 오경보가 없는지 확인한다. 매뉴얼 7개 장의 작성률과 군수관 브리핑 요약을 출력하고 인접 체계 연동 API 확장 방향을 정리한다. |
| **산출물** | src/main_dat10.py, README.md, docs/dat10_final_report.pdf(md) |
| **평가** | **[필수] 통합 패키지·배포** — End-to-End 통합 파이프라인 실행 성공률 100%, 테스트(함수) 커버리지 85% 이상, 군 실무 즉시 도입 가능성과 운용 신뢰도, 연동 인터페이스 확장 방안을 설명하는가. |
**최종 판정**
**판정 기준 :** 모든 필수 항목([필수])에서 PASS를 받아야 최종 PASS로 인정한다.
최종 판정 결과 : ( PASS / FAIL )
평가 의견 : (필수 항목 중 하나라도 FAIL인 경우 사유를 기재한다.)