Skip to content

[Feat] 맵 기능 확장을 위한 건물/부대시설 도메인 분리 기반 마련 #372

@rlagkswn00

Description

@rlagkswn00

배경

  • 현재 club 테이블이 building, room, lat, lon을 직접 보유하고 있어 건물 정보가 club에 종속되어 있습니다.
  • 앞으로 맵 기능에서 건물 단위 좌표와 부대시설 정보를 공통으로 관리해야 합니다.
  • 기존 이슈 [Feat] 동아리 기능 API 개발 #336 에서 동아리 기능 API 개발을 진행했지만, 건물 정보는 맵 확장 관점의 독립 도메인으로 정리되어 있지 않습니다.

목표

  • building을 독립 마스터 테이블로 분리합니다.
  • facility, building_facility를 도입해 건물별 부대시설 확장 기반을 마련합니다.
  • clubbuilding_id를 참조하고 room만 직접 유지합니다.
  • club 상세 API의 location.building/room/lon/lat 응답 계약은 유지합니다.

비목표

  • 맵 전용 조회 API 구현
  • admin 입력/수정 API 구현
  • 부대시설 운영 데이터 입력 절차 구축
  • club.building, club.lat, club.lon legacy 컬럼 제거까지 한 번에 처리

제안 동작

  • building(id, name, lat, lon) 테이블을 생성합니다.
  • facility(id, code, name)building_facility(id, building_id, facility_id, detail)를 생성합니다.
  • club.building_id nullable FK를 추가하고 room은 유지합니다.
  • 마이그레이션은 expand -> backfill -> switch -> contract 순서로 진행합니다.
  • 1차에서는 새 테이블과 FK를 추가합니다.
  • 2차에서는 기존 club.building/lat/lon에서 building 데이터를 백필하고 club.building_id를 연결합니다.
  • 3차에서는 조회 로직을 building join 기준으로 전환하되 API 응답은 유지합니다.
  • legacy 컬럼 drop은 운영 검증 후 후속 이슈로 분리합니다.

수용 기준

  • building, facility, building_facility 스키마가 생성되어 있습니다.
  • 위치가 있는 club은 building join 기반으로 기존과 동일한 location 응답을 제공합니다.
  • club.room은 유지됩니다.
  • 건물당 대표 좌표 1개를 저장할 수 있습니다.
  • 건물별 시설 보유 정보와 상세 메모를 저장할 수 있습니다.
  • club 구독/알림/모집 상태 등 기존 기능에 회귀가 없습니다.
  • 백필 후 club.building_id가 필요한 데이터에 정상 연결됩니다.

Metadata

Metadata

Assignees

Labels

No fields configured for Feature.

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions