최종 갱신 (KST)

← 일감 목록
T-047

산업·등급 등 enum의 한글 표시 이름을 엑셀에서 받아 오기 (지금은 코드 사본)

진우 Closed 우선순위 보통 목표 미정 · 보관됨

⚠️ 이 일감은 T-085로 흡수됐다 (2026-09-24). 조사 내용·근거·처리 항목은 전부 그쪽에 합쳐져 있다 — 여기서는 굴러가지 않는다. 이 파일은 그때의 경위 기록으로만 남긴다.

배경

한글 산업 이름을 런타임에 주는 곳이 없다. 이름이 세 군데에 흩어져 있고, 이미 어긋나 있다.

산업만의 문제가 아니다 (2026-09-16 확인). GlobalRarity도 똑같다 — 창고 도구 줄의 일괄 담기 드롭다운(일반 이하·고급 이하…)이 화면에 등급 이름을 내는데, 그 이름은 StorageToolPresenter.RarityNames 코드 배열에서 온다. Enum.xlsx의 Desc("일반, 흰색/회색 #9D9D9D")는 Enum.cs에 주석으로만 나가 런타임에 읽히지 않는다. 색도 같은 처지다(RarityPalette가 사본). 이 일감이 닫는 구멍이 등급까지 포함이다.

어디 무엇 런타임에 읽히나
GameDesign/Excel/Enum.xlsx의 Desc 칸 농사·낚시·채광… ❌ — EnumGenerator가 // 농사 주석으로만 내보낸다
씬의 산업 버튼 5개 TMP 텍스트 농사·낚시·채굴·벌목·사냥 사람이 손으로 박아 둔 값
Assets/Scripts_Client/UI/Shared/IndustryLabel.cs 농사·낚시·채굴… ✅ — 2026-09-11에 클라가 급히 만든 사본(T-046)

🔴 엑셀은 "채광", 씬과 기획은 "채굴"이다. 기획 문서에 미해결로 이미 적혀 있다 — mining/README.md 157행: "IndustryType.Mining·ItemType.Mining 주석이 둘 다 '채광'인데 기획 용어는 '채굴'이다. Enum.xlsx에서 용어를 통일할 것" 이 일감이 그 항목도 함께 닫는다.

왜 서버에 요청하나

이름의 출처가 될 파이프라인이 서버 영역이다. 클라가 손댈 수 없다.

  • Server/ExcelGenerator/EnumGenerator.cs — Enum.xlsx → Enum.cs 생성기
  • GameDesign/generate-tables.ps1 — 생성물을 Server/GameData · Assets/Scripts_Server/GameData로 미러링

클라에서 할 수 있는 것은 "코드에 한 벌 더 적어 두기"뿐이고, 그게 지금 상태다. IndustryLabel.cs는 급한 자리를 막은 사본이지 출처가 아니다 — 기획이 이름을 바꾸면 엑셀과 코드 두 곳을 고쳐야 하고, 한쪽을 잊으면 화면만 옛 이름으로 남는다.

할 일 — A안 기준 (B안 선택지는 아래)

A. Enum.xlsx의 표시 이름을 런타임 데이터로도 내보낸다

  • [ ] ⚠️ Desc 칸을 그대로 쓰지 않는다. Desc는 표시 이름 전용이 아니라 메모 칸이다 — GlobalRarity의 Desc는 "일반, 흰색/회색 #9D9D9D"다. 그대로 화면에 내면 등급 이름이 저렇게 뜬다. 표시 이름 전용 컬럼(예: Label)을 새로 두고, 비어 있으면 멤버 이름(영문)으로 떨어뜨린다.
  • [ ] EnumGenerator가 그 컬럼을 조회 가능한 형태로 함께 생성한다 (Enum.cs 옆에 라벨 맵 — enum 값 → 표시 이름. GameData 네임스페이스여야 서버·Unity가 같이 쓴다)
  • [ ] 빈 칸·오타 대응을 정한다 — 없는 값을 물으면 무엇을 돌려주나 (영문 이름 권장. 빈 문자열은 화면에서 조용히 사라져 무엇이 빠졌는지 드러나지 않는다)
  • [ ] Mining의 표시 이름을 채굴로 통일한다 (기획 용어) — IndustryType·ItemType 둘 다
  • [ ] 재생성 + 미러링 확인 (generate-tables.ps1 → Assets/Scripts_Server/GameData)

덤이 크다. 산업만이 아니라 ItemType·GlobalRarity·GachaRewardType 등 모든 enum이 같은 경로로 이름을 얻는다. 지금은 등급 이름도 화면에 낼 수단이 없다.

B. 대신 산업 마스터 시트를 만드는 선택지

산업이 "이름 하나"로 끝나지 않게 되면 A로는 부족하다. 아이콘·설명·정렬 순서·대표 색이 붙기 시작하면 그건 enum의 라벨이 아니라 행(row) 이다.

  • GameDesign/Excel/Industry.xlsx에 산업 마스터 시트(IndustryTable)를 두고 IndustryType · 표시 이름 · (뒤에 아이콘·정렬순서…)를 담는다
  • 클라는 GameDataLoader로 읽는다 — 다른 테이블과 같은 경로라 새 구조가 아니다

판단은 서버가 한다. 가르는 질문 하나:

이름 말고 더 붙을 것이 지금 보이는가? 안 보이면 A — 모든 enum이 한 번에 해결되고 표가 하나도 안 늘어난다. 보이면 B — A로 가면 아이콘이 붙는 날 표를 새로 만들면서 이름만 두 군데가 된다. (둘 다 하지는 않는다. 이름의 출처가 또 둘이 된다)

⚠️ B를 고르면 클라 후속 작업의 호출 코드가 달라진다(테이블 조회 vs 라벨 맵). 고른 쪽을 이 일감에 적어 주면 클라가 그에 맞춰 걷어낸다.

서버가 끝나면 클라가 할 일

이건 클라 담당이고 이 일감 안에서 이어서 한다. 선행은 위 A(또는 B)뿐이다.

  • [ ] Assets/Scripts_Client/UI/Shared/IndustryLabel.cs 삭제 (.meta까지 — 유니티에서 지운다)
  • [ ] UI/Storage/StorageToolPresenter/StorageToolPresenter.cs의 RarityNames 배열 삭제 — 일괄 담기 드롭다운(BuildRarityOptions)과 "담을 자원이 없습니다" 알림 두 곳이 쓴다. SellRarities는 남긴다(값의 목록이지 이름이 아니다)
  • [ ] 호출부를 새 출처로 교체 — 둘이다 (2026-09-20 재확인) - UI/Storage/StorageGridPresenter/CharacterSlotSource.cs → ✅ 호출이 사라졌다 (2026-09-12 · T-048) — 창고 칸의 적성 표시가 문구에서 5칸 스트립으로 바뀌어 산업 이름을 아예 쓰지 않는다 - UI/Main/WorkStationListPresenter/WorkStationSlotView.cs:58 — 작업슬롯 칸의 산업 이름 - UI/Storage/StorageGridPresenter/EquipSlotSource.cs:128 — 장비 효과 문구 (2026-09-19 T-043에서 생겼다) ⚠️ 여기는 None을 IndustryLabel에 넘기지 않는다 — '미지정'이 아니라 '전체'로 읽혀야 한다
  • [ ] 씬의 산업 버튼 5개 라벨도 코드가 채우게 한다 — WorkStationSelectPresenter.BindIndustryButtons에서 버튼 순서와 산업이 이미 1:1로 묶이므로 라벨도 그 자리에서 넣으면 된다. ⚠️ 이걸 해야 3중이 1중이 된다. 안 하면 씬에 손으로 박은 이름이 그대로 남아 엑셀에서 이름을 바꿔도 버튼만 옛 이름으로 남는다 > 같은 화면의 산업 레벨 버튼 5개는 이미 코드가 채운다(2026-09-20 · T-068) — > 이름이 산업마다 다른 파생값(IndustryLevelTable.Name)이라 씬에 박을 수가 없었다. 산업 버튼도 같은 자리에서 하면 된다. > 특성 화면(TraitPresenter)도 IndustryLabel을 쓰지 않는다 — 노드 이름을 테이블에서 그대로 읽는다.
  • [ ] 문서 갱신 - UI/System/System 규칙.md — 정적 변환표에서 IndustryLabel.cs 줄 삭제 - UI/Storage/Storage 규칙.md → ✅ 대상이 이미 없다 (2026-09-12) — T-048이 그 절을 다시 쓰면서 IndustryLabel 언급이 함께 사라졌다(문서에 0건) - UI/UI 배치 현황.md — 산업 버튼 라벨이 코드에서 온다는 사실 반영 - mining/README.md 157행 — 채광/채굴 항목을 닫는다 (공용 영역이라 서버와 함께)
  • [ ] .claude/Agent/2026-09-11-assign-list-filter-and-row-prefab.md의 "한글 산업 이름은 테이블에 없다" 지뢰 항목에 해소됨 한 줄

완료 조건

엑셀에서 산업 이름을 고치고 파이프라인을 돌리면, 코드를 한 줄도 안 고쳐도 화면의 이름이 바뀐다. (창고 칸 · 작업슬롯 칸 · 산업 버튼 셋 다) 등급 이름도 같은 경로로 온다(창고 도구 줄 드롭다운).

막고 있는 것 / 선행 일감

  • 서버 쪽은 선행이 없다. 지금 착수 가능하다.
  • 클라 후속은 서버 쪽 완료가 선행이다. 그전까지 IndustryLabel.cs가 그 자리를 대신한다 — 급하지 않다. 산업 5종은 패킷 enum(EIndustryType)에 박혀 있어 산업이 늘어나려면 어차피 엑셀·서버·클라를 동시에 고쳐야 한다(PacketEnumTest가 두 enum의 어긋남을 잡는다). 실제 위험은 "이름만 바뀌는 경우" 하나다.

관련 커밋

  • 없음

참고

  • Server/ExcelGenerator/EnumGenerator.cs — AppendEnum(Desc → 주석) · ResolveColumns(1행 EID/Name/Desc)
  • Server/ExcelGenerator/ExcelGenerator.cs · TableCodeGenerator.cs — 표 쪽 생성·JSON 사이드카
  • GameDesign/generate-tables.ps1 — 생성 → 미러링 순서
  • GameDesign/CLAUDE.md · excel-table-creator — 시트·컬럼 규칙
  • T-046 — IndustryLabel.cs가 생긴 경위