시나리오 내용 반영

This commit is contained in:
KIM SU BO committed 2026-10-08 16:43:48 +09:00
1 parent d9287de729
commit 350bb92bf9
270 files changed
+198867

No files matched your search

@@ -0,0 +1,97 @@
**데이터 마이닝 기반 공급망 재난 식별 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인 경우 사유를 기재한다.)
@@ -0,0 +1,269 @@
**DAT10 실습가이드 - 데이터 마이닝 기반 공급망 재난 식별 SaaS**
구 분 **실습가이드 [교육용가상자료]**
**1. 실습 개요**
본 실습은 교육용 가상 보급소 5곳의 오프라인 재고 기록을 동기화하고, 병합된 자료에서 공급망 재난 징후를 식별하는 SaaS를 미션 단위로 구현하는 과정이다. 미션마다 정답 코드(DAT10_정답코드.md)의 해당 코드를 웹 파이썬 실행기에 붙여 넣어 실행하고, 출력된 수치가 평가 기준을 충족하는지 확인한 뒤 파라미터를 바꿔 보는 도전 과제를 수행한다. 미션별 코드는 서로 독립적이어서 어느 미션부터 실행해도 동작한다.
| **과제** | DAT10 데이터 마이닝 기반 공급망 재난 식별 SaaS |
| --- | --- |
| **난이도·유형** | 고급 / 코딩형 |
| --- | --- |
| **예상 소요시간** | 미션 10개, 총 27.5시간 |
| --- | --- |
| **준비물** | DAT10_정답코드.md, 웹 파이썬 실행기(numpy·pandas·scipy·scikit-learn·matplotlib 사용 가능), 결과 기록용 문서 |
| --- | --- |
**2. 진행 방법**
- 정답코드 md에서 해당 미션의 코드 블록 전체를 복사해 실행기에 붙여 넣고 실행한다(부분 복사 시 가상 자료 생성 함수가 빠져 오류가 난다).
- 실행 결과를 md의 '실행 결과 예시'와 비교한다. 난수 시드가 고정되어 같은 값이 나오지만, 처리 시간(초·ms)과 처리 속도, 스레드 큐 상태는 실행 환경에 따라 달라진다.
- 도전 과제는 코드 상단의 파라미터(접촉 횟수, 임계값, 가중치, 배치 크기 등)를 바꿔 다시 실행하고 변화와 이유를 기록한다.
- 그래프 글자는 영문, 표·출력은 한글이다. 한글이 깨지면 실행기 글꼴 문제이며 결과에는 영향이 없다.
- 자료는 모두 가상이며 파일을 읽거나 쓰지 않고 메모리 안에서만 동작한다(SQLite도 메모리 DB). 서명 키는 데모용 값이다. 병합 확정과 보급 조치는 군수관·지휘관이 결정한다.
- 미션 3·5·8은 3~5초 정도 걸릴 수 있다. 실행이 끝날 때까지 기다린다.
**3. 미션 진행 요약**
| **미션** | **난이도·시간** | **핵심 확인 결과** |
| --- | --- | --- |
| **M1. 전술 통신 두절 환경에서의 야전 군수 재고 관리 요구사항 분석 및 로컬 DB 스키마 설계** | 초급
1.5시간 | 필드 12개 정의 완성도 100%, 정상 2,100건 오류 0건, 개인 식별 필드 0개 |
| **M2. 오프라인 데이터 입력 유효성 검증 및 로컬 SQLite 트랜잭션 전처리 모듈 구현** | 초급~중급
2시간 | 입력 8,250줄: 통과 8,166줄, 중복 ID 198줄 제거, 해석 실패·허용값 오류 84줄 격리 |
| **M3. 오프라인 단말 간 1차 피어투피어(P2P)/USB 재고 데이터 교환 Baseline 기능 구현** | 중급
2.5시간 | 완전성: 전체 전송 22.8%, 델타 82.5%, 델타+우선순위 83.7%(시험 3개 평균 24.0% / 82.1% / 84.6%) |
| **M4. 네트워크 복구 시 클라우드 중앙 서버와의 양방향 데이터 충돌 해결(CRDT) 동기화 고도화** | 중급
3시간 | 수렴 성공, 서버 재고와 정답 차이 0(갱신 유실 0건), LWW는 5,142개 유실, 성질 시험 4종 모두 200/200 |
| **M5. 오프라인 위변조 방지 암호화 해시 및 데이터 무결성 검증 엔진 개발** | 중급~고급
3시간 | 전체 해시 비교 오경보율 33.3% -> 계층 검증 0.0%(100% 감축), 악성 6종 탐지율 100%, 미탐 없음 |
| **M6. 오프라인/온라인 전환 상태 및 재고 변동 내역 실시간 대시보드 UI 구현** | 중급
2.5시간 | 갱신 지연 최대 1ms 미만(목표 1초), 조작 응답 최대 1ms 안팎(목표 100ms), 렌더링 4개 패널 수백 ms |
| **M7. 동기화 충돌 발생 시 군수관 수동 병합(Conflict Resolution) HITL 워크플로우 설계** | 고급
3시간 | 충돌 12건(영향 큼 5건), 고위험 평균 대기 선입선출 5.5h -> 위험도 우선 0.8h, 병합 11건·반려 4건·피드백 5건 |
| **M8. 7일간 통신 단절 후 대량 재고 트랜잭션 일괄 동기화 스트레스 테스트** | 고급
3.5시간 | 전체 6회 실행: 다운 0건, 유실 0건, 재고 차이 0, 위조 전부 격리 예 |
| **M9. AAR 기반 동기화 누락 및 데이터 충돌 사례 분석 및 동기화 룰셋 재튜닝** | 고급
3시간 | 현행 규칙 정확도 45.5%, 오류 653건(D4 동시 수정 놓침 29.5%, D3 27.1%, D1 21.3% 순) |
| **M10. 오프라인 동기화 야전 재고 관리 SaaS 최종 패키징 및 야전 배포 가이드 완성** | 최고급
3.5시간 | 설치 5/5 통과, E2E 4/4 성공(공급 중단 업체 탐지 4/4, 다른 업체 오경보 0건), 자체 점검 11/11, 커버리지 100%(15/15), 매뉴얼 7/7장 |
**미션 1. 전술 통신 두절 환경에서의 야전 군수 재고 관리 요구사항 분석 및 로컬 DB 스키마 설계**
| **난이도·시간** | 초급 · 1.5시간 |
| --- | --- |
| **진행 순서** | 1) M1 코드를 실행해 스키마 필드 12개의 정의 완성도와 정상 자료 2,100건의 검증 결과를 확인한다.
2) 주입 오류 8종의 검출 결과와 제약 조건 시험 5건(중복 ID·외래 키·CHECK)의 차단 결과를 읽는다.
3) 요구사항 검증표 12개가 각각 어떤 구조(필드·제약·테이블)로 충족되는지 짚고 입출력 명세를 정리한다. |
| --- | --- |
| **확인할 결과** | 필드 12개 정의 완성도 100%, 정상 2,100건 오류 0건, 개인 식별 필드 0개
주입 오류 8종 중 8종 검출, 제약 조건 5/5 차단, 요구사항 12/12 충족 |
| --- | --- |
| **도전 과제** | 스키마에 기상·위치오차 같은 필드를 하나 추가하고 검증 오류가 0건으로 유지되는지, 요구사항 표에 어떤 항목이 더 필요한지 적는다. |
| --- | --- |
| **제출물** | 스키마 JSON과 요구사항 검증표 출력, 데이터 명세 요약 |
| --- | --- |
**미션 2. 오프라인 데이터 입력 유효성 검증 및 로컬 SQLite 트랜잭션 전처리 모듈 구현**
| **난이도·시간** | 초급~중급 · 2시간 |
| --- | --- |
| **진행 순서** | 1) M2 코드를 실행해 입력 8,250줄의 파싱·검증 결과(통과·격리·중복 제거 건수)를 확인한다.
2) 고정 임계값과 구분별 동적 임계값의 이상 판정·오탐을 비교한다.
3) SQLite 배치 적재의 롤백·행 단위 격리와 멱등 시험, 전처리 오류율·처리 속도를 읽는다. |
| --- | --- |
| **확인할 결과** | 입력 8,250줄: 통과 8,166줄, 중복 ID 198줄 제거, 해석 실패·허용값 오류 84줄 격리
고정 임계값 오탐 105건 -> 동적 임계값 0건(이상 수량 34/34 검출), 적재 7,933건, 오류율 0.00%, 속도 1,000건/초 이상(실행 환경별 수만 건/초) |
| --- | --- |
| **도전 과제** | BATCH 크기를 500에서 50으로 바꿔 롤백 시 격리되는 행이 어떻게 달라지는지, 처리 속도가 어떻게 달라지는지 비교한다. |
| --- | --- |
| **제출물** | 전처리 코드, 전후 건수 표, 동적 임계값 설명 |
| --- | --- |
**미션 3. 오프라인 단말 간 1차 피어투피어(P2P)/USB 재고 데이터 교환 Baseline 기능 구현**
| **난이도·시간** | 중급 · 2.5시간 |
| --- | --- |
| **진행 순서** | 1) M3 코드를 실행해 접촉 56회의 조건(방향별 80건, 손실 5%)과 세 방식(전체·델타·델타+우선순위)의 완전성·효율 표를 읽는다.
2) 우선순위 가중치 탐색 결과와 시험 시드 3개 평균을 확인한다.
3) 7일 내 완전 수렴 여부와 접촉 1회 지연을 확인하고 한계를 정리한다. |
| --- | --- |
| **확인할 결과** | 완전성: 전체 전송 22.8%, 델타 82.5%, 델타+우선순위 83.7%(시험 3개 평균 24.0% / 82.1% / 84.6%)
기본 정확도 84.6%(목표 75% 달성), 7일 내 90% 도달 못함, 모든 트랜잭션을 가진 노드 0/5 |
| --- | --- |
| **도전 과제** | 접촉 횟수(CONTACTS_PER_DAY)를 8에서 12로 올리고 완전성이 100%에 가까워지는 접촉 수를 찾는다. |
| --- | --- |
| **제출물** | 교환 Baseline 코드, 방식별 비교표, 한계 설명 |
| --- | --- |
**미션 4. 네트워크 복구 시 클라우드 중앙 서버와의 양방향 데이터 충돌 해결(CRDT) 동기화 고도화**
| **난이도·시간** | 중급 · 3시간 |
| --- | --- |
| **진행 순서** | 1) M4 코드를 실행해 노드 5곳과 서버의 병합 결과(수렴, 재고 차이, 병합 지연)를 확인한다.
2) LWW 병합과 CRDT의 유실량 차이, 멱등·교환·결합·재전송 시험 200쌍 결과를 읽는다.
3) 충돌 탐지 4개 규칙의 재현율·정밀도·오경보 패턴 표를 비교하고 마지막 규칙이 선택된 이유를 적는다. |
| --- | --- |
| **확인할 결과** | 수렴 성공, 서버 재고와 정답 차이 0(갱신 유실 0건), LWW는 5,142개 유실, 성질 시험 4종 모두 200/200
충돌 탐지 재현율: 시간 근접 4.9%, 값 비교 100%(정밀도 67.9%), 버전 벡터 v1 100%(88.3%), 버전 벡터+값 v2 100%(100%) |
| --- | --- |
| **도전 과제** | 시간 근접 규칙의 창을 1시간에서 24시간으로 늘려 재현율과 오경보가 어떻게 바뀌는지, 시계 어긋남 사례가 왜 여전히 어려운지 적는다. |
| --- | --- |
| **제출물** | CRDT 코드, 규칙별 탐지 비교표, 오경보 패턴 분석 |
| --- | --- |
**미션 5. 오프라인 위변조 방지 암호화 해시 및 데이터 무결성 검증 엔진 개발**
| **난이도·시간** | 중급~고급 · 3시간 |
| --- | --- |
| **진행 순서** | 1) M5 코드를 실행해 악성 6종과 정상 변형 3종의 탐지·오경보 결과를 확인한다.
2) 신뢰도 가중치 매트릭스와 변형별 등급 분포를 읽고 즉시 Low로 보는 항목의 이유를 적는다.
3) 20회 반복 점검의 등급 일관성과 불확실성 표시 예를 확인한다. |
| --- | --- |
| **확인할 결과** | 전체 해시 비교 오경보율 33.3% -> 계층 검증 0.0%(100% 감축), 악성 6종 탐지율 100%, 미탐 없음
등급 일관성 평균 100%(목표 90%), 정상 변형은 High, 악성은 Low |
| --- | --- |
| **도전 과제** | 가중치 W에서 체인·서명 비중을 낮추고 같은 ID 충돌 비중을 높였을 때 등급 분포가 어떻게 달라지는지 비교한다. |
| --- | --- |
| **제출물** | 무결성 엔진 코드, 탐지·오경보 비교표, 신뢰도 기준 설명 |
| --- | --- |
**미션 6. 오프라인/온라인 전환 상태 및 재고 변동 내역 실시간 대시보드 UI 구현**
| **난이도·시간** | 중급 · 2.5시간 |
| --- | --- |
| **진행 순서** | 1) M6 코드를 실행해 168회 갱신의 지연과 시점별(12·72·168시간) 오프라인·미동기·경보 현황을 확인한다.
2) 상태판·재고 경보 품목·변동 내역 출력과 조작 4종의 응답 시간을 읽는다.
3) 주간·야간 대비비와 렌더링 4개 패널 그래프를 확인하고 경보 강조가 직관적인지 평가한다. |
| --- | --- |
| **확인할 결과** | 갱신 지연 최대 1ms 미만(목표 1초), 조작 응답 최대 1ms 안팎(목표 100ms), 렌더링 4개 패널 수백 ms
168시간 시점 보급소 E 오프라인·미동기 400건, 긴급 6종·주의 3종, 경보 7건, 주간·야간 색상 대비 4.5 이상 달성 |
| --- | --- |
| **도전 과제** | OUT의 오프라인 구간을 바꿔 경보 건수가 어떻게 달라지는지, 긴급 기준(소진 일수 < 납기 절반)을 조정하면 경보가 어떻게 달라지는지 비교한다. |
| --- | --- |
| **제출물** | 대시보드 모델 코드, 지표 출력, 렌더링 그래프 |
| --- | --- |
**미션 7. 동기화 충돌 발생 시 군수관 수동 병합(Conflict Resolution) HITL 워크플로우 설계**
| **난이도·시간** | 고급 · 3시간 |
| --- | --- |
| **진행 순서** | 1) M7 코드를 실행해 충돌 12건과 영향 큼 건수, 검토 큐의 선입선출·위험도 우선 대기시간을 확인한다.
2) 처리 결과표에서 군수관 병합·지휘관 승인·반려 재기안·한도 초과 종결 건을 확인한다.
3) 우회 시도 14건의 차단 결과와 로깅 성공률, 해시 체인 검증, 변조 탐지를 읽는다. |
| --- | --- |
| **확인할 결과** | 충돌 12건(영향 큼 5건), 고위험 평균 대기 선입선출 5.5h -> 위험도 우선 0.8h, 병합 11건·반려 4건·피드백 5건
우회 시도 14/14 차단, 처리 요청 115건 = 감사 로그 115건(로깅 성공률 100%), 이력 무결성 100%, 임의 수정 탐지 |
| --- | --- |
| **도전 과제** | IMPACT_CUT을 0.25에서 0.15로 낮추면 지휘관 승인 건이 몇 건 늘어나는지, 군수관 대기가 어떻게 달라지는지 비교한다. |
| --- | --- |
| **제출물** | HITL 워크플로우 코드, 결과표, 우회 시도 차단 결과, 감사 로그 검증 출력 |
| --- | --- |
**미션 8. 7일간 통신 단절 후 대량 재고 트랜잭션 일괄 동기화 스트레스 테스트**
| **난이도·시간** | 고급 · 3.5시간 |
| --- | --- |
| **진행 순서** | 1) M8 코드를 실행해 100·200·500% 부하의 처리 시간·처리량·응답 시간을 최적화 전후로 비교한다.
2) 500% 상세표의 중복 거부, 위조 격리, 작업자 오류 재처리, 사후 검증 되돌림, 유실 건수를 확인한다.
3) 병목 프로파일과 기능 축소 정책, 반복 실행 후 메모리 증가를 읽는다. |
| --- | --- |
| **확인할 결과** | 전체 6회 실행: 다운 0건, 유실 0건, 재고 차이 0, 위조 전부 격리 예
500%(10,500건)에서 중복 확인을 목록에서 집합으로 바꿔 약 10배 이상 단축, 사후 검증 되돌림으로 표본 점검 중 통과한 위조 반영분 정정, 메모리 증가 5MB 미만 |
| --- | --- |
| **도전 과제** | HIGH_WATER(기능 축소 전환 큐 길이)를 8에서 2로 낮춰 축소 배치와 사후 되돌림 건수가 어떻게 달라지는지, 유실이 생기지 않는지 확인한다. |
| --- | --- |
| **제출물** | 스트레스 시험 코드, 부하별 비교표, 병목 분석과 기능 축소 정책 설명 |
| --- | --- |
**미션 9. AAR 기반 동기화 누락 및 데이터 충돌 사례 분석 및 동기화 룰셋 재튜닝**
| **난이도·시간** | 고급 · 3시간 |
| --- | --- |
| **진행 순서** | 1) M9 코드를 실행해 AAR 사례 1,200건의 현행 정확도와 원인별(D1~D6) 오류 분포를 확인한다.
2) 재튜닝된 파라미터와 AAR 사례 재실행 결과, 시험 3,000건 정확도 향상폭, 재발 오류를 읽는다.
3) 회귀 테스트 8개 결과와 YAML 문자열, 지속 학습 연계를 확인한다. |
| --- | --- |
| **확인할 결과** | 현행 규칙 정확도 45.5%, 오류 653건(D4 동시 수정 놓침 29.5%, D3 27.1%, D1 21.3% 순)
시험 3,000건 44.7% -> 93.0%(+48.3%p, 목표 10%p 달성), 같은 AAR 사례 재발 오류 49건(목표 0건 미달), 회귀 테스트 4/8 -> 8/8 |
| --- | --- |
| **도전 과제** | 구형 기록(버전 벡터 없음) 비율 8%를 0%로 바꾸면 재발 오류가 어떻게 달라지는지, 재입력(D2b) 오류를 줄일 규칙을 제안한다. |
| --- | --- |
| **제출물** | AAR 분석·재튜닝 코드, 원인 분류표, 전후 비교와 회귀 테스트, 튜닝 YAML |
| --- | --- |
**미션 10. 오프라인 동기화 야전 재고 관리 SaaS 최종 패키징 및 야전 배포 가이드 완성**
| **난이도·시간** | 최고급 · 3.5시간 |
| --- | --- |
| **진행 순서** | 1) M10 코드를 실행해 설치 스크립트 5단계 점검과 End-to-End 시나리오 4종 결과를 확인한다.
2) 자체 점검 11항목과 함수 커버리지, 매뉴얼 작성률을 읽는다.
3) 브리핑 요약의 수치와 공급망 재난 징후 후보 업체가 앞선 출력과 일치하는지 확인하고 사람이 해야 할 일을 정리한다. |
| --- | --- |
| **확인할 결과** | 설치 5/5 통과, E2E 4/4 성공(공급 중단 업체 탐지 4/4, 다른 업체 오경보 0건), 자체 점검 11/11, 커버리지 100%(15/15), 매뉴얼 7/7장
브리핑(seed 7): 반영 1,847건, 중복 거부 60건, 격리 25건, 미동기 177건, 검토 큐 6건(충돌 5, 공급 징후 1) 모두 PENDING |
| --- | --- |
| **도전 과제** | CONF의 supply_ratio_cut를 0.3에서 0.6으로 올려 공급 징후 오경보가 생기는지, 오프라인 노드가 늘면 어떻게 되는지 비교한다. |
| --- | --- |
| **제출물** | 통합 파이프라인 코드, 점검 결과 출력과 브리핑 요약 |
| --- | --- |
**4. 최종 점검표**
| **점검 항목** | **확인** |
| --- | --- |
| 미션 1~10 코드가 모두 오류 없이 실행되었다 | ( ) |
| 각 미션의 확인할 결과를 기록했다 | ( ) |
| 도전 과제 결과와 이유를 기록했다 | ( ) |
| 미달 항목(M9 재발 오류)의 원인과 개선안을 적었다 | ( ) |
| 실제 부대·업체·재고 정보를 사용하지 않았다 | ( ) |
| 충돌 병합과 보급 조치 결정을 군수관·지휘관이 하도록 설계했다 | ( ) |