[BE-21] posts 테이블 확장 마이그레이션 (community_id·sport_category·global_listed)

작업 내용 (설계 의도)

변경 사항

근거 TDD: 20260707-post-community-연동-tdd.md ERD / Release Scenario 1. posts 테이블에 3컬럼을 추가한다(FK 없음, private-db-schema-convention 준수). senior-dba가 인덱스를 쿼리 근거로 확정하고 private-mysql-implementer가 Flyway로 작성한다.

  • community_id BIGINT NULL — 모임 소프트참조(NULL=전역, FR-1)
  • sport_category VARCHAR(30) NULL — 종목 분류(ENUM 금지→VARCHAR, FR-5)
  • global_listed TINYINT(1) NOT NULL DEFAULT 1 — 전역 피드 노출(BOOLEAN 금지→TINYINT). 기존 행=전역=1 정상값이라 단일 마이그레이션 안전
  • 인덱스 후보: (sport_category, deleted_at), (community_id, deleted_at), (global_listed, deleted_at)ALGORITHM=INPLACE, LOCK=NONE. 실제 채택은 senior-dba design-db 쿼리 매핑 근거.

롤백

역방향 DDL로 3컬럼·인덱스 DROP (코드 미배포 상태에서 실행 → 안전, expand-contract 1단계).

의존

  • 없음 (선행 wave 단독)

다이어그램

클래스 의존

flowchart LR
    mig[V56 마이그레이션] --> posts[(posts)]
    posts -->|community_id| ref[community soft ref]
    posts -->|sport_category| sc[종목 필터]
    posts -->|global_listed| feed[전역 피드]

테스트 케이스

  • 마이그레이션이 로컬 MySQL 8.0에서 exit 0으로 적용된다(기존 V9·V10 이후 순서)
  • 기존 posts 행이 마이그레이션 후 community_id=NULL, sport_category=NULL, global_listed=1을 갖는다
  • 신규 컬럼이 nullable/타입/COMMENT 규칙을 만족한다(TINYINT·VARCHAR, FK 없음)
  • 역방향 DDL로 3컬럼 DROP 시 오류 없이 복구된다