📝 작업 내용
PaymentJpaEntity 기준으로 V2__create_payment_tables.sql Flyway 마이그레이션 파일을 작성한다.
V1(community 피드)은 이미 존재하며, payment 테이블 DDL이 없어 ddl-auto=validate 및 운영 배포 시 스키마 불일치가 발생할 수 있다.
payment 테이블 CREATE + 인덱스
payment_key UNIQUE INDEX (tossPaymentKey 멱등성 보장)
(status, created_at) 복합 INDEX (타임아웃 Job findByStatusAndCreatedAtBefore 쿼리)
order_id INDEX (주문 기준 조회)
- FK는 V1 컨벤션과 동일하게 의도적 생략 (앱 레벨 정합성, MSA 전환 대비)
컬럼 목록
| 컬럼명 |
타입 |
제약 |
설명 |
id |
BIGINT |
PK, AUTO_INCREMENT |
결제 식별자 |
order_id |
BIGINT |
NOT NULL |
주문 참조 (FK 생략) |
payment_key |
VARCHAR(255) |
UNIQUE |
tossPaymentKey (PG 고유 키, 멱등성 키) |
amount |
BIGINT |
NOT NULL |
결제 금액 (원 단위) |
method |
VARCHAR(100) |
NULL |
결제 수단 (CARD 등, 웹훅 수신 후 기록) |
status |
VARCHAR(50) |
NOT NULL |
PENDING / SUCCESS / FAILED |
paid_at |
DATETIME(6) |
NULL |
결제 성공 시각 |
failed_at |
DATETIME(6) |
NULL |
결제 실패 시각 |
created_at |
DATETIME(6) |
NOT NULL |
생성 시각 (변경 불가) |
version |
INT |
NOT NULL DEFAULT 0 |
낙관적 락 버전 |
Definition of Done (DoD)
📅 마감 기한
Related
📝 작업 내용
PaymentJpaEntity기준으로V2__create_payment_tables.sqlFlyway 마이그레이션 파일을 작성한다.V1(community 피드)은 이미 존재하며, payment 테이블 DDL이 없어
ddl-auto=validate및 운영 배포 시 스키마 불일치가 발생할 수 있다.payment테이블 CREATE + 인덱스payment_keyUNIQUE INDEX (tossPaymentKey 멱등성 보장)(status, created_at)복합 INDEX (타임아웃 JobfindByStatusAndCreatedAtBefore쿼리)order_idINDEX (주문 기준 조회)컬럼 목록
idorder_idpayment_keyamountmethodstatuspaid_atfailed_atcreated_atversionDefinition of Done (DoD)
📅 마감 기한
Related
apps/api-server/src/main/resources/db/migration/V1__create_community_feed_tables.sql(네이밍·컨벤션 참고)docs/erd/erd-design.md§3 PAYMENT