--- from: 개발팀장 to: 총괄PM type: 상태보고 status: 대기 date: 2026-04-16 subject: BT.Framework git 통합 상태 점검 보고 --- # BT.Framework git 통합 상태 점검 보고 > **작성일**: 2026-04-16 > **작성자**: 개발팀장 > **수신**: 총괄PM > **목적**: BT.Framework 저장소의 git 관리 상태 전수 점검 및 현황 정리 --- ## 1. 저장소 기본 정보 | 항목 | 값 | |------|-----| | **로컬 경로** | `D:/BurningTimes/BT.Framework` | | **원격 URL (fetch)** | `ssh://git@burning.i234.me:30030/BurningTimes/BT.Framework.git` | | **원격 URL (push)** | `ssh://git@burning.i234.me:30030/BurningTimes/BT.Framework.git` | | **현재 브랜치** | `main` | | **원격 동기화 상태** | `up to date with 'origin/main'` | | **로컬 변경 사항** | 없음 (working tree clean) | | **패키지 이름** | `com.nerdnavis.framework` | | **패키지 버전** | `0.1.0` | | **Unity 호환 버전** | 2022.3 이상 | --- ## 2. git 원격 연결 상태 ### 2-1. fetch 결과 ``` git fetch origin → 성공 origin/main HEAD: efde844 ``` **판정**: 원격 저장소 연결 정상. push/pull 모두 가능한 상태. ### 2-2. 최근 커밋 이력 (최신순 5건) | SHA | 커밋 메시지 | |-----|------------| | `efde844` | feat(core/patterns): add ServiceLocator + ServiceNotRegisteredException | | `b106cae` | feat(core/patterns): add MonoSingleton unifying 4 legacy variants | | `0a60587` | feat(core/coroutine): add CoroutineRunner with pause/resume/key dedup | | `e47221d` | feat(core/util/log): add central Log, LogLevel, ILogSink | | `c916d1c` | chore: initial skeleton for BT.Framework | **판정**: 총 5커밋. 로컬 HEAD = origin/main HEAD 일치. 미push 변경 없음. --- ## 3. 설계 문서 vs 실제 코드 구조 정합성 점검 ### 3-1. 설계 문서 목록 (`프로젝트/코어프레임워크/`) 1. `01_아키텍처_개요_v1.md` — 네임스페이스 체계, Tier 분류, 폴더 구조 2. `02_수상한잡화점_추출대상_v1.md` — 추출 대상 분류표 (A/B/C/D 등급) 3. `03_배포방식_안건_v1.md` — OI-2 배포 방식 안건서 (PD님 결정 대기 중) ### 3-2. 폴더 구조 정합성 | 설계 문서 기술 | 실제 존재 여부 | 비고 | |--------------|------------|------| | `Runtime/Core/Patterns/` | ✅ | MonoSingleton.cs, ServiceLocator.cs, ServiceNotRegisteredException.cs, InitMode.cs | | `Runtime/Core/Coroutine/` | ✅ | CoroutineRunner.cs, CoroutineHandle.cs, DuplicatePolicy.cs | | `Runtime/Core/Util/Log/` | ✅ | Log.cs, LogLevel.cs, ILogSink.cs | | `Runtime/Core/Container/` | ❌ | 미구현 (ObservableList 등) | | `Runtime/Core/Event/` | ❌ | 미구현 (EventBus) | | `Runtime/Core/Data/` | ❌ | 미구현 (DataTable, DataTableSO, CSV 로더) | | `Runtime/Core/Util/` (범용 유틸) | 🟡 | .gitkeep만 존재 (MathEx/ValidationEx 등 미구현) | | `Runtime/Core/Attribute/` | ❌ | 미구현 (ReadOnly/ShowIf 속성) | | `Runtime/Core/Optimization/` | ❌ | 미구현 (EnumToInt 등) | | `Runtime/UI/UGUI/` | 🟡 | .gitkeep만 존재 (UIView UGUI 미구현) | | `Runtime/UI/UIToolkit/` | 🟡 | .gitkeep만 존재 | | `Runtime/UI/Components/` | 🟡 | .gitkeep만 존재 (SafeAreaBorder 미구현) | | `Runtime/Addressable/` | 🟡 | .gitkeep만 존재 | | `Runtime/Security/` | 🟡 | .gitkeep만 존재 | | `Editor/` | ✅ | 폴더 존재, asmdef 파일 포함 | | `Tests/Runtime/Core/` | ✅ | CoroutineRunner, MonoSingleton, ServiceLocator, Log 테스트 존재 | | `package.json` | ✅ | `com.nerdnavis.framework` 0.1.0 | | `CHANGELOG.md` | ✅ | Keep a Changelog 형식 준수 | | `Documentation~/` | ✅ | 폴더 존재 (내부 비어있음) | **판정**: 설계 문서의 폴더 구조 뼈대와 일치. Tier 1 기반 Core 4종만 구현, 나머지는 스켈레톤 상태. --- ## 4. 구현 완료 모듈 vs 미완료 모듈 ### 4-1. 구현 완료 (Tier 1 기반 Core 4종) | # | 모듈 | 네임스페이스 | 주요 기능 | 테스트 | |---|------|------------|---------|------| | 1 | **Log** | `BurningTimes.Core.Util.Log` | 카테고리·레벨 필터, Conditional 스트리핑, ILogSink 외부 연동 | ✅ `LogTests.cs` | | 2 | **CoroutineRunner** | `BurningTimes.Core.Coroutine` | 핸들 기반 시작/중단/일시정지/재개, 키 중복 정책(Replace/Ignore/Allow) | ✅ `CoroutineRunnerTests.cs` | | 3 | **MonoSingleton\** | `BurningTimes.Core.Patterns` | 4종 통합(Sync/Async/Inner/Ready), Persistent/AutoCreate/InitMode 옵션, ResetForTests | ✅ `MonoSingletonTests.cs` | | 4 | **ServiceLocator** | `BurningTimes.Core.Patterns` | Register/Resolve/TryResolve/Unregister/Clear, Lazy 팩토리 지원, ServiceNotRegisteredException | ✅ `ServiceLocatorTests.cs` | 설계 문서 기술 내용과 구현체 완전 일치 확인. ### 4-2. 미완료 (구현 대기 중) **Tier 1 잔여 (설계 완료, 구현 미착수)** | # | 모듈 | 네임스페이스 | 비고 | |---|------|------------|------| | 1 | EventBus | `BurningTimes.Core.Event` | 타입 안전 Pub/Sub (설계 §4-2) | | 2 | ObservableList/Dictionary/Queue | `BurningTimes.Core.Container` | 옵저버 컨테이너 통합 (설계 §4-3) | | 3 | ObjectPool\ | `BurningTimes.Core.Patterns` | 오브젝트 풀 | | 4 | EnumToInt\ | `BurningTimes.Core.Util` | 박싱 회피 캐싱 (02문서 §4-4) | | 5 | EnumEx | `BurningTimes.Core.Util` | StringToEnum 캐싱 등 | | 6 | FormatEx / ValidationEx / MathEx 등 | `BurningTimes.Core.Util` | Toolkit 해체 분리 (설계 §4-7) | | 7 | SafeAreaBorder | `BurningTimes.UI.Components` | UGUI SafeArea (02문서 #A-5) | | 8 | SpriteAtlasRegistry | `BurningTimes.UI.UGUI` | UIAtlasMgr 범용화 | | 9 | DataTable / DataTableSO / CSV 로더 | `BurningTimes.Core.Data` | 데이터 테이블 | | 10 | Attribute (ReadOnly/ShowIf) | `BurningTimes.Core.Attribute` | Inspector 속성 | **Tier 2 (신규 설계 필요)** | # | 모듈 | 네임스페이스 | 비고 | |---|------|------------|------| | 1 | Economy (Goods) | `BurningTimes.Economy` | 재화 모델 | | 2 | Save / ISaveProvider | `BurningTimes.Save` | JSON + AES 레이어 | | 3 | Localization | `BurningTimes.Localization` | Unity Localization 래퍼 | | 4 | Audio | `BurningTimes.Audio` | BGM/SFX 채널 풀링 | | 5 | Addressable 래퍼 | `BurningTimes.Addressable` | 참조 카운팅 Handle | **Tier 3 (서버팀 셋업 이후)** | # | 모듈 | 네임스페이스 | |---|------|------------| | 1 | Network | `BurningTimes.Network` | | 2 | Security | `BurningTimes.Security` | --- ## 5. 배포 방식 결정 현황 (OI-2) - **안건 문서**: `프로젝트/코어프레임워크/03_배포방식_안건_v1.md` - **권장안**: C + H1 (UPM Git URL + 로컬 file: 오버라이드) - **현재 상태**: **PD님 의사결정 대기 중** (정식 보류) - **영향 범위**: v0.1.0 태그 부여·차기 프로젝트 manifest.json 연결 등 배포 관련 액션은 PD님 승인 전 유보 --- ## 6. 종합 판정 | 항목 | 상태 | 비고 | |------|------|------| | git 원격 연결 | ✅ 정상 | fetch/push/pull 모두 가능 | | origin/main 동기화 | ✅ 완료 | 로컬 = 원격 동일 | | 설계 문서 정합성 | ✅ 일치 | 구조 설계와 코드 구조 부합 | | Tier 1 기반 Core 구현 | 🟡 4/9종 완료 | 잔여 5종 이상 구현 대기 | | 테스트 | ✅ 구현 완료 모듈 전수 테스트 | 28건 추정 (커밋 메시지 기준) | | 배포 방식 | 🟡 안건 대기 | OI-2 PD님 결정 필요 | | 버전 태그 | ❌ 미부여 | OI-2 결정 후 v0.1.0 태그 예정 | --- ## 7. 다음 작업 건의 1. **Tier 1 잔여 모듈 구현 재개**: EventBus, ObservableContainer, ObjectPool 등 — PD님 OI-2 결정과 독립적으로 진행 가능 2. **OI-2 배포 방식 PD님 결정 요청**: `03_배포방식_안건_v1.md` 7절 의사결정 4항목 승인 수령 후 v0.1.0 태그 부여 착수 3. **Documentation~ 정비**: 각 구현 모듈의 API 문서 작성 (구현 병행 또는 후속) --- *본 보고서는 C13·P19 의무에 따라 PD_지시_트래킹 로그에도 등록됩니다.*