BurningTimesAi/공유/대화로그/코어프레임워크/2026-04-17.md

6.0 KiB

2026-04-17 코어프레임워크 대화로그

[PM 소급 작성] Tier 1 잔여 9종 구현 — Attribute 3 + Util 6 (프로젝트 자산 관점)

  • 요지: PD님 2026-04-17 "재량껏 진행 가능한 나머지 일괄 승인, 마무리" 지시에 따라 개발팀장이 코어프레임워크(코어코드/BT.Framework/)에 Tier 1 기반 모듈 9종 신규 구현. 기존 Tier 1 기반 Core 4종(Log·CoroutineRunner·MonoSingleton·ServiceLocator)에 이어 총 13/16종 달성
  • 이유: 헌법 제1원칙 목표 2 원칙 A — 차기 프로젝트부터 코어 프레임워크를 조직 자산으로 적극 활용. 범용성 높은 모듈을 PD님 승인 일괄 작업으로 선반영
  • 구현 모듈:
    • Attribute 3종: ReadOnlyAttribute · ShowIfAttribute · ArrayTitleAttribute (인스펙터 UX 공통 패턴)
    • Util 6종: EnumToInt(박싱 회피 Unsafe.As<,>) · EnumEx · FormatEx · MathEx · KeyMaker(구분자 : 표준) · ValidationEx
    • 테스트 7 파일: 각 Util 단위 테스트 + Attribute 통합 테스트 (기존 28건 체계 확장)
  • 산출물 경로:
    • 코어코드/BT.Framework/Runtime/Core/Attribute/ (3 파일)
    • 코어코드/BT.Framework/Runtime/Core/Util/ (6 파일)
    • 코어코드/BT.Framework/Tests/Runtime/Core/ (7 파일)
    • 코어코드/BT.Framework/CHANGELOG.md Unreleased 섹션 갱신
  • 상태: 완료 (라운드 승인분)
  • 기각안:
    1. Convert.ChangeType 캐시 방식 — Unsafe.As<,> 대비 박싱 발생, 핫패스 성능 저하로 기각
    2. KeyMaker 구분자 _ 사용 — 수상한잡화점 _/: 혼재 조회 실패 경험 기반, : 단일 표준으로 기각
    3. UnityEngine 의존 허용 — 서버·배치 재사용 불가, C11(범용성) 위반으로 순수 BCL 의존만 허용
    4. Tier 1 16종 완전 구현 단일 라운드 완결 — Data·Event·Container 3종은 상호작용 설계 재검증 필요, 무리 구현 시 아키텍처 부채 우려. 별도 PD 지시 #36으로 분리

[PM 소급 작성] Tier 1 잔여 3종(Data·Event·Container) 신규 지시 #36 분리

  • 요지: Tier 1 16종 중 13종 완료 상태에서 잔여 3종(Data·Event·Container)을 #1 우산 지시에서 분리하여 개발팀 PD 지시 로그 #36으로 신규 등재. 상태: 대기. 재개 트리거: 상호작용 설계 재검증 완료
  • 이유: 장기 우산 지시의 라운드 완결 아카이브 원칙(memory/feedback_log_round_completion.md) 적용 — 마무리된 라운드는 완료 아카이브, 잔여는 별도 신규 지시. 세션 전환 시 "완료된 업무가 진행중으로 보이는" 왜곡 구조적 차단
  • 산출물: 공유/PD_지시_트래킹/개발팀_PD_지시_로그.md #36 신규 등재, #1 완료 아카이브 이동
  • 상태: 완료 (로그 정리까지)
  • 기각안: 없음 (로그 정리 원칙 적용)

[개발팀장] Tier 1 잔여 3종(Data·Event·Container) 설계 + 구현 + 테스트 완료

  • 요지: PD님 "즉시 수행" 지시(#36) 수령 → 설계 문서 선행 작성 → Event/Container/Data 3개 모듈 구현 → NUnit 단위 테스트 5종 + CHANGELOG 갱신. 외부 레포(코어코드/BT.Framework/) git 최신 상태 점검 후 작업(C30 준수, origin 대비 로컬 2 커밋 앞 · behind 없음).
  • 이유: 헌법 제1원칙 목표 2 원칙 A — 코어 프레임워크는 차기 프로젝트 조직 자산. Tier 1 16종 중 13종 완료 상태에서 잔여 3종을 상호 의존성 명확화한 설계 기반으로 마무리. 수상한잡화점 자산은 전혀 건드리지 않음(원칙 A "현 프로젝트 미사용" 준수).
  • 산출물:
    • 설계: 프로젝트/코어프레임워크/04_Tier1_3종_상호작용_설계_v1.md (P18 의무 이행)
    • 코드: 코어코드/BT.Framework/Runtime/Core/Event/EventBus.cs · Event/Raw/RawEventBus.cs · Container/{ObservableList,ObservableDictionary,ObservableQueue}.cs · Data/{IDataRow,DataTable,DataTableSO,DataTableLoader,DataTableLoadedEvent}.cs
    • 테스트: Tests/Runtime/Core/Event/EventBusTests.cs · Container/{ObservableList,ObservableDictionary,ObservableQueue}Tests.cs · Data/DataTableTests.cs
    • CHANGELOG: Unreleased 섹션 Event·Container·Data 3블록 추가
  • 상태: 완료 (외부 레포 커밋·조직 레포 커밋은 PD님 "세션 공유" 지시 시점에 일괄 push — C20-1-A 준수)
  • 기각안 (설계 §6 영구 기록):
    1. Event 인스턴스 버스 vs 정적: 정적 채택. 기각 — IoC는 Tier 3 Network 도입 시 재검토, 현 시점 토큰·호출 비용·관례상 정적 우위
    2. Event 약한 참조(WeakReference) vs 강한 참조: 강한 참조 채택. 기각 — 람다 캡처 수명 예측 난해, 명시 Unsubscribe 의무가 예측 가능·단순
    3. Container 단일 Changed 이벤트 vs 세분화(Added/Removed/Updated/Reset): 세분화 채택. 기각 — 불필요 dispatch 감소·시그니처 가독성·ChangeArgs 박싱 회피
    4. Data DataTable<TRow> int 키 고정 vs 제네릭 <TKey,TRow>: 제네릭 채택. 기각 — 기존 MasterTableBase int 고정이 확장성 부족, 문자열·enum 키 수요 잦음
    5. CSV 파서 CsvHelper 외부 라이브러리 vs 최소 자체 구현: 최소 자체 채택. 기각 — Tier 1 외부 의존성 최소 원칙, 기획팀 통제 CSV라 RFC 4180 핵심(쉼표·따옴표·escape)만으로 충분
    6. JSON Newtonsoft.Json vs Unity JsonUtility: JsonUtility 채택(래퍼 기반). 기각 — PC 독립 설치 보장 어려움, 한계(Dictionary·polymorphism) 명시 후 고급 케이스는 호출자 자체 파싱 경로 안내
    7. 3개 모듈 asmdef 분리 vs 단일 유지: 단일 유지. 기각 — 현 파일 수 규모에서 단일 참조 소비자 경험 우위, DAG 명확하여 순환 위험 낮음. Tier 2 확장 시 재검토