diff --git a/.gitea/workflows/deploy.yml b/.gitea/workflows/deploy.yml index 3190574..c80849d 100644 --- a/.gitea/workflows/deploy.yml +++ b/.gitea/workflows/deploy.yml @@ -9,14 +9,14 @@ jobs: deploy: runs-on: ubuntu-latest steps: - # 단일 워크플로 결과 = webhook 트리거 + 헬스체크가 한 번이라도 성공 - # 헬스체크에서 빌드가 늦어져 polling 안에 못 들어와도 워크플로는 ✅ 로 종료한다 — - # 실제 운영 반영은 webhook 이 받아간 시점에 분리된 deployer 컨테이너가 계속 진행. - # 사용자 시각의 "녹색 = 자동배포 정상" 상태를 보장. + # 단일 step — webhook 트리거만. 운영 빌드/swap 은 분리 deployer 컨테이너가 비동기로 진행. + # 워크플로는 webhook 호출 성공 시점에 즉시 ✅ 로 종료한다 (보통 5~10초). + # 운영 실제 반영 검증: https://momotogether.com/build-sha.txt 또는 + # curl -k 'https://momotogether.com/api/deploy/webhook?token=momo-deploy-2026-secure' 로 로그 조회. - name: Trigger deploy webhook run: | set -e - echo "▶ webhook 호출: https://momotogether.com/api/deploy/webhook" + echo "▶ POST https://momotogether.com/api/deploy/webhook (sha=${{ github.sha }})" HTTP=$(curl -ksS -m 30 -o /tmp/resp.json -w "%{http_code}" \ -X POST "https://momotogether.com/api/deploy/webhook" \ -H "X-Deploy-Token: momo-deploy-2026-secure" \ @@ -27,27 +27,4 @@ jobs: echo "::error::webhook 호출 실패 (HTTP=$HTTP)" exit 1 fi - echo "::notice::✔ webhook 트리거 성공 — 운영에서 분리 deployer 컨테이너가 git pull/build/swap 진행" - - # 부가 확인 (선택). 짧게만 검증 — 워크플로 시간을 ~1분 내로 유지. - # 실제 빌드는 보통 60-90초라 polling 안에 안 들어와도 정상. - # 운영 반영 확인은 https://momotogether.com/build-sha.txt 직접 또는 - # webhook 로그(/api/deploy/webhook?token=...) 로. - - name: Healthcheck (informational, 짧게) - continue-on-error: true - env: - EXPECTED_SHA: ${{ github.sha }} - run: | - EXPECTED="${EXPECTED_SHA}" - echo "▶ 기대 SHA: $EXPECTED" - sleep 10 - for i in 1 2 3 4 5 6; do - REMOTE=$(curl -ksS -m 4 -L "https://momotogether.com/build-sha.txt?_=$(date +%s)" 2>/dev/null | tr -d '[:space:]' || true) - echo " ${i}/6: 운영 SHA=${REMOTE:-(없음)}" - if [ -n "$REMOTE" ] && [ "$REMOTE" = "$EXPECTED" ]; then - echo "::notice::✔ 운영에 신버전(${REMOTE:0:8}) 반영 확인 (${i}회차)" - exit 0 - fi - sleep 5 - done - echo "::notice::polling 안에 build-sha 갱신 미확인 — 빌드가 더 오래 걸리는 케이스. 1~2분 후 운영에 자동 반영됩니다." + echo "::notice::✔ 자동배포 트리거 — 운영 deployer 컨테이너에서 git pull→build→swap 진행 중 (보통 60~90초 후 반영)" diff --git a/src/components/push-optin.tsx b/src/components/push-optin.tsx index addf3ab..3666799 100644 --- a/src/components/push-optin.tsx +++ b/src/components/push-optin.tsx @@ -177,10 +177,36 @@ export function PushOptIn({ variant = "compact" }: PushOptInProps) { setDenied(perm === "denied"); if (perm !== "granted") { writeIntent("off"); + // 안드로이드 OS 알림은 "허용" 인데도 여기서 denied 가 나오는 경우 = TWA 의 + // Chrome 사이트별 권한이 막혀 있음 (Android 앱 알림 권한과 별개 시스템). + // → Chrome 사이트 권한을 풀거나, 앱 데이터를 삭제해 처음 prompt 부터 다시. await Swal.fire({ icon: "warning", - title: "알림 권한이 허용되지 않았습니다", - html: `
기기/앱 설정에서 알림 허용 으로 변경하고 페이지를 새로고침 한 뒤 다시 시도하세요.

안드로이드 앱(모모유통)
설정 → 앱 → 모모유통 → 알림 → 허용

현재 권한: ${perm}
`, + title: "알림 권한이 차단된 상태입니다", + html: `
+
+ 💡 안드로이드 앱 알림은 '허용됨' 인데 왜 안 켜지나요?
+ 안드로이드 앱 알림 권한 ≠ 사이트(Chrome) 알림 권한. Chrome 의 사이트별 알림 권한이 차단돼 있어서 그렇습니다. +
+ +✅ 가장 빠른 방법 — 앱 데이터 삭제 후 재로그인 +
    +
  1. 설정 → 앱 → 모모유통 ERP
  2. +
  3. 저장공간 → 데이터 삭제
  4. +
  5. 앱 다시 열기 → 로그인 → 회원정보 → 푸시 알림 토글
  6. +
  7. 이번엔 "알림을 표시하시겠습니까?" prompt 가 뜨면 허용
  8. +
+ +✅ 방법 2 — Chrome 앱에서 직접 허용 +
    +
  1. Chrome 앱 → 메뉴(⋮) → 설정 → 사이트 설정 → 알림
  2. +
  3. 차단됨 목록에서 momotogether.com 찾아서 → 허용
  4. +
  5. 모모유통 앱으로 돌아와 새로고침 → 토글 다시
  6. +
+ +진단: 안드로이드 OS 알림=허용 / Chrome 사이트 권한=${perm} +
`, + width: 520, }); return false; }