시나리오 내용 반영
This commit is contained in:
1 parent
d9287de729
commit
350bb92bf9
270 files changed
+198867
No files matched your search
@@ -0,0 +1,3 @@
|
||||
[missions02.md](file;file:///d%3A/edunlab/milicontent2/data/missions02.md)를 바탕으로 [A13.json](file;file:///d%3A/edunlab/milicontent2/data/A13.json) 과 같은 초기 프로젝트 파일을 만들고 싶어.
|
||||
[missions02.md](file;file:///d%3A/edunlab/milicontent2/data/missions02.md) 에 있는 정보만을 바탕으로 {projedid}.json 파일을 만들어서 import 디렉토리에 생성해줘.
|
||||
우선 프로젝트 2번~10번까지 만들어줘.
|
||||
@@ -0,0 +1,98 @@
|
||||
이 프롬프트는 @DAT06.json 프로젝트 내용을 상세화하는 용도야.
|
||||
|
||||
# 프로젝트 내용 상세화
|
||||
|
||||
## 1. project 내용 만들기
|
||||
|
||||
- project의 `summary`, `objectives`를 참고하여 각 미션의 `overview`, `objectives` 내용을 구체화해줘.
|
||||
- project의 `objectives`에는 다음 4가지 핵심 섹션을 HTML 태그로 포함해줘:
|
||||
- `<h4>필요한 상황</h4>`, `<h4>해결방안</h4>`, `<h4>기대효과</h4>`, `<h4>활용분야</h4>`
|
||||
- (필요시)`prerequisites`에는 Python 기초 외에 **"Google Colab 환경 활용 기초"**를 포함해줘.
|
||||
|
||||
## 2. 미션 상세 내용 만들기
|
||||
|
||||
- 각 missions의 `overview`, `objectives`가 고유한 역할을 갖도록 중복을 제거하고 명확한 학습 과정을 명시해줘.
|
||||
- `scenario`는 실제 국방/군수/도메인 실무 배경, 문제 상황, 산출물 경로를 연계하여 몰입감 있게 작성해줘.
|
||||
|
||||
## 3. 학습활동 만들기
|
||||
|
||||
- 각 missions의 overview, objectives, scenario를 참고해서 guideSteps 을 2~5개를 추가로 만들어줘.
|
||||
- **activity (해야 할 일 & 학습자 제출물)**:
|
||||
- 코드/설정 작성 단계에는 Colab 코드 셀 첫 줄에 `%%writefile [파일경로]` 매직 커맨드를 선언하여 파일을 저장하고, `!python [경로]` 또는 `!pytest [경로]` 쉘 명령어로 즉시 동작을 검증하도록 안내해줘.
|
||||
- 학습자가 제출해야 하는 내용에 **"Google Colab 실행 셀 결과 출력 로그 및 생성된 산출물 파일"**을 명시해줘.
|
||||
- **evalText (PASS 기준 및 보완 방법)**:
|
||||
- PASS 기준에 **"Google Colab 환경에서 스크립트 및 테스트 코드가 에러 없이 정상 실행되고 요구 지표를 충족하는가?"**를 포함해줘.
|
||||
- 보완 방법에 Colab 실행 오류(문법 에러, 모듈 경로 누락, 쉘 커맨드 실패 등) 디버깅 지침을 반영해줘.
|
||||
|
||||
## 4. 첨부파일 및 산출물 파일 만들기
|
||||
|
||||
- 각 missions의 overview, objectives, scenario에 등장하는 첨부파일 및 기본 산출물 템플릿을 만들어줘.
|
||||
- 저장소 경로: `uploads/{projectid}/`
|
||||
- 프로젝트 및 10개 미션 전체의 `materials`에 산출물 파일들과 함께 노트북 경로(`uploads/{projectid}/notebook/instructor/{projectid}_colab_starter.ipynb`, `uploads/{projectid}/notebook/student/{projectid}_assignment.ipynb`)를 정확히 등록해줘.
|
||||
|
||||
## 5. 학습자료 점검하기
|
||||
|
||||
- 각 missions의 materialText는 mission을 수행하기 위해 필요한 참고자료들이야. 미션 산출물, 저장위치, 검증 및 개선방안 외 풀이에 도움이 될만한 참고자료를 추가해줘.
|
||||
- 각 미션의 `materialText` 최상단에 **[Google Colab 실습 및 환경 가이드]** 블록을 필수로 포함해줘:
|
||||
1. 디렉터리 생성: `!mkdir -p [필요경로]`
|
||||
2. 파일 저장 매직 커맨드: `%%writefile [산출물경로]`
|
||||
3. 검증 쉘 명령어: `!python [경로]` 또는 `!pytest [경로] -v`
|
||||
- 이외에 미션 산출물 저장위치, 검증 및 개선방안, 도메인 표준 규격/이론 참고자료를 추가해줘.
|
||||
|
||||
## 6. 활용기술
|
||||
|
||||
- 각 missions의 techStack, aiGuidelines 이 overviews, objectives, scenario, guideSteps 에 맞게 충분히 반영되었는지 확인해줘. techStack, aiGuidelines는 5개 이하씩 추가해줘.
|
||||
|
||||
## 7. 평가기준
|
||||
|
||||
- **deliverables**: 프로젝트 레벨의 산출물 목록(15개 내외)과 각 미션의 `deliverables` 합집합 및 `materials` 파일 경로가 100% 일치하도록 정리해줘.
|
||||
- **evaluationKeys**: 각 미션마다 3개의 필수(`REQUIRED`) 평가키로 표준화해줘:
|
||||
1. `[정량적 평가]`: objectives의 수치 지표(정확도, 처리속도, 오류율, 지연시간 등) 기준
|
||||
2. `[정성적 평가]`: 도메인 실무/전술 타당성, 신뢰도, 안전 실패(Fail-safe) 등 질문
|
||||
3. `[진행 추적 및 완료 기준]`: 필수 산출물 생성 및 검증 도구(pytest 등) 통과 여부
|
||||
- **evaluationText**: `evaluationKeys`의 3대 항목(정량/정성/진행추적) 및 검증 방법을 완벽히 포괄하는 4대 PASS 조건 불릿 포인트를 작성해줘.
|
||||
|
||||
## 8. notebook 폴더 및 실습 노트북 만들기
|
||||
|
||||
- 저장소 경로: `uploads/{projectid}/notebook/`
|
||||
- 4번의 `materials`에 등록된 노트북을 실제로 실행 가능한 파일로 생성해줘:
|
||||
1. **강사용 스타터 노트북**: `uploads/{projectid}/notebook/instructor/{projectid}_colab_starter.ipynb`
|
||||
- 10개 미션의 전체 완성형 구현 코드 및 E2E 실행 셀, Cloudflare Tunnel을 통한 Streamlit 대시보드 실시간 배포 스크립트를 포함.
|
||||
2. **학습자용 과제 노트북**: `uploads/{projectid}/notebook/student/{projectid}_assignment.ipynb`
|
||||
- 학습자가 단계별로 직접 구현할 수 있도록 `# TODO:` 주석 기반의 스캐폴딩 코드 제공.
|
||||
- 각 미션 상단에는 `%%writefile [파일경로]` 매직 커맨드로 산출물을 파일화하도록 구성.
|
||||
- 각 미션 하단에는 즉시 단위 테스트를 수행하여 `PASS/FAIL`을 확인할 수 있는 자체 검증(Self-Validation) 셀 포함.
|
||||
|
||||
## 9. project.yaml 설정 파일 만들기
|
||||
|
||||
- 저장소 경로: `uploads/{projectid}/project.yaml`
|
||||
- 프로젝트 메타데이터, Colab 런타임, 진입점 노트북, 10개 미션 목록, 평가 및 제출 방식을 정의하는 YAML 파일을 생성해줘.
|
||||
- 작성 형식:
|
||||
|
||||
```yaml
|
||||
id: {projectid}
|
||||
title: {project_title}
|
||||
|
||||
runtime:
|
||||
type: colab
|
||||
python: "3.11"
|
||||
|
||||
notebook:
|
||||
entry: notebook/student/{projectid}_assignment.ipynb
|
||||
|
||||
missions:
|
||||
- id: {projectid}_M01
|
||||
title: {mission1_title}
|
||||
|
||||
- id: {projectid}_M02
|
||||
title: {mission2_title}
|
||||
|
||||
# ... M03 ~ M10 미션 목록
|
||||
|
||||
evaluation:
|
||||
type: notebook
|
||||
tests: tests/
|
||||
|
||||
submission:
|
||||
type: git_commit
|
||||
```
|
||||
@@ -0,0 +1,21 @@
|
||||
# Word(DOCX) to Markdown(MD) 변환 작업
|
||||
|
||||
## 1. 개요
|
||||
`scenario_docx` 디렉토리 하위의 시나리오 관련 Word 문서(`.docx`)들을 동일한 디렉토리 구조를 유지하면서 마크다운(`.md`) 파일로 일괄 변환하여 `scenario_md` 디렉토리에 생성합니다.
|
||||
|
||||
## 2. 변환 대상 및 결과
|
||||
- **변환 스크립트**: [`scripts/convert_docx_to_md.py`](file:///d:/edunlab/milicontent2/scripts/convert_docx_to_md.py)
|
||||
- **원본 디렉토리**: [`scenario_docx`](file:///d:/edunlab/milicontent2/scenario_docx) (총 60개 시나리오 폴더, 146개 docx 파일, 35개 기존 md 파일)
|
||||
- **대상 디렉토리**: [`scenario_md`](file:///d:/edunlab/milicontent2/scenario_md) (총 181개 md 파일 생성 및 복사 완료)
|
||||
|
||||
## 3. 주요 처리 사항
|
||||
1. **문서 요소 순서 보존**: 단락(`CT_P`)과 표(`CT_Tbl`)를 문서 원본 순서대로 배치하여 변환
|
||||
2. **스타일 서식 보존**:
|
||||
- 제목 스타일(Heading 1~6, Title) -> Markdown 헤더(`#`, `##`, `###` 등)
|
||||
- 목록 스타일(Bullet, Number) -> Markdown 목록(`- `, `1. ` 등)
|
||||
- 텍스트 인라인 서식 -> 볼드(`**text**`), 이탤릭(`*text*`) 적용
|
||||
3. **표(Table) 변환**:
|
||||
- 셀 내 줄바꿈을 `<br>`로 치환하여 Markdown 표 문법 준수
|
||||
- 파이프(`|`) 문자 이스케이프 (`\|`)
|
||||
- 헤더 구분선(`| --- | --- |`) 자동 생성
|
||||
4. **기존 MD 파일 동기화**: docx 외에 기존에 포함되어 있던 코드 마크다운 파일(35개)도 동일 경로에 복사
|
||||
@@ -0,0 +1,178 @@
|
||||
# 프로젝트 시나리오 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": "<p>러시아-우크라이나 전쟁에서는 소형 드론이 정찰과 공격에 대량으로 쓰이면서... (시나리오 MD의 '프로젝트 목표' 매핑)</p>",
|
||||
"deliverables": ["...", "..."],
|
||||
"constraints": "<h4>...</h4><ul>...</ul>",
|
||||
"evalSummary": "<h4>공통 PASS/FAIL 판정 원칙</h4><ul>...</ul>",
|
||||
"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`의 미션 테이블 내 **'목표'** (`\| **목표** \| ... \|`) ➔ `<p>{목표 내용}</p>` |
|
||||
| `objectives` | HTML String | **미션 수행 매핑**: `scenario_md`의 미션 테이블 내 **'수행'** (`\| **수행** \| ... \|`) ➔ `<p>{수행 내용}</p>` |
|
||||
| `scenario` | HTML String | **미션 배경 및 수행 당위성 스토리**: `overview`(목표)와 `objectives`(수행)를 왜 해야 하는지 설명하는 스토리, 실습 흐름 및 최종 결과물 정의 |
|
||||
| `attachments` | Array | 첨부파일 목록 |
|
||||
| `materials` | Array | 미션 관련 가상 데이터 및 참조자료 경로 목록 |
|
||||
| `materialText` | HTML String | 참조 사이트, 수업용 가상 데이터 샘플, 주의사항 (`<p>`, `<ul>`, `<a>`) |
|
||||
| `techStack` | Array[String] | 미션에 사용되는 기술/도메인 키워드 태그 목록 |
|
||||
| `deliverables` | Array[String] | 미션 산출물 목록 (필수/선택 표기 포함) |
|
||||
| `evaluationKeys` | Array[HTML] | 평가 질문(PASS/FAIL), PASS 증거, 보완이 필요한 상태, 보완 방법 |
|
||||
| `evaluationTypes` | Array[String] | 평가 구분 (`["REQUIRED", ...]` 또는 `["OPTIONAL", ...]`) |
|
||||
| `evaluationText` | HTML String | 미션 판정 구분, 핵심 평가영역, PASS 조건, 채점자 판정 메모 |
|
||||
| `aiGuidelines` | Object | `allow` (허용), `rules` (준수사항), `forbid` (금지사항) |
|
||||
| `guideSteps` | Array[Object] | **학습활동 (`_실습가이드.md` 참고)**: 1~5단계 세부 가이드 (`step`, `problem`, `activity`, `evalText`, `attachments`) — `_실습가이드.md`의 진행 순서, 확인할 결과, 도전 과제를 기반으로 작성 |
|
||||
|
||||
> **📌 `scenario` (미션 시나리오) 작성 원칙**:
|
||||
>
|
||||
> - **미션 수행 당위성 스토리텔링 (Why 스토리)**:
|
||||
> - 각 미션의 `overview`(목표)와 `objectives`(수행)를 단순 요약하거나 복사하지 않고, **"이 목표와 수행을 왜 해야 하는가?"**(현장 전술적 문제의식, 분석/구현이 시급한 이유, 해결해야 할 핵심 과제 등)를 설명하는 생생한 배경 스토리를 **2~3문장**으로 작성하여 학습자의 몰입도를 극대화합니다.
|
||||
> - **수행 내용의 자연스러운 문장 연결 (Copy&Paste 금지)**:
|
||||
> - `objectives`(미션 수행 내용)의 원문 문장들을 그대로 복사·나열하지 않고, **"이 문제를 해결하기 위해 본 미션에서는 [핵심 수행 과제 및 분석·구현 활동]을(를) 체계적으로 수행합니다."** 와 같이 앞선 배경 스토리와 맥락이 매끄럽게 이어지는 **간결하고 완성도 높은 1문장**으로 정제하여 작성합니다.
|
||||
> - **실습 흐름 및 안내**: 실습가이드에 따른 N단계 세부 활동(기본 기능 구현 ➔ 결과 지표 검증 ➔ 파라미터 튜닝 및 도전과제)의 전체적인 진행 흐름을 명확히 안내합니다.
|
||||
> - **최종 결과물**: 미션 수행을 통해 완성해야 할 산출물(`<code>{산출물}</code>`) 명세를 명시합니다.
|
||||
|
||||
> **📌 `guideSteps` (학습활동) 작성 원칙**:
|
||||
>
|
||||
> - 각 미션의 학습활동(`guideSteps`)은 프로젝트 디렉토리 내 **`_실습가이드.md`** (예: `OPS01_실습가이드.md`)의 내용을 적극 참고하여 작성합니다.
|
||||
> - `_실습가이드.md`의 미션별 **'진행 순서'** 항목을 1~4단계 세부 활동으로 분할하여 `problem`, `activity`, `evalText`를 구조화합니다.
|
||||
> - `_실습가이드.md`의 **'확인할 결과'**는 각 단계의 핵심 확인 지표(PASS 기준)로 반영합니다.
|
||||
> - `_실습가이드.md`의 **'도전 과제'**는 마지막 심화 튜닝 단계(Step 5 또는 추가 단계)로 매핑합니다.
|
||||
|
||||
---
|
||||
|
||||
## 4. 단계별 변환 구현 계획 (Implementation Phases)
|
||||
|
||||
```mermaid
|
||||
flowchart TD
|
||||
A[Step 1: 메타데이터 파싱<br>projectlist02.md & missions02.md] --> B[Step 2: 시나리오 및 실습가이드 MD 파싱<br>메인 시나리오 / _실습가이드.md / 정답코드]
|
||||
B --> C[Step 3: 데이터 결합 & 필드 매핑<br>프로젝트 목표➔objectives / 미션 목표➔overview / 미션 수행➔objectives / 'Why' 스토리 및 _실습가이드.md➔guideSteps]
|
||||
D --> E[Step 5: 스키마 검증 & 무결성 테스트<br>60개 JSON 필드 누락 및 타입 검증]
|
||||
C --> D[Step 4: JSON 직렬화 & 파일 생성<br>scenario_json/ 하위에 저장]
|
||||
```
|
||||
|
||||
### [단계 1] 메타데이터 로더 구현
|
||||
|
||||
- `data/projectlist02.md`를 파싱하여 60개 프로젝트의 기본 속성(분야, 난이도, 유형, 전쟁사례, 추천사유 등)을 딕셔너리로 인덱싱
|
||||
- `data/missions02.md`를 파싱하여 600개 미션의 속성(소요시간, 복잡도, 설명, 산출물, 평가방안, 검증기준 등)을 `(프로젝트ID, 미션번호)` 키로 인덱싱
|
||||
|
||||
### [단계 2] 시나리오 및 실습가이드 MD 파서 구현
|
||||
|
||||
- `scenario_md` 하위의 각 프로젝트 폴더 순회:
|
||||
1. **메인 시나리오 MD**:
|
||||
- **'프로젝트 목표'** 파싱 ➔ 최상위 `objectives`에 매핑
|
||||
- **미션별 '목표'** 파싱 ➔ 미션 `overview`에 매핑
|
||||
- **미션별 '수행'** 파싱 ➔ 미션 `objectives`에 매핑
|
||||
- 제약사항, 유의사항, 최종 판정 기준 파싱
|
||||
2. **`_실습가이드.md`**:
|
||||
- 미션별 **'진행 순서'**, **'확인할 결과'**, **'도전 과제'**, **'제출물'** 파싱 ➔ `guideSteps` (학습활동) 생성 시 사용
|
||||
3. **코드/실습자료 MD**: 실습 코드 블록, 테스트 케이스, 평가 데이터 파싱
|
||||
|
||||
### [단계 3] HTML 텍스트 변환 및 스키마 빌더 개발
|
||||
|
||||
- `A13.json` 규격에 맞는 HTML 태그(`<p>`, `<h4>`, `<ul>`, `<li>` 등) 서식화 모듈 적용
|
||||
- **필드 매핑 적용**:
|
||||
- 최상위 `objectives`: `scenario_md` 프로젝트 파일의 '프로젝트 목표' 매핑
|
||||
- 각 미션 `overview`: `scenario_md` 미션 테이블의 '목표' 매핑
|
||||
- 각 미션 `objectives`: `scenario_md` 미션 테이블의 '수행' 매핑
|
||||
- 각 미션 `scenario`: `overview`(목표)와 `objectives`(수행)를 **왜 해야 하는지(필요성, 전술적 문제의식, 당위성)**를 풀어낸 2~3문장의 스토리텔링과, 문제 해결을 위한 핵심 과제를 매끄럽게 연결한 1문장, N단계 실습 흐름, 최종 산출물 명세 결합
|
||||
- 각 미션 `guideSteps` (학습활동): **`_실습가이드.md`**를 참고하여 단계별 문제(`problem`), 활동(`activity`), 평가기준(`evalText`) 자동 생성
|
||||
- 미션별 평가 루브릭(`evaluationKeys`, `evaluationTypes`, `evaluationText`) 및 AI 가이드라인(`aiGuidelines`) 구성
|
||||
|
||||
### [단계 4] JSON 생성 및 저장 파이프라인
|
||||
|
||||
- 스크립트: [`scripts/convert_md_to_json.py`](file:///d:/edunlab/milicontent2/scripts/convert_md_to_json.py)
|
||||
- 출력 경로: [`scenario_json/{ProjectID}.json`](file:///d:/edunlab/milicontent2/scenario_json) (총 60개 파일)
|
||||
- UTF-8 인코딩 및 들여쓰기 2칸(`indent=2`, `ensure_ascii=False`) 적용
|
||||
|
||||
### [단계 5] 검증 및 품질 보증 (QA)
|
||||
|
||||
1. **스키마 정합성 검증**: `A13.json`의 모든 키와 타입이 60개 생성 파일에 빠짐없이 존재하는지 검증
|
||||
2. **미션 완결성 검증**: 각 프로젝트별 10개 미션(총 600개)이 누락 없이 정상 매핑되었는지 확인
|
||||
3. **텍스트 무결성 검증**: 깨진 문자, 미변환 마크다운 문법, 빈 필드 존재 여부 자동 점검
|
||||
|
||||
---
|
||||
|
||||
## 5. 산출물 및 관리 계획
|
||||
|
||||
| 산출물 | 저장 경로 | 설명 |
|
||||
| :----------------------- | :------------------------------------------------------------------------------------------------------- | :------------------------------------------- |
|
||||
| **변환 실행 스크립트** | [`scripts/convert_md_to_json.py`](file:///d:/edunlab/milicontent2/scripts/convert_md_to_json.py) | MD ➔ JSON 일괄 변환 파이프라인 스크립트 |
|
||||
| **스키마 검증 스크립트** | [`scripts/validate_scenario_json.py`](file:///d:/edunlab/milicontent2/scripts/validate_scenario_json.py) | A13.json 대비 60개 JSON 스키마 유효성 검사기 |
|
||||
| **프로젝트 JSON 파일** | [`scenario_json/*.json`](file:///d:/edunlab/milicontent2/scenario_json) | 60개 완성된 프로젝트 JSON 파일 |
|
||||
| **작업 진행 보고서** | [`ai_prompt/03-2_md_to_json.md`](file:///d:/edunlab/milicontent2/ai_prompt/03-2_md_to_json.md) | 계획 및 최종 변환 결과 요약 문서 |
|
||||
|
||||
---
|
||||
|
||||
## 6. 변환 실행 및 검증 결과 (Execution Results)
|
||||
|
||||
- **변환 실행 일시**: 2026-10-08
|
||||
- **생성된 프로젝트 JSON 수**: **60개** ([`scenario_json`](file:///d:/edunlab/milicontent2/scenario_json) 디렉토리)
|
||||
- **생성된 하위 미션 수**: **600개** (프로젝트당 10개 미션)
|
||||
- **스키마 검증 결과**: **100% 통과 (오류 0건)**
|
||||
- [`data/A13.json`](file:///d:/edunlab/milicontent2/data/A13.json)의 21개 최상위 키, 17개 미션 키, 5개 가이드스텝 키 100% 일치
|
||||
- 최상위 `objectives`: `scenario_md`의 **'프로젝트 목표'** 매핑 완료
|
||||
- 각 미션 `overview`: `scenario_md` 미션 테이블의 **'목표'** 매핑 완료
|
||||
- 각 미션 `objectives`: `scenario_md` 미션 테이블의 **'수행'** 매핑 완료
|
||||
- 각 미션별 `scenario`, `deliverables`, `evaluationKeys`, `evaluationTypes`, `evaluationText`, `aiGuidelines`, `guideSteps` 정상 구성 완료
|
||||
Reference in new issue
Block a user