Skip to content

[FB-259] data-converter ab0322863이 to_kst/kst_to_utc를 to_local/local_to_utc로 바꿔 재생성 시 빌드·이벤트 시각이 깨짐 #680

Closed

Description

@boyism80

심각도: medium · 근거 강도: 확실
발견: 2026-10-16 21:45 KST push 리뷰 1a672d602 (tools/data-converter dee388448 → ab0322863)
연관: #675 (FB-254, build.txt return datetime() 잔여)

문제

data-converter ab0322863(feat: convert UTC with the local time zone)이 Template/C++/datetime.txt에서 고정 UTC+9 변환 to_kst()/kst_to_utc()를 프로세스 시간대 변환 to_local()/local_to_utc()로 교체했다. fb에 커밋된 include/fb/model/datetime.h는 아직 옛 API라 현재 런타임 영향은 없다. 다만 tools/update-data.bat가 datetime.h를 덮어쓰면 바로 문제가 된다.

  1. 컴파일 깨짐: fb 호출처가 전부 to_kst/kst_to_utc를 쓴다.
    • server/game/src/model/model.additional.cpp (이벤트 cron/at — 주석상 Korean civil times)
    • server/game/src/server/server.cpp, include/fb/game/server.h
    • service/bulletin.cpp, protocol/bulletin/mail(s).cpp, builtin/server.cpp
  2. 의미 변경: 고정 KST(+9)가 아니라 프로세스 TZ다. 컨테이너/Dockerfile에 TZ·Asia/Seoul 설정이 없으면 기본이 UTC라, 기계적으로 이름만 바꿔도 게시판·메일 표시·게임 이벤트 스케줄이 9시간 어긋날 수 있다.
  3. FB-254 잔여와 겹침: 같은 재생성 경로에서 build.txt 폴백 return datetime();도 아직 남아 있다([FB-254] data-converter dee388448에서 datetime 기본 생성자가 사라져 update-data.bat 재생성 시 빌드가 깨짐 #675).

수정 방향

  • 재생성 전에 호출처를 to_local/local_to_utc로 옮기거나, 한국 시민시가 목표면 변환 API를 명시적으로 유지한다.
  • 이벤트·표시처럼 KST가 필요한 경로는 프로세스 TZ=Asia/Seoul을 배포에 고정하거나, UTC 저장 + 표시/스케줄만 고정 오프셋·명시 존 변환을 쓰도록 맞춘다.
  • #675와 함께 한 번의 update-data.bat 재생성 커밋에서 build.txt 폴백·API 이름·호출처·컨테이너 TZ를 같이 맞춘다.

Activity

  1. boyism80 commented on Oct 16, 2026

    @boyism80
    OwnerAuthor

    [FB 리뷰어] 1c2ca9bfa에서 부분 해결을 확인했어요. fb 쪽 datetime.h와 호출처가 to_local/local_to_utc로 옮겨져 재생성할 때 컴파일이 깨지는 문제는 없어졌어요. 다만 infra·Dockerfile 어디에도 TZ가 설정돼 있지 않아요. 컨테이너가 UTC로 뜨면 이벤트 시각 판정과 표시가 KST보다 9시간 어긋나요. 배포에 TZ=Asia/Seoul을 고정하거나 KST 고정 변환을 쓰면 닫을게요. open으로 둘게요.

  2. boyism80 commented on Oct 16, 2026

    @boyism80
    OwnerAuthor

    [FB 리뷰어]
    호출처 to_local/local_to_utc 이전(1c2ca9b)에 더해 ce5d1119d가 런타임 이미지에 TZ=Asia/Seoul을 넣고 fb 베이스에 tzdata를 설치했습니다. C++ datetime의 localtime_r/mktime이 프로세스 TZ를 쓰므로 재생성·런타임 시각 어긋남 잔여는 해소된 것으로 보고 닫습니다.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    bugSomething isn't working

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions