Skip to content

feat: Payment repo를 backend repo에 병합#43

Open
MU-Software wants to merge 10 commits into
mainfrom
feature/migrate-purchase-repo
Open

feat: Payment repo를 backend repo에 병합#43
MU-Software wants to merge 10 commits into
mainfrom
feature/migrate-purchase-repo

Conversation

@MU-Software
Copy link
Copy Markdown
Member

작업 배경

  • 동일 개발자들이 개발하여 코드베이스가 대부분 유사하고, 덕분에 동일 역할 코드가 양측에 중복 구현된 경우가 많음
    • logger나 serializer 등등
  • 별도로 repo가 있다보니, 인프라에서 각 서비스별 설정을 2벌로 작업해야 함
  • API 관리가 어려워짐 + 일관성 하락
  • 기능이 양측에 분리되어 있어, 통합 개발이 어려움
    • 주문 관련 알림 시스템
    • 티켓에 발표자나 후원사 정보들을 연결시키기 어려움
    • 운영진 정보를 별도로 관리해야 함

이에 payment repo를 backend repo에 병합합니다.

주요 변경 사항

1. purchase_sharedapp/core 흡수

  • PortOne v1 client (core/external_apis/portone/)
  • TOTP / dateutil / str util (core/util/)
  • API Key 인증 (core/authn/api_key.py) + 권한 (core/authz/api_key.py)

2. python-korea-payment 의 결제 도메인 → app/shop/* sub-app

  • shop/order — Order, OrderProductRelation, OrderProductOptionRelation, SingleProductCart, CustomerInfo
  • shop/product — Product, OptionGroup, Option, Tag, Category, CategoryGroup
  • shop/payment_history — PortOne v1 webhook + 상태 전이 검증

3. UserExt / 인증 통합

  • UserExt.unique_id 추가 (QR scancode 식별자)
  • django-allauth 도입 (google_oauth2 와 병행)

4. ScanCode (QR 코드) 도메인

  • core/scancode_mixin.ScanCodeMixinUserExt / Order / OrderProductRelation 공통
  • shop/order/views/scancode.py 단일 viewset, prefix dispatch (user: / order: / opr:)

5. 어드민 (admin_api/views/shop/)

  • 주문 조회 / CSV import-export / 전체 환불 (TOTP 검증)
  • 상품 / 옵션 그룹 / 옵션 / 태그 CRUD
  • 주문 알림 미리보기 + 발송 (Celery 기반, transaction.on_commit enqueue)

6. 사용자 / 외부 API

  • internal_api/ — desk_support (등록 데스크 환불 등)
  • shop/patron.py — 후원자 목록 공개 API

7. 보안 / 정합성

  • 결제 webhook 멱등성 (state machine + select_for_update)
  • 환불 race 직렬화 (Order aggregate root row lock)
  • TOTP 정책 통일 (serializer context 기반)
  • 기타 다수 (cart validation 0원 차단, currency 검증, custom_response 무결성 등)

후속 작업 (별도 PR)

  • Data migration: legacy DB → 본 backend DB. user_id 매핑 (auto/manual/shifted) +
    shop 도메인 + simple-history 복사. cutover 시 LEGACY_DATABASE_* env var 설정 후 실행.
  • Cleanup: cutover 검증 완료 후 data migration 파일/설정 no-op 화.
  • payment repo archive: data 정합성 확인 + cutover 안정화 후.

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

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant