최초 커밋

This commit is contained in:
KIM SU BO committed 2026-10-05 19:47:55 +09:00
1 parent a28d331e3e
commit 618ba02cb9
124 files changed
+49297 -2

No files matched your search

+887
View File
@@ -0,0 +1,887 @@
import json
path = r"d:/edunlab/milicontent2/work-pbl/DAT06.json"
with open(path, "r", encoding="utf-8") as f:
data = json.load(f)
missions = data["missions"]
# M01 guideSteps (4 steps)
missions[0]["guideSteps"] = [
{
"step": 1,
"problem": "군수 4대 결산(물자·부속·탄약·장비) 원천 데이터 항목 및 연계 구조 분석하기",
"activity": (
"<h4>이 단계의 역할</h4>"
"<p>군수 월간 결산 자동화를 성공적으로 구축하기 위해서는 물자 불출, 수리부속 소모, 탄약 정산, 장비 가동률 등 4대 핵심 분야의 원천 데이터 항목과 부대/군번/물자코드 간의 연계 구조를 명확히 이해해야 합니다.</p>"
"<h4>해야 할 일</h4>"
"<ol>"
"<li><p>물자 불출 대장, 수리부속 소모/청구 내역, 탄약 수불부, 장비 가동률 현황표의 원천 데이터 항목을 추출하고 필수 필드를 정의한다.</p></li>"
"<li><p>부대 식별자, 군수 품목 코드(NSN), 결산 일자, 수량/단가 등 공통 연계 키(Key)를 도출한다.</p></li>"
"<li><p>수작업 취합 시 누락이나 불일치가 자주 발생하는 취약 필드를 선별한다.</p></li>"
"</ol>"
"<h4>학습자가 제출해야 하는 내용</h4>"
"<ul>"
"<li><p>4대 결산 영역별 필수 데이터 필드 목록 및 데이터 타입 정의표</p></li>"
"<li><p>공통 연계 식별자 및 데이터 흐름 다이어그램</p></li>"
"</ul>"
),
"evalText": (
"<h4>PASS 기준</h4>"
"<ul>"
"<li><p>4대 결산 영역의 핵심 필드와 공통 식별자가 빠짐없이 도출되었는가?</p></li>"
"<li><p>원천 데이터 간의 상호 참조 관계가 논리적으로 타당한가?</p></li>"
"</ul>"
"<h4>보완이 필요한 경우</h4>"
"<ul>"
"<li><p>특정 결산 영역(예: 탄약 수불 또는 장비 가동률)이 누락되었거나 연계 키 정의가 모호한 경우 보완한다.</p></li>"
"</ul>"
),
"attachments": []
},
{
"step": 2,
"problem": "현행(AS-IS) 수작업 결산 프로세스 10단계 분해 및 핵심 병목 3개소 도출하기",
"activity": (
"<h4>이 단계의 역할</h4>"
"<p>현재 실무에서 이루어지는 수작업 결산 절차를 세밀하게 분해하여 오집계가 발생하거나 시간이 지연되는 병목 지점을 정확히 진단합니다.</p>"
"<h4>해야 할 일</h4>"
"<ol>"
"<li><p>예하 부대 결산 제출부터 최종 사단/군단 보고서 완성까지의 현행 업무 절차를 10단계 이상으로 분해한다.</p></li>"
"<li><p>서식 불일치 정제, 수작업 대차 계산, 이상 소모 검토 등 가장 지연이 심한 3개소 이상의 핵심 병목 구간을 도출한다.</p></li>"
"<li><p>병목 구간별 평균 소요 시간과 오류 발생 원인을 정량적으로 정리한다.</p></li>"
"</ol>"
"<h4>학습자가 제출해야 하는 내용</h4>"
"<ul>"
"<li><p>AS-IS 결산 업무 10단계 흐름도 및 단계별 소요 시간 분석</p></li>"
"<li><p>3개소 이상의 핵심 병목 구간 및 원인 분석표</p></li>"
"</ul>"
),
"evalText": (
"<h4>PASS 기준</h4>"
"<ul>"
"<li><p>업무 단계가 10단계 이상 상세히 분해되고 3개소 이상의 병목 구간이 타당한 근거와 함께 제시되었는가?</p></li>"
"</ul>"
"<h4>보완이 필요한 경우</h4>"
"<ul>"
"<li><p>업무 분해가 지나치게 포괄적이거나 병목 원인 분석이 미흡한 경우 보완한다.</p></li>"
"</ul>"
),
"attachments": []
},
{
"step": 3,
"problem": "One-click 자동화(TO-BE) 아키텍처 및 표준 입출력 인터페이스 설계하기",
"activity": (
"<h4>이 단계의 역할</h4>"
"<p>식별된 병목을 해소하기 위해 데이터 수집부터 검증, 통계 산출, 이상치 감지, HITL 승인 연계로 이어지는 자동화 파이프라인의 청사진을 수립합니다.</p>"
"<h4>해야 할 일</h4>"
"<ol>"
"<li><p>수작업 개입을 최소화하는 One-click 자동화 파이프라인 모듈 구성을 설계한다.</p></li>"
"<li><p>각 모듈 간 주고받을 표준 입출력 데이터 스키마(JSON/DataFrame 규격)를 정의한다.</p></li>"
"<li><p>보안 및 권한 통제 기준을 반영한 데이터 접근 정책을 수립한다.</p></li>"
"</ol>"
"<h4>학습자가 제출해야 하는 내용</h4>"
"<ul>"
"<li><p>TO-BE 자동화 아키텍처 블록 다이어그램</p></li>"
"<li><p>모듈별 표준 입출력 데이터 인터페이스 명세서</p></li>"
"</ul>"
),
"evalText": (
"<h4>PASS 기준</h4>"
"<ul>"
"<li><p>전체 자동화 흐름이 단절 없이 연결되고 표준 입출력 규격이 명확히 정의되었는가?</p></li>"
"</ul>"
"<h4>보완이 필요한 경우</h4>"
"<ul>"
"<li><p>모듈 간 데이터 연계 방식이 불명확하거나 필수 인터페이스가 누락된 경우 보완한다.</p></li>"
"</ul>"
),
"attachments": []
},
{
"step": 4,
"problem": "AS-IS / TO-BE 결산 업무 정의서(`docs/dat06_as_is_to_be_spec.md`) 작성 및 검증하기",
"activity": (
"<h4>이 단계의 역할</h4>"
"<p>앞 단계에서 도출된 데이터 스키마, AS-IS 분석, TO-BE 아키텍처를 종합하여 실무 개발의 기준 문서인 명세서를 최종 완성합니다.</p>"
"<h4>해야 할 일</h4>"
"<ol>"
"<li><p>1~3단계의 분석 결과를 구조화된 마크다운 문서로 작성한다.</p></li>"
"<li><p>실무 프로세스와의 부합성을 자체 검증 체크리스트로 확인한다.</p></li>"
"<li><p>`docs/dat06_as_is_to_be_spec.md` 경로에 저장하고 문서 완성도를 점검한다.</p></li>"
"</ol>"
"<h4>학습자가 제출해야 하는 내용</h4>"
"<ul>"
"<li><p>완성된 `docs/dat06_as_is_to_be_spec.md` 파일</p></li>"
"<li><p>실무 일치성 자체 검증 결과서</p></li>"
"</ul>"
),
"evalText": (
"<h4>PASS 기준</h4>"
"<ul>"
"<li><p>지정된 산출물 경로에 명세서가 정상 생성되었으며 요구 규격을 100% 충족하였는가?</p></li>"
"</ul>"
"<h4>보완이 필요한 상태</h4>"
"<ul>"
"<li><p>산출물 파일이 누락되었거나 내용이 미완성인 경우 문서를 보완하여 재작성한다.</p></li>"
"</ul>"
),
"attachments": []
}
]
# M02 guideSteps (3 steps)
missions[1]["guideSteps"] = [
{
"step": 1,
"problem": "비표준 이기종 엑셀 및 CSV 서식의 테이블 구조 자동 인식 파서 구현하기",
"activity": (
"<h4>이 단계의 역할</h4>"
"<p>부대별로 서로 다른 양식(헤더 위치 상이, 셀 병합, 다양한 인코딩 등)의 결산 문서를 사람의 수작업 없이 자동으로 인식하고 로드하는 파서를 개발합니다.</p>"
"<h4>해야 할 일</h4>"
"<ol>"
"<li><p>다양한 샘플 엑셀 파일에서 헤더 행의 위치를 동적으로 탐색하는 로직을 작성한다.</p></li>"
"<li><p>병합된 셀의 값을 적절히 전파(Forward-fill)하고 비정형 공백을 정리한다.</p></li>"
"<li><p>CSV 파일의 인코딩(UTF-8, CP949 등)을 자동 감지하여 오류 없이 로드한다.</p></li>"
"</ol>"
"<h4>학습자가 제출해야 하는 내용</h4>"
"<ul>"
"<li><p>서식 자동 탐색 및 파싱 함수 코드</p></li>"
"<li><p>샘플 파일 대상 파싱 성공 결과 로그</p></li>"
"</ul>"
),
"evalText": (
"<h4>PASS 기준</h4>"
"<ul>"
"<li><p>제공된 모든 샘플 파일 포맷(CSV, Excel)에서 파싱 성공률 100%를 달성하였는가?</p></li>"
"</ul>"
"<h4>보완이 필요한 경우</h4>"
"<ul>"
"<li><p>헤더 위치 불일치나 인코딩 오류로 파싱이 실패하는 케이스를 보완한다.</p></li>"
"</ul>"
),
"attachments": []
},
{
"step": 2,
"problem": "결측치 필터링, 포맷 교정 및 데이터 정합성 검증 로직 개발하기",
"activity": (
"<h4>이 단계의 역할</h4>"
"<p>파싱된 원천 데이터에 포함된 타입 오류, 특수문자, 결측치를 정제하고 표준 스키마에 맞게 교정합니다.</p>"
"<h4>해야 할 일</h4>"
"<ol>"
"<li><p>물자 코드, 수량, 금액, 날짜 필드의 결측치 및 비정상 문자열을 검증한다.</p></li>"
"<li><p>음수 수량, 유효하지 않은 부대 코드 등 업무 논리적 오류를 식별하여 필터링/보정한다.</p></li>"
"<li><p>전처리 전후 데이터 건수 및 정제율 통계를 산출한다.</p></li>"
"</ol>"
"<h4>학습자가 제출해야 하는 내용</h4>"
"<ul>"
"<li><p>데이터 유효성 검증 및 정제 규칙 함수</p></li>"
"<li><p>결측치 및 이상값 처리 전후 비교 통계표</p></li>"
"</ul>"
),
"evalText": (
"<h4>PASS 기준</h4>"
"<ul>"
"<li><p>정합성 검증 규칙이 엄격히 적용되어 전처리 오류율 0%를 만족하는가?</p></li>"
"</ul>"
"<h4>보완이 필요한 경우</h4>"
"<ul>"
"<li><p>비정상 입력값에 대한 예외 처리가 누락된 경우 정제 로직을 보강한다.</p></li>"
"</ul>"
),
"attachments": []
},
{
"step": 3,
"problem": "데이터 로더 파이프라인(`src/connectors/dat06_data_loader.py`) 완성 및 단위 테스트하기",
"activity": (
"<h4>이 단계의 역할</h4>"
"<p>파서와 전처리 로직을 단일 커넥터 모듈로 완성하고 자동화된 단위 테스트를 통해 신뢰성을 검증합니다.</p>"
"<h4>해야 할 일</h4>"
"<ol>"
"<li><p>`src/connectors/dat06_data_loader.py`에 표준 스키마 데이터프레임을 반환하는 클래스를 구현한다.</p></li>"
"<li><p>pytest를 활용하여 다양한 예외 상황을 포함한 단위 테스트 케이스를 작성하고 실행한다.</p></li>"
"<li><p>데이터 로더 모듈의 스키마 명세를 문서화한다.</p></li>"
"</ol>"
"<h4>학습자가 제출해야 하는 내용</h4>"
"<ul>"
"<li><p>완성된 `src/connectors/dat06_data_loader.py` 파일</p></li>"
"<li><p>단위 테스트 실행 결과 및 스키마 정의서</p></li>"
"</ul>"
),
"evalText": (
"<h4>PASS 기준</h4>"
"<ul>"
"<li><p>데이터 로더 단위 테스트 100% 통과 및 지정된 경로에 산출물이 생성되었는가?</p></li>"
"</ul>"
"<h4>보완이 필요한 경우</h4>"
"<ul>"
"<li><p>단위 테스트 실패 항목을 디버깅하고 코드를 수정한다.</p></li>"
"</ul>"
),
"attachments": []
}
]
# M03 guideSteps (3 steps)
missions[2]["guideSteps"] = [
{
"step": 1,
"problem": "군수 규정 및 지침 기반 15종 표준 결산 룰셋 정의하기",
"activity": (
"<h4>이 단계의 역할</h4>"
"<p>물자 불출, 수리부속 소모, 탄약 정산, 장비 가동률 등 군수 관련 규정 및 회계 기준에 명시된 정산 수식을 엄격히 분석하여 룰셋으로 정형화합니다.</p>"
"<h4>해야 할 일</h4>"
"<ol>"
"<li><p>물자별 소모 한도 및 불출 집계 수식을 수립한다.</p></li>"
"<li><p>탄약 불출/소모/반납 정산 및 수리부속 정비비용 산정식을 정의한다.</p></li>"
"<li><p>장비 가동률(가동 장비수 / 인가 장비수) 산출 공식을 포함하여 총 15종 이상의 업무 룰을 명세화한다.</p></li>"
"</ol>"
"<h4>학습자가 제출해야 하는 내용</h4>"
"<ul>"
"<li><p>15종 이상의 표준 결산 룰 명세서(룰 ID, 입력 필드, 연산 공식, 조건식)</p></li>"
"</ul>"
),
"evalText": (
"<h4>PASS 기준</h4>"
"<ul>"
"<li><p>군 규정 및 지침 조항과 완벽히 부합하는 15종 이상의 결산 룰이 명세화되었는가?</p></li>"
"</ul>"
),
"attachments": []
},
{
"step": 2,
"problem": "50ms 이하 고속 집계 및 통계 산출 Baseline 엔진 구현하기",
"activity": (
"<h4>이 단계의 역할</h4>"
"<p>정의된 15종 룰셋을 효율적인 알고리즘으로 코딩하여 대량의 결산 데이터를 50ms 이내에 초고속으로 집계·산출하는 엔진을 구현합니다.</p>"
"<h4>해야 할 일</h4>"
"<ol>"
"<li><p>벡터화 연산(Vectorized Operation)을 적용하여 대량 데이터 집계 성능을 극대화한다.</p></li>"
"<li><p>부대별/품목별 월간 결산 요약 통계 지표를 일괄 산출하는 파이프라인을 코딩한다.</p></li>"
"<li><p>룰 처리 소요 시간을 측정하여 50ms 이하 기준을 만족하는지 확인한다.</p></li>"
"</ol>"
"<h4>학습자가 제출해야 하는 내용</h4>"
"<ul>"
"<li><p>Baseline 룰 연산 엔진 소스 코드</p></li>"
"<li><p>처리 지연시간(ms) 및 벤치마크 측정 결과서</p></li>"
"</ul>"
),
"evalText": (
"<h4>PASS 기준</h4>"
"<ul>"
"<li><p>모든 룰 연산이 정확하게 수행되며 룰 처리 지연시간이 50ms 이하인가?</p></li>"
"</ul>"
),
"attachments": []
},
{
"step": 3,
"problem": "설정 분리 아키텍처(YAML/JSON) 적용 및 `src/engine/dat06_rule_engine.py` 단위 테스트하기",
"activity": (
"<h4>이 단계의 역할</h4>"
"<p>군수 규정 변경 시 코드 수정 없이 룰을 즉시 갱신할 수 있도록 설정을 분리하고 경계값 단위 테스트를 완수합니다.</p>"
"<h4>해야 할 일</h4>"
"<ol>"
"<li><p>룰 파라미터와 임계값을 외부 설정 파일(YAML/JSON)로 분리하고 로더를 연동한다.</p></li>"
"<li><p>0값, 음수, 극단적 수치 등 경계 조건(Boundary condition)에 대한 룰 판정 단위 테스트를 작성한다.</p></li>"
"<li><p>`src/engine/dat06_rule_engine.py` 산출물을 완성하고 100% 테스트 통과를 검증한다.</p></li>"
"</ol>"
"<h4>학습자가 제출해야 하는 내용</h4>"
"<ul>"
"<li><p>완성된 `src/engine/dat06_rule_engine.py` 파일 및 외부 룰 설정 파일</p></li>"
"<li><p>경계 조건 단위 테스트 100% 통과 결과 로그</p></li>"
"</ul>"
),
"evalText": (
"<h4>PASS 기준</h4>"
"<ul>"
"<li><p>설정 파일 변경만으로 룰이 정상 갱신되며 단위 테스트 100% 통과하였는가?</p></li>"
"</ul>"
),
"attachments": []
}
]
# M04 guideSteps (3 steps)
missions[3]["guideSteps"] = [
{
"step": 1,
"problem": "시계열 소비 패턴 및 Z-Score/이동평균 기반 이상치 자동 탐지 알고리즘 구현하기",
"activity": (
"<h4>이 단계의 역할</h4>"
"<p>과거 시계열 소모 이력과 부대별 평균 기준선을 바탕으로 전월 대비 급증·급감 소모 및 이상 징후를 통계적으로 자동 식별합니다.</p>"
"<h4>해야 할 일</h4>"
"<ol>"
"<li><p>부대별·물자별 과거 3~6개월 소비 데이터의 이동평균(MA) 및 표준편차를 계산한다.</p></li>"
"<li><p>Z-Score 및 IQR(사분위수 범위) 기반으로 임계치를 초과하는 급증 소모 항목을 자동 추출한다.</p></li>"
"<li><p>오탐률을 낮추기 위한 동적 이상치 스코어링 수식을 적용한다.</p></li>"
"</ol>"
"<h4>학습자가 제출해야 하는 내용</h4>"
"<ul>"
"<li><p>시계열 이상치 탐지 알고리즘 코드</p></li>"
"<li><p>이상치 판정 임계값 설정 및 탐지 결과 리포트</p></li>"
"</ul>"
),
"evalText": (
"<h4>PASS 기준</h4>"
"<ul>"
"<li><p>전월 대비 급증 항목 및 이상 소모가 누락 없이 100% 감지되는가?</p></li>"
"</ul>"
),
"attachments": []
},
{
"step": 2,
"problem": "정황 데이터(훈련/정비 일정) 결합 원인 요약 및 조치 방안(Top-3) 추천 모델링하기",
"activity": (
"<h4>이 단계의 역할</h4>"
"<p>탐지된 이상 항목에 야전 훈련 일정, 장비 정비 이력 등 맥락 데이터를 결합하여 이상 원인을 자동 분류하고 실무 조치 가이드를 추천합니다.</p>"
"<h4>해야 할 일</h4>"
"<ol>"
"<li><p>훈련 일정 데이터와 급증 항목을 매핑하여 정당한 사유(야외 기동훈련 등)와 비인가 의심 사례를 분류한다.</p></li>"
"<li><p>유사도 기반 알고리즘을 활용하여 실무자가 즉시 적용 가능한 조치 방안 Top-3를 생성한다.</p></li>"
"<li><p>추천 사유(Rationale)를 명확한 문장으로 자동 요약하는 텍스트 생성 로직을 개발한다.</p></li>"
"</ol>"
"<h4>학습자가 제출해야 하는 내용</h4>"
"<ul>"
"<li><p>정황 데이터 매핑 및 원인 분류 모델 코드</p></li>"
"<li><p>이상 항목별 Top-3 추천 결과 및 추천 사유 요약문 샘플</p></li>"
"</ul>"
),
"evalText": (
"<h4>PASS 기준</h4>"
"<ul>"
"<li><p>원인 분류 및 추천 사유가 군수 실무적으로 타당하고 설명 가능한가?</p></li>"
"</ul>"
),
"attachments": []
},
{
"step": 3,
"problem": "AI 추론 모듈(`src/ai/dat06_intelligence_module.py`) 완성 및 벤치마크 검증하기",
"activity": (
"<h4>이 단계의 역할</h4>"
"<p>이상 탐지 및 추천 엔진을 통합 모듈로 완성하고 과거 승인 데이터셋을 대상으로 85% 이상의 정확도를 검증합니다.</p>"
"<h4>해야 할 일</h4>"
"<ol>"
"<li><p>`src/ai/dat06_intelligence_module.py`에 이상치 감지 및 추천 파이프라인을 클래스로 구현한다.</p></li>"
"<li><p>과거 승인/처리 완료된 결산 데이터셋 벤치마크 테스트를 수행한다.</p></li>"
"<li><p>추천/분류 정확도 85% 이상 달성 여부를 확인하고 성능 지표를 산출한다.</p></li>"
"</ol>"
"<h4>학습자가 제출해야 하는 내용</h4>"
"<ul>"
"<li><p>완성된 `src/ai/dat06_intelligence_module.py` 파일</p></li>"
"<li><p>과거 데이터 대상 벤치마크 성능 평가서(정확도 85% 이상 증빙)</p></li>"
"</ul>"
),
"evalText": (
"<h4>PASS 기준</h4>"
"<ul>"
"<li><p>추천/분류 정확도 85% 이상 달성 및 지정된 경로에 산출물이 생성되었는가?</p></li>"
"</ul>"
),
"attachments": []
}
]
# M05 guideSteps (3 steps)
missions[4]["guideSteps"] = [
{
"step": 1,
"problem": "복식부기 및 국방 회계 원칙 기반 대차/수불 일관성 검증 로직 구현하기",
"activity": (
"<h4>이 단계의 역할</h4>"
"<p>산출된 군수 결산 수치에 대해 기초재고 + 입고 - 출고 = 기말재고의 수불 정합성과 대차 일관성을 엄격히 자동 검증합니다.</p>"
"<h4>해야 할 일</h4>"
"<ol>"
"<li><p>물자 및 부속 수불부의 기초, 입고, 출고, 기말 재고 간 수량 및 금액 일치성을 계산하는 수식을 작성한다.</p></li>"
"<li><p>부대별 예산 배정액 대비 집행 누계액 초과 여부를 자동 검사한다.</p></li>"
"<li><p>대차 불일치나 재고 오차가 발생한 항목의 원인 필드를 역추적(Traceback)하는 기능을 구현한다.</p></li>"
"</ol>"
"<h4>학습자가 제출해야 하는 내용</h4>"
"<ul>"
"<li><p>회계 대차 일관성 및 재고 수불 검증 로직 코드</p></li>"
"<li><p>불일치 사례 역추적 테스트 결과 보고서</p></li>"
"</ul>"
),
"evalText": (
"<h4>PASS 기준</h4>"
"<ul>"
"<li><p>회계적 일관성 검증 수식이 수학적/실무적으로 정확하며 불일치 항목을 100% 포착하는가?</p></li>"
"</ul>"
),
"attachments": []
},
{
"step": 2,
"problem": "다차원 신뢰도 점수 산출 및 안전 실패(Fail-safe) 에러 핸들러 구현하기",
"activity": (
"<h4>이 단계의 역할</h4>"
"<p>데이터의 완전성, 룰 부합성, 이상치 분석을 결합하여 신뢰도 점수를 산출하고 비정상 데이터 입력 시에도 무중단 안전 실패를 보장합니다.</p>"
"<h4>해야 할 일</h4>"
"<ol>"
"<li><p>데이터 완전성(Completeness), 일관성(Consistency), 타당성(Validity)을 가중 합산하는 신뢰도 점수(0~100점) 산출 엔진을 개발한다.</p></li>"
"<li><p>비정상 데이터(결측치, 극단치, 손상된 포맷) 주입 시 크래시 없이 안전하게 에러를 포착하는 핸들러를 구축한다.</p></li>"
"<li><p>모든 예외 상황 발생 시 100% 에러 감사 로그를 기록하도록 연동한다.</p></li>"
"</ol>"
"<h4>학습자가 제출해야 하는 내용</h4>"
"<ul>"
"<li><p>신뢰도 점수 산출 알고리즘 및 에러 핸들러 코드</p></li>"
"<li><p>예외 주입 시 크래시 0건 및 에러 로그 기록 증빙</p></li>"
"</ul>"
),
"evalText": (
"<h4>PASS 기준</h4>"
"<ul>"
"<li><p>예외 주입 시 시스템 크래시 0건 및 에러 로그 기록률 100%를 달성하였는가?</p></li>"
"</ul>"
),
"attachments": []
},
{
"step": 3,
"problem": "검증 모듈(`src/utils/dat06_validator.py`) 완성 및 예외 10종 스트레스 검증하기",
"activity": (
"<h4>이 단계의 역할</h4>"
"<p>검증기와 감사 로깅 모듈을 완성하고 10종의 비정상 데이터 주입 스트레스 테스트를 통해 견고성을 최종 검증합니다.</p>"
"<h4>해야 할 일</h4>"
"<ol>"
"<li><p>`src/utils/dat06_validator.py`에 검증 및 로깅 통합 클래스를 완성한다.</p></li>"
"<li><p>10종의 예외 시나리오(특수문자, 대용량 결손, 타임아웃 등)를 작성하고 스트레스 테스트를 수행한다.</p></li>"
"<li><p>생성된 감사 로그 파일의 무결성과 알기 쉬운 에러 메시지 제공 여부를 확인한다.</p></li>"
"</ol>"
"<h4>학습자가 제출해야 하는 내용</h4>"
"<ul>"
"<li><p>완성된 `src/utils/dat06_validator.py` 파일</p></li>"
"<li><p>예외 주입 테스트 10종 통과 결과서 및 감사 로그 파일</p></li>"
"</ul>"
),
"evalText": (
"<h4>PASS 기준</h4>"
"<ul>"
"<li><p>예외 주입 테스트 10종 통과 및 감사 로그 파일 생성이 완료되었는가?</p></li>"
"</ul>"
),
"attachments": []
}
]
# M06 guideSteps (3 steps)
missions[5]["guideSteps"] = [
{
"step": 1,
"problem": "군수 결산 대시보드 핵심 인터랙티브 화면 4종 레이아웃 및 뷰 구현하기",
"activity": (
"<h4>이 단계의 역할</h4>"
"<p>군수 실무자가 직관적으로 업무를 수행할 수 있도록 4종의 핵심 화면(데이터 입력·취합, 결산 통계 분석, 이상치 상세 검토, 최종 보고서 및 결재)을 개발합니다.</p>"
"<h4>해야 할 일</h4>"
"<ol>"
"<li><p>결산 파일 드래그앤드롭 업로드 및 취합 상태를 보여주는 1화면을 구성한다.</p></li>"
"<li><p>월간 결산 집계 통계와 주요 지표를 보여주는 2화면(분석 대시보드)을 제작한다.</p></li>"
"<li><p>AI 이상 탐지 결과 및 추천 가이드를 확인하는 3화면(이상치 검토)을 구현한다.</p></li>"
"<li><p>최종 보고서 미리보기 및 결재 상신 버튼을 갖춘 4화면(보고서 뷰어)을 완성한다.</p></li>"
"</ol>"
"<h4>학습자가 제출해야 하는 내용</h4>"
"<ul>"
"<li><p>핵심 화면 4종의 UI 레이아웃 및 뷰 소스 코드</p></li>"
"<li><p>화면별 구동 스크린샷</p></li>"
"</ul>"
),
"evalText": (
"<h4>PASS 기준</h4>"
"<ul>"
"<li><p>핵심 화면 4종(입력-분석-검토-결과)이 누락 없이 구현되고 정상 동작하는가?</p></li>"
"</ul>"
),
"attachments": []
},
{
"step": 2,
"problem": "실시간 시각화 차트 및 승인 상태별(대기, 승인, 반려) 필터링 기능 연동하기",
"activity": (
"<h4>이 단계의 역할</h4>"
"<p>결산 데이터를 시각적으로 쉽게 분석할 수 있도록 대화형 차트와 다차원 필터링 및 상태 뱃지 인터랙션을 구현합니다.</p>"
"<h4>해야 할 일</h4>"
"<ol>"
"<li><p>물자/부속 소모 추이 시계열 차트와 장비 가동률 게이지 컴포넌트를 연동한다.</p></li>"
"<li><p>부대별, 결산 항목별, 승인 상태별(승인대기, 반려, 완료) 동적 필터링 기능을 개발한다.</p></li>"
"<li><p>상태별 색상 뱃지(Badge)를 적용하여 시인성을 극대화한다.</p></li>"
"</ol>"
"<h4>학습자가 제출해야 하는 내용</h4>"
"<ul>"
"<li><p>시각화 차트 및 필터링 컴포넌트 코드</p></li>"
"<li><p>동적 필터 조작에 따른 데이터 갱신 시연 결과</p></li>"
"</ul>"
),
"evalText": (
"<h4>PASS 기준</h4>"
"<ul>"
"<li><p>군 실무자 관점에서 직관적이고 편의성 높은 시각화 및 필터링이 구현되었는가?</p></li>"
"</ul>"
),
"attachments": []
},
{
"step": 3,
"problem": "One-click 보고서 렌더링 연동 및 `src/ui/dat06_app.py` 로컬 구동 테스트하기",
"activity": (
"<h4>이 단계의 역할</h4>"
"<p>단추 클릭 한 번으로 군 표준 결산 보고서를 생성·다운로드하는 기능을 완성하고 전체 웹 UI를 통합 검증합니다.</p>"
"<h4>해야 할 일</h4>"
"<ol>"
"<li><p>표준 군수 결산 보고서 양식에 맞춘 HTML/PDF/Excel 렌더링 엔진을 연동한다.</p></li>"
"<li><p>`src/ui/dat06_app.py` 애플리케이션을 로컬 서버로 구동한다.</p></li>"
"<li><p>전체 페이지 네비게이션 및 UX Walkthrough 테스트를 완료한다.</p></li>"
"</ol>"
"<h4>학습자가 제출해야 하는 내용</h4>"
"<ul>"
"<li><p>완성된 `src/ui/dat06_app.py` 파일</p></li>"
"<li><p>One-click 생성된 결산 보고서 샘플 파일 및 UI 구동 확인서</p></li>"
"</ul>"
),
"evalText": (
"<h4>PASS 기준</h4>"
"<ul>"
"<li><p>UI 프로토타입 로컬 서버 구동 및 전체 페이지 네비게이션이 오류 없이 확인되었는가?</p></li>"
"</ul>"
),
"attachments": []
}
]
# M07 guideSteps (3 steps)
missions[6]["guideSteps"] = [
{
"step": 1,
"problem": "실무 담당관 → 보급관 → 군수과장 3단계 HITL 전자 결재 워크플로우 엔진 구현하기",
"activity": (
"<h4>이 단계의 역할</h4>"
"<p>자동 생성된 결산 보고서가 임의로 발간되지 않도록 담당관 기안부터 보급관 1차 검토, 군수과장 최종 결재로 이어지는 3단계 승인 파이프라인을 설계합니다.</p>"
"<h4>해야 할 일</h4>"
"<ol>"
"<li><p>결재 문서의 상태 머신(State Machine: 작성중 -> 검토대기 -> 결재대기 -> 최종승인 / 반려)을 코딩한다.</p></li>"
"<li><p>각 단계별 승인 시 전자 서명 해시 및 타임스탬프를 생성하여 결재 데이터에 첨부한다.</p></li>"
"<li><p>다음 승인권자에게 작업이 자동 전달되는 순차 파이프라인을 구현한다.</p></li>"
"</ol>"
"<h4>학습자가 제출해야 하는 내용</h4>"
"<ul>"
"<li><p>3단계 결재선 상태 머신 및 승인 엔진 소스 코드</p></li>"
"<li><p>단계별 승인 진행 상태 전이 다이어그램</p></li>"
"</ul>"
),
"evalText": (
"<h4>PASS 기준</h4>"
"<ul>"
"<li><p>3단계 순차 승인 상태 전이가 군 행정 절차에 부합하게 정확히 동작하는가?</p></li>"
"</ul>"
),
"attachments": []
},
{
"step": 2,
"problem": "역할 기반 접근 제어(RBAC) 및 비인가 권한 우회 차단 로직 개발하기",
"activity": (
"<h4>이 단계의 역할</h4>"
"<p>계급 및 직책에 따른 접근 권한(조회, 수정, 승인, 반려)을 철저히 분리하여 비인가자의 승인 조작을 원천 차단합니다.</p>"
"<h4>해야 할 일</h4>"
"<ol>"
"<li><p>사용자 역할(담당자, 보급관, 군수과장, 관리자)별 권한 매트릭스를 정의한다.</p></li>"
"<li><p>승인 API 호출 시 호출자의 세션과 권한을 검증하여 비인가 권한 우회 시도를 100% 차단한다.</p></li>"
"<li><p>비인가 접근 시도 시 즉각 차단하고 보안 감사 로그를 기록한다.</p></li>"
"</ol>"
"<h4>학습자가 제출해야 하는 내용</h4>"
"<ul>"
"<li><p>RBAC 권한 검증 미들웨어 및 데코레이터 코드</p></li>"
"<li><p>비인가 권한 우회 시도 차단 테스트 결과(차단율 100% 증빙)</p></li>"
"</ul>"
),
"evalText": (
"<h4>PASS 기준</h4>"
"<ul>"
"<li><p>승인 권한 우회 시도 차단율 100% 및 이력 기록 무결성을 달성하였는가?</p></li>"
"</ul>"
),
"attachments": []
},
{
"step": 3,
"problem": "반려 사유 피드백, 재기안 워크플로우(`src/workflow/dat06_approval_system.py`) 완성 및 시뮬레이션하기",
"activity": (
"<h4>이 단계의 역할</h4>"
"<p>반려 시 구체적인 사유를 입력하고 보정 데이터를 반영하여 다시 기안하는 순환 워크플로우를 완성하고 전체 결재 시스템을 검증합니다.</p>"
"<h4>해야 할 일</h4>"
"<ol>"
"<li><p>반려 시 필수 사유 입력 폼과 수정 요청 사항 피드백 로직을 구현한다.</p></li>"
"<li><p>반려된 문서의 버전 관리 및 재기안(Re-submit) 워크플로우를 연동한다.</p></li>"
"<li><p>`src/workflow/dat06_approval_system.py`를 완성하고 승인·반려·재기안 전체 시뮬레이션을 수행한다.</p></li>"
"</ol>"
"<h4>학습자가 제출해야 하는 내용</h4>"
"<ul>"
"<li><p>완성된 `src/workflow/dat06_approval_system.py` 파일</p></li>"
"<li><p>결재선 승인/반려 시뮬레이션 및 이력 조회 실행 로그</p></li>"
"</ul>"
),
"evalText": (
"<h4>PASS 기준</h4>"
"<ul>"
"<li><p>결재선 승인/반려 시뮬레이션 및 이력 조회 화면 구현이 완료되었는가?</p></li>"
"</ul>"
),
"attachments": []
}
]
# M08 guideSteps (3 steps)
missions[7]["guideSteps"] = [
{
"step": 1,
"problem": "멀티프로세싱/비동기 기반 다수 부대 병렬 결산 배치 러너 구현하기",
"activity": (
"<h4>이 단계의 역할</h4>"
"<p>수십 개 예하 부대의 방대한 결산 원천 데이터를 일괄 수집하고 병렬로 파싱·집계·보고서 생성까지 연속 수행하는 배치 실행기를 개발합니다.</p>"
"<h4>해야 할 일</h4>"
"<ol>"
"<li><p>Python 멀티프로세싱 또는 비동기 I/O를 활용하여 부대별 결산 작업을 병렬 큐(Queue)로 분배한다.</p></li>"
"<li><p>개별 부대 처리 실패 시 전체 배치가 중단되지 않는 결함 격리(Fault Isolation) 로직을 적용한다.</p></li>"
"<li><p>처리 결과를 일괄 취합하여 사단급 총괄 결산 요약표를 자동 렌더링한다.</p></li>"
"</ol>"
"<h4>학습자가 제출해야 하는 내용</h4>"
"<ul>"
"<li><p>병렬 배치 처리 실행기 코어 소스 코드</p></li>"
"<li><p>다수 부대 일괄 처리 흐름도</p></li>"
"</ul>"
),
"evalText": (
"<h4>PASS 기준</h4>"
"<ul>"
"<li><p>수십 개 부대 결산 데이터가 병렬로 오류 없이 일괄 처리되는가?</p></li>"
"</ul>"
),
"attachments": []
},
{
"step": 2,
"problem": "스케줄러 연동, 실시간 진행률(Progress Bar) 표시 및 자동 알림 연동하기",
"activity": (
"<h4>이 단계의 역할</h4>"
"<p>정기 결산 일시에 맞추어 배치를 자동 실행하는 스케줄러와 실시간 진행률 및 완료 알림 기능을 구현합니다.</p>"
"<h4>해야 할 일</h4>"
"<ol>"
"<li><p>스케줄러(cron 또는 스케줄링 라이브러리)를 연동하여 매월 정기 자동 실행을 구성한다.</p></li>"
"<li><p>대시보드 및 CLI 상에 실시간 작업 진행률(0~100%)과 완료 예상 시간을 표시한다.</p></li>"
"<li><p>배치 완료 또는 실패 시 실무자에게 즉각 알림(이메일/웹훅/로그)을 발송하도록 연동한다.</p></li>"
"</ol>"
"<h4>학습자가 제출해야 하는 내용</h4>"
"<ul>"
"<li><p>스케줄러 설정 및 진행률/알림 연동 모듈 코드</p></li>"
"<li><p>스케줄러 자동 트리거 및 진행률 표시 실행 화면</p></li>"
"</ul>"
),
"evalText": (
"<h4>PASS 기준</h4>"
"<ul>"
"<li><p>스케줄러 연동 테스트 및 자동 실행 확인이 정상 완료되었는가?</p></li>"
"</ul>"
),
"attachments": []
},
{
"step": 3,
"problem": "1년치 데이터 투입 스트레스 테스트 수행 및 `src/pipeline/dat06_batch_runner.py` 완성하기",
"activity": (
"<h4>이 단계의 역할</h4>"
"<p>실제 1년치 대용량 결산 데이터를 가상 투입하는 극한의 스트레스 테스트를 통해 5분 이내 처리 및 99% 이상 자동화 성공률을 검증합니다.</p>"
"<h4>해야 할 일</h4>"
"<ol>"
"<li><p>수십 개 부대의 1년치(12개월) 군수 데이터셋을 가상 생성하여 배치에 투입한다.</p></li>"
"<li><p>전체 처리 시간, CPU/메모리 점유율, 자동화 성공률을 정밀 측정한다.</p></li>"
"<li><p>`src/pipeline/dat06_batch_runner.py`를 완성하고 수작업 대비 80% 이상의 시간 절감 효과를 산출한다.</p></li>"
"</ol>"
"<h4>학습자가 제출해야 하는 내용</h4>"
"<ul>"
"<li><p>완성된 `src/pipeline/dat06_batch_runner.py` 파일</p></li>"
"<li><p>스트레스 테스트 결과 벤치마크 리포트(처리 시간 5분 이내, 성공률 99% 이상 증빙)</p></li>"
"</ul>"
),
"evalText": (
"<h4>PASS 기준</h4>"
"<ul>"
"<li><p>전체 배치 실행 시간 5분 이내, 자동화 성공률 99% 이상, 수작업 대비 80% 시간 절감을 달성하였는가?</p></li>"
"</ul>"
),
"attachments": []
}
]
# M09 guideSteps (3 steps)
missions[8]["guideSteps"] = [
{
"step": 1,
"problem": "UAT(사용자 수용성 테스트) 시나리오 수행 및 오집계/예외 사례 AAR 분석하기",
"activity": (
"<h4>이 단계의 역할</h4>"
"<p>실무 시나리오 기반 UAT를 통해 현장 운용 시 발생할 수 있는 오집계, 비정형 서식 충돌 사례를 사후검토(AAR) 기법으로 정밀 분석합니다.</p>"
"<h4>해야 할 일</h4>"
"<ol>"
"<li><p>실제 결산 담당관, 보급관 페르소나를 적용한 UAT 시나리오 10종을 실행한다.</p></li>"
"<li><p>수치 불일치, 템플릿 깨짐, 조작 불편 등 발견된 오류 사례를 수집한다.</p></li>"
"<li><p>AAR(계획된 목표 vs 실제 결과 vs 차이 원인 vs 교훈) 4단계 분석표를 작성한다.</p></li>"
"</ol>"
"<h4>학습자가 제출해야 하는 내용</h4>"
"<ul>"
"<li><p>UAT 시나리오 실행 결과표 및 발견된 결함 목록</p></li>"
"<li><p>AAR 기반 원인 분석 및 교훈 정리서</p></li>"
"</ul>"
),
"evalText": (
"<h4>PASS 기준</h4>"
"<ul>"
"<li><p>UAT 결함 사례에 대해 AAR 방법론을 적용한 심층 분석이 타당하게 수행되었는가?</p></li>"
"</ul>"
),
"attachments": []
},
{
"step": 2,
"problem": "결산 룰셋 파라미터 보정 및 실무자 개선 요구 5건 이상 반영 패치하기",
"activity": (
"<h4>이 단계의 역할</h4>"
"<p>AAR에서 도출된 취약점을 해소하기 위해 룰 엔진 파라미터를 보정하고 실무 편의 개선 요구사항 5건을 시스템에 패치합니다.</p>"
"<h4>해야 할 일</h4>"
"<ol>"
"<li><p>오집계를 유발한 룰 엔진의 경계값 및 연산 파라미터를 수정·패치한다.</p></li>"
"<li><p>실무자 피드백(단축키 지원, 자주 쓰는 템플릿 저장, 보고서 서식 미세 조정 등) 5건 이상을 UI 및 엔진에 반영한다.</p></li>"
"<li><p>수정 사항에 대한 회귀 테스트를 수행하여 기존 기능이 정상 동작하는지 확인한다.</p></li>"
"</ol>"
"<h4>학습자가 제출해야 하는 내용</h4>"
"<ul>"
"<li><p>룰셋 및 템플릿 보정 패치 코드(Diff 또는 패치 로그)</p></li>"
"<li><p>개선 요구 5건 반영 내역 및 회귀 테스트 결과서</p></li>"
"</ul>"
),
"evalText": (
"<h4>PASS 기준</h4>"
"<ul>"
"<li><p>개선 요구사항 5건 이상이 정상 반영되고 회귀 오류가 없는가?</p></li>"
"</ul>"
),
"attachments": []
},
{
"step": 3,
"problem": "UAT 결과 보고서(`docs/dat06_uat_feedback_report.md`) 작성 및 최종 검수 완료하기",
"activity": (
"<h4>이 단계의 역할</h4>"
"<p>개선된 시스템에 대해 최종 UAT 검수를 진행하고 만족도 90점 이상을 달성한 결과 보고서를 완성합니다.</p>"
"<h4>해야 할 일</h4>"
"<ol>"
"<li><p>패치 완료된 시스템을 대상으로 최종 사용자 수용성 테스트를 재실시한다.</p></li>"
"<li><p>실무 만족도 설문 및 평가 지표(90점 이상 달성)를 취합한다.</p></li>"
"<li><p>`docs/dat06_uat_feedback_report.md`에 AAR 분석, 패치 내역, UAT 최종 결과를 정리하여 저장한다.</p></li>"
"</ol>"
"<h4>학습자가 제출해야 하는 내용</h4>"
"<ul>"
"<li><p>완성된 `docs/dat06_uat_feedback_report.md` 파일</p></li>"
"<li><p>UAT 체크리스트 만족도 90점 이상 평가 결과서</p></li>"
"</ul>"
),
"evalText": (
"<h4>PASS 기준</h4>"
"<ul>"
"<li><p>UAT 체크리스트 만족도 90점 이상 달성 및 결과 보고서 작성이 완료되었는가?</p></li>"
"</ul>"
),
"attachments": []
}
]
# M10 guideSteps (3 steps)
missions[9]["guideSteps"] = [
{
"step": 1,
"problem": "9개 핵심 모듈의 End-to-End 전체 파이프라인 통합 및 패키지 빌드하기",
"activity": (
"<h4>이 단계의 역할</h4>"
"<p>전처리 데이터 로더, 룰 엔진, AI 모듈, 검증기, UI 대시보드, HITL 결재, 배치 러너를 단일 시스템으로 연동하고 배포 패키지를 빌드합니다.</p>"
"<h4>해야 할 일</h4>"
"<ol>"
"<li><p>모든 서브모듈의 인터페이스를 연결하는 메인 엔트리포인트(`main.py` 등)를 통합 구현한다.</p></li>"
"<li><p>`dist/dat06_package/` 디렉토리에 실행 파일, 소스, 리소스, 설정 파일을 포함한 독립 실행 패키지를 빌드한다.</p></li>"
"<li><p>모듈 간 데이터 파이프라인이 단절 없이 One-click으로 구동되는지 통합 점검한다.</p></li>"
"</ol>"
"<h4>학습자가 제출해야 하는 내용</h4>"
"<ul>"
"<li><p>통합 파이프라인 메인 엔트리포인트 소스 코드</p></li>"
"<li><p>`dist/dat06_package/` 빌드 결과물</p></li>"
"</ul>"
),
"evalText": (
"<h4>PASS 기준</h4>"
"<ul>"
"<li><p>전체 모듈이 결함 없이 통합되고 배포 패키지가 정상 생성되었는가?</p></li>"
"</ul>"
),
"attachments": []
},
{
"step": 2,
"problem": "원클릭 설치 스크립트 및 종합 운영 매뉴얼(`README.md`, `docs/dat06_final_manual.md`) 작성하기",
"activity": (
"<h4>이 단계의 역할</h4>"
"<p>사용자가 복잡한 환경 설정 없이 원클릭으로 설치 및 실행할 수 있도록 스크립트와 단계별 운영 매뉴얼을 작성합니다.</p>"
"<h4>해야 할 일</h4>"
"<ol>"
"<li><p>의존성 패키지 설치 및 초기 데이터베이스 설정을 자동 수행하는 원클릭 설치 스크립트를 작성한다.</p></li>"
"<li><p>`README.md`에 프로젝트 개요, 시스템 요구사항, 빠른 시작 가이드를 명시한다.</p></li>"
"<li><p>`docs/dat06_final_manual.md`에 관리자 설정, 결산 보고서 생성, 전자 결재 등 상세 실무자 가이드를 문서화한다.</p></li>"
"</ol>"
"<h4>학습자가 제출해야 하는 내용</h4>"
"<ul>"
"<li><p>원클릭 설치 스크립트 파일</p></li>"
"<li><p>완성된 `README.md` 및 `docs/dat06_final_manual.md` 파일</p></li>"
"</ul>"
),
"evalText": (
"<h4>PASS 기준</h4>"
"<ul>"
"<li><p>설치부터 실행까지 원클릭 설치 스크립트 완비 및 매뉴얼 작성률 100%를 달성하였는가?</p></li>"
"</ul>"
),
"attachments": []
},
{
"step": 3,
"problem": "Clean 환경 설치·초기화 테스트 및 최종 배포본 종합 검수 완료하기",
"activity": (
"<h4>이 단계의 역할</h4>"
"<p>개발 환경의 잔재가 없는 깨끗한(Clean) 가상환경에서 배포본을 설치하고 End-to-End 전체 결산 워크플로우 회귀 테스트를 완수합니다.</p>"
"<h4>해야 할 일</h4>"
"<ol>"
"<li><p>신규 가상환경에서 원클릭 설치 스크립트를 실행하여 무오류 설치 및 초기화를 확인한다.</p></li>"
"<li><p>샘플 데이터를 투입하여 파싱 -> 집계 -> AI 이상탐지 -> 회계검증 -> 웹 UI 조회 -> 3단계 HITL 결재 -> One-click 보고서 발간까지 전 과정 회귀 테스트를 수행한다.</p></li>"
"<li><p>상용 소프트웨어 수준의 완성도를 최종 검수하고 프로젝트를 완료한다.</p></li>"
"</ol>"
"<h4>학습자가 제출해야 하는 내용</h4>"
"<ul>"
"<li><p>Clean 환경 설치 및 실행 테스트 결과 로그</p></li>"
"<li><p>전체 파이프라인 End-to-End 회귀 테스트 100% 통과 증빙서</p></li>"
"</ul>"
),
"evalText": (
"<h4>PASS 기준</h4>"
"<ul>"
"<li><p>Clean 환경에서의 설치 및 초기화 테스트 100% 통과 및 최종 배포본 검수가 완료되었는가?</p></li>"
"</ul>"
),
"attachments": []
}
]
with open(path, "w", encoding="utf-8") as f:
json.dump(data, f, ensure_ascii=False, indent=2)
print("Populated guideSteps for all 10 missions in DAT06.json successfully!")