# 프로젝트 시나리오 MD ➔ JSON 변환 계획서 (Plan) ## 1. 개요 및 목적 본 계획은 [`scenario_md`](file:///d:/edunlab/milicontent2/scenario_md) 디렉토리에 정리된 60개 군 특화 PBL 프로젝트 시나리오 마크다운(`.md`) 파일들과 [`data`](file:///d:/edunlab/milicontent2/data) 디렉토리의 메타데이터를 결합하여, [`data/A13.json`](file:///d:/edunlab/milicontent2/data/A13.json) 표준 스키마를 100% 준수하는 프로젝트 JSON 파일들을 [`scenario_json`](file:///d:/edunlab/milicontent2/scenario_json) 디렉토리에 일괄 생성하는 것을 목표로 합니다. --- ## 2. 데이터 소스 및 구조 분석 ### 2.1 소스 데이터 자산 | 데이터 자산 | 위치 / 경로 | 주요 내용 및 역할 | | :--------------------------- | :------------------------------------------------------------------------------- | :-------------------------------------------------------------------------------------- | | **시나리오 MD 문서** | [`scenario_md/{Project_Dir}/*.md`](file:///d:/edunlab/milicontent2/scenario_md) | 프로젝트 메인 시나리오, 실습가이드, 실습자료 및 정답코드 원문 | | **프로젝트 목록 메타데이터** | [`data/projectlist02.md`](file:///d:/edunlab/milicontent2/data/projectlist02.md) | 60개 프로젝트의 분야, 난이도, 학습유형, 전쟁사례, 학습초점, 추천사유 | | **미션 상세 메타데이터** | [`data/missions02.md`](file:///d:/edunlab/milicontent2/data/missions02.md) | 600개 미션(60개 과제 x 10개 미션)의 설명, 산출물, 정량/정성 평가, 검증방법, 피드백 방안 | | **표준 스키마 템플릿** | [`data/A13.json`](file:///d:/edunlab/milicontent2/data/A13.json) | 최종 산출될 프로젝트 JSON의 표준 구조 및 필드 규격 | --- ## 3. JSON 스키마 필드 매핑 정의 (A13.json 준수) ### 3.1 프로젝트 레벨 필드 (Project Metadata) ```json { "version": "1.0.0", "exportedAt": "2026-10-08T00:00:00.000Z", "id": "ADM01", "title": "결원·근무부하 추세 대시보드와 보충 필요량 예측", "category": "행정·인사", "level": 3, "durationDays": 5, "requiredHours": 27.5, "status": "COMPLETED", "isRecommended": false, "summary": "", "objectives": "

러시아-우크라이나 전쟁에서는 소형 드론이 정찰과 공격에 대량으로 쓰이면서... (시나리오 MD의 '프로젝트 목표' 매핑)

", "deliverables": ["...", "..."], "constraints": "

...

", "evalSummary": "

공통 PASS/FAIL 판정 원칙

", "prerequisites": "파이썬 기초 및 데이터 분석 라이브러리 활용 역량", "refFiles": [], "refText": "", "projectSkills": [ { "skillId": "competency_...", "level": 2, "category": "...", "subCategory": "..." } ], "prerequisiteVods": [], "missions": [ /* 10개 미션 객체 */ ] } ``` > **📌 `objectives` 필드 매핑 원칙**: > > - `scenario_md` 프로젝트 파일의 **'프로젝트 목표'** (`| **프로젝트 목표** | ... |`) 내용이 결과물 JSON의 최상위 `objectives` 필드에 매핑됩니다. ### 3.2 미션 레벨 필드 (Mission Object: M01 ~ M10) | JSON 필드명 | 데이터 타입 | 데이터 출처 및 생성 규칙 | | :---------------- | :-----------: | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | | `id` | String | `{ProjectID}_M{01~10}` 형식 (예: `OPS01_M01`) | | `sequence` | Number | 미션 순번 (`1` ~ `10`) | | `title` | String | 미션명 (`missions02.md` 및 실습가이드 미션 제목) | | `durationHours` | Number | 소요시간 (예: `1.5`, `2.0`, `2.5`, `3.0`, `3.5`) | | `overview` | HTML String | **미션 목표 매핑**: `scenario_md`의 미션 테이블 내 **'목표'** (`\| **목표** \| ... \|`) ➔ `

{목표 내용}

` | | `objectives` | HTML String | **미션 수행 매핑**: `scenario_md`의 미션 테이블 내 **'수행'** (`\| **수행** \| ... \|`) ➔ `

{수행 내용}

` | | `scenario` | HTML String | **미션 배경 및 수행 당위성 스토리**: `overview`(목표)와 `objectives`(수행)를 왜 해야 하는지 설명하는 스토리, 실습 흐름 및 최종 결과물 정의 | | `attachments` | Array | 첨부파일 목록 | | `materials` | Array | 미션 관련 가상 데이터 및 참조자료 경로 목록 | | `materialText` | HTML String | 참조 사이트, 수업용 가상 데이터 샘플, 주의사항 (`

`, `