# v0.1.401 — Group C QA-119 옵션 B fix (STEP 자동 재임포트)

- 버전: v0.1.401
- 날짜: 2026-05-25
- 다운로드: [factory00-windows-x64-v0.1.401.zip](../../downloads/factory00-windows-x64-v0.1.401.zip) (169 MB)
- 캡처: [qa-screenshots/v0.1.401/](../../qa-screenshots/v0.1.401/)

---

## 핵심 변경 (Group C — QA-119 Save/Load 빈 씬 fix)
### 1. TwnProjectInfo 확장 (project file format v2)
- `string stepSourcePath` 필드 신규 — STEP 원본 경로 직렬화
### 2. Bootstrap 변수 + capture
- `_lastStepPath` 변수 추가 (런타임 capture)
- STEP 임포트 성공 시 자동 capture (L1773)
- SaveProject 시 stepSourcePath = _lastStepPath 저장 (L3023)
### 3. Open 시 자동 STEP 재임포트
- `OpenTwnPath` async 변경
- 조건: stepSourcePath != "" + File.Exists + scenePartsCount < payloadPartsCount
- 동작: ConvertStepToGlbAsync + ImportGlbAsync 자동 호출 → ApplyTwnPayload 속성 덮어쓰기
## QA-119 root cause + fix path
| 단계 | v0.1.400 이전 | v0.1.401 fix |
|---|---|---|
| .twn 안 STEP 경로 | 부재 | TwnProjectInfo.stepSourcePath |
| Save 시 capture | 없음 | _lastStepPath → stepSourcePath |
| Open 시 GameObject 생성 | ApplyTwnPayloadCore byId 매칭만 (else branch X) | 자동 STEP 재임포트 → Parts.AddRange → ApplyTwnPayload |
| 빈 씬 Open | 0개 로드 | 자동 재임포트 → 전체 복원 |
| 삭제 후 Open | 미복원 | 자동 재임포트 → 신규 생성 |
## 영향 파일
- `Assets/Scripts/Project/TwnProjectFile.cs` L77~80 — stepSourcePath 필드
- `Assets/Scripts/Game/Factory00Bootstrap.cs` L2619~2623 — _lastStepPath 변수
- `Assets/Scripts/Game/Factory00Bootstrap.cs` L1773 — STEP 임포트 capture
- `Assets/Scripts/Game/Factory00Bootstrap.cs` L3023 — SaveProject 저장
- `Assets/Scripts/Game/Factory00Bootstrap.cs` L2752~2800 — OpenTwnPath async + 자동 재임포트
## 호환성
기존 .twn 파일 (v0.1.400 이전) = stepSourcePath = "" (빈 문자열). 자동 재임포트 path skip = 기존 동작 보존.
## 다음 자율 큐
QA-119 사용자 PC 검증 → Group D QA-102 메뉴 IA 9건 → Group B SNB 트리.
