✅ Supabase 무료 한도 복귀 완료
2026-06-13 · 프로젝트 gongsome (Tokyo) · 어제 이어서 band/ 고아 폴더 삭제 완료
최종 결과 (실측)
무료 한도(1 GB)의 6% 수준으로 복귀.
Fair Use 경고(유예 2026-07-12) 원인 해소.
Egress 초과분은 배치 수집 트래픽이 원인이었으므로 수집 중단 상태에서 자연 해소 예상(다음 사용량 메일로 확인).
오늘 작업 — band/ 고아 폴더 삭제 (사용자 지시 후 실행)
- 사용자 지시: "닮은연예인 사진만 Supabase에서만 삭제하고 URL로 대체, 로컬 사진은 지우지 말 것."
- 삭제 직전 재검증: public 스키마 전 테이블의 텍스트류 컬럼 92개 전수 스캔 → 'celeb-photos/band/' 참조 0건 확인. 참조가 1건이라도 있으면 자동 중단되는 구조.
- 삭제 실행: band/ 경로만 9,932파일 · 7,985 MB 삭제 (경로가 band/ 시작인지 코드로 재확인 후 100개씩 배치).
- 불가침 확인: 회원 사진(member/ 42개·profile-photos 16개·review-photos 1개) 무접촉 · 로컬 파일 삭제 없음.
- 스크립트:
backend/delete-orphan-band-folder.mjs
현재 Storage 구성 (총 26.5 MB)
| 버킷 | 파일 수 | 용량 | 내용 |
| celeb-photos | 0 | 0 MB | 전량 외부 URL 전환 앱 회원 8명(member/)·밴드 잔여 2건(celeb/)까지 추가 전환 후 비움 |
| profile-photos | 16 | 24.5 MB | 보존 앱 회원이 직접 올린 프로필 사진 (불가침) |
| review-photos | 1 | 2.0 MB | 보존 후기 사진 |
→ 최종 총 26.5 MB (무료 한도의 2.7%). 추가 전환 시 새 이름 해석 규칙 적용:
여러 명 표기는 한 명당 1~2장씩 5장("정우성 이정재 박용우"), 군더더기는 이름만 추출("한테 물어보니 유희열"→유희열),
캐릭터도 검색("안경만두"). 스크립트 backend/switch-member-celeb-external.mjs.
대시보드 Usage 게이지는 최대 1시간+ 지연(중간에 5.589GB로 보인 것은 삭제 도중 스냅샷).
닮은연예인 사진은 어제(6/12~13 새벽) 작업으로 band_profiles 2,174/2,176행(99.9%)이 검증된 외부 URL을 사용 중.
잔여 2행("정우성 이정재 박용우"·"한테 물어보니 유희열")은 검증 통과 외부 URL이 2장 미만이라 기존 Supabase 사진 유지(3.1 MB — 영향 미미).
어제 미완 작업 라이브 검증 (오늘 추가 수행)
| 항목 | 검증 방법 | 결과 |
| 모바일 최신 번들 배포 여부 | 라이브 entry JS 해시 vs 로컬 dist 비교 | 일치 (어제 21:35 빌드본) |
| 만남가능지역 2곳 선택 | 라이브 E2E(헤드리스 크롬) — 서울특별시+경기도 동시 선택 | PASS |
| 채팅 뒤로가기(useGoBack 폴백) | 라이브 E2E — 채팅방 직접 URL 진입(히스토리 없음) → ← 클릭 → /matches 복귀 | PASS |
| 밴드 재수집(신규 6개 밴드 포함) | 수집 로그(6/11 done) + DB 집계 | 완료 — band_profiles 2,596건(6/10 이후 +14) |
| toDo list.txt 잔여 항목 | 코드·로그 대조 감사 | 전부 구현·배포 확인 (WORKLOG E4 표기 정정) |
E2E 스크립트: backend/test-meet-regions.mjs · backend/test-chat-back.mjs (전용 헤드리스 프로필 사용, 사용자 크롬 무접촉)
버그 수정 — "만남가능지역 2곳이 저장 안 됨" (진짜 원인 발견)
- 증상: 2곳을 선택해도 다시 들어가면 1곳(또는 0곳)만 남음.
- 원인: 지역 선택 자체는 정상. 나중에 필수화된 다른 항목(몸무게·실명 등)이 비어 있는 기존 계정은 프로필 수정 저장이 통째로 거부되는데,
실패 시 화면 스크롤만 되고 이유를 알려주지 않아 "지역이 저장 안 되는 것"처럼 보였음. (회원 9명 중 8명이 이 상태)
- 수정: 저장 실패 시 어떤 항목이 비었는지 목록으로 알려주는 알림 추가(profile-form onError) → 항목을 채우면 저장됨. 모바일 재배포 완료.
- 데이터: 우리가 만든 샘플 계정(버디왕·그린핑크)만 빈 필수값 보정. 실사용 계정은 건드리지 않음 — 수정 화면에서 알림이 채울 항목을 안내.
- 검증: 왕복 E2E PASS — 2곳 선택 → 저장 → DB "서울특별시, 경기도" → 재로드 후 2곳 유지(
backend/test-meet-regions-save.mjs).
- 추가 변경: 만남가능지역 한도 2곳 → 3곳(사용자 지시) — 폼 칩 제한·라벨·안내문·스키마 일괄 변경, 재배포.
E2E PASS: 3곳(서울+경기+인천) 저장·재로드 유지 + 4곳째 클릭 차단 확인.
- 거주지 시군구 복원(사용자 지시 — 밴드 양식 확인 결과 세부지역이 맞음): 시/도 선택 시 해당 시·군·구 칩 노출,
저장 형식 "시도 시군구"(예: 서울특별시 강남구). 시군구는 선택 사항이라 시/도만 저장된 기존 회원도 그대로 저장 가능.
만남가능지역은 시/도 단위(3곳) 유지. E2E PASS: 서울특별시→강남구 선택·저장·재로드 유지(
backend/test-region-district.mjs).
- 지역 정렬 변경(사용자 지시): 시/도 = 수도권(서울·경기·인천) 먼저 나머지 행정 순서, 시군구 = 가나다순.
라이브 확인: 서울→경기→인천→부산→대구 / 서울 구 = 강남구→강동구→강북구→…
- 회원 제목 매니저 톤 재작성(사용자 지시): 밴드 원문에서 매니저 코멘트 319건(여 234·남 85) 추출 분석 →
9명 전원 각자 프로필(닮은꼴·직업·성격·가능항목)과 연결된 실제 매니저 문체로 교체(나이·지역 언급 금지 준수). DB 직접 반영.
- 제목 v2 — 특수문자 절제(사용자 피드백): 원본은 특수문자가 없거나 문장 끝 1회가 대부분 →
9명 제목 전부 재작성(한 제목당 최대 1회: ~^^ 3명 / ~ 3명 / 없음 3명).
- 본인에게 매니저 제목 숨김(사용자 지시): 내 프로필 탭·내 프로필 보기에서 제거(타인이 보는 탐색·관심·상세는 유지). 재배포.
라이브 검증: 본인 화면 2곳 미노출 ✅ · 탐색 카드 타인 제목 표시 ✅.
밴드 → 관리자 자동 동기화 가동 (1단계)
- 작업 스케줄러 등록:
gongsome-band-realtime — 10분마다 realtime-tick.ps1 실행.
- 동작: 전용 프로필 헤드리스 크롬 자체 기동(사용자 크롬 무관) → 7개 밴드 새 글 수집(얕은 스크롤 전용 설정) → DB upsert → 시작한 크롬 PID만 종료. 중복 실행 방지 lock.
- 검증: 1틱 실제 실행 ≈ 4분, 신규 글 1건 자동 반영(band_profiles 2,596→2,597). 로그
_realtime.log.
- 한계: PC 켜져 있는 동안만. 2단계(24/7, PC 꺼져도) = Oracle Cloud 무료 VM(서울 리전) — 사용자 계정 가입만 필요, 이후 세팅은 자동화 가능.
- BAND 세션 만료 시 수집 0건 → 로그에 실패 반복되면 1회 재로그인 필요.
📱 앱 프로필/뱃지 개선 6건 + 재배포 (오후)
사용자 지시: "밴드와 최대한 비슷하게". 밴드 원문 양식(남성 번호양식 band 102327168) 직접 대조 후 반영.
- ① 닉네임·성별 변경불가 확인 팝업: 가입(생성 모드) 저장 시 "한 번 정하면 못 바꿔요 · 진짜 이대로?" 확인 다이얼로그 추가(
confirmAsync). 수정 모드는 기존대로 읽기전용.
- ② 인증 뱃지 시스템 전체 제거: mobile(badges 화면·메뉴·ApprovedBadges 표시·api 삭제) + admin(뱃지 검수 페이지·BadgeReviewActions·네비·카운트 삭제). 백엔드
badge_requests 테이블은 데이터 보존 위해 미삭제. 본인인증(가입 pass)은 별개라 유지.
- ③ 직업/결혼 순서: 6개 밴드 전수 집계(매니저 양식+회원글) 결과 직업→결혼이 공통 순서(남 18:0, 여성 글엔 직업 거의 없음). 남녀 모두 직업→결혼 유지(한 포스트만 보고 여성을 바꿨던 1차 시도는 철회).
- ④ 자가운전 여부: 자유 텍스트 → 필수 예/아니오 선택, '예' 선택 시 차종 입력칸 노출(미입력 시 저장 차단). 기존 값 자동 파싱 호환.
- ⑤ 남성 100% 지불조건 수긍여부: 자유 텍스트 → 네/아니요 선택형.
- ⑥ 닮은 연예인 직접 입력칸: 여성 전용 → 남성에도 추가(남성 선택, 여성 필수). 입력 시 프로필 표시에도 노출.
- 검증·배포: mobile/admin
tsc --noEmit PASS(소스 클린). 양쪽 프로덕션 재배포 완료 — mobile · admin. noindex 헤더·올바른 프로젝트 링크 유지.
🧩 남/여 프로필 밴드 풀버전 반영 (오후 2차)
밴드 양식을 한 포스트가 아닌 전체 매니저 글로 재분석(잘림 보정). 남성 14항목(기본형)/19항목(확장형, band 102324219) 확인 — 직업(7번)·닮은연예인(18번)이 실재함을 재확인.
- 여성: 앱 폼이 이미 밴드 여신 양식의 superset(직업·키몸무게·컵·결혼·골프·취미·주량흡연·차량·닮은연예인 + 스타일·이상형·1박골프·바라는매칭). 추가 없음.
- 남성 추가 2건(확장형에 있으나 앱에 빠졌던 항목): 체형/가장 자신있는 신체부위(11번, body_type 재활용) · 음주가무 정도(14번, 신규 컬럼
drinking_dance). 둘 다 남성 필수.
- 제외: 19번 '여성밴드 프로필 노출여부' = 앱은 관리자 승인제로 노출 제어 → 항목 불필요(N/A).
- DB: 마이그레이션
0048_male_drinking_dance.sql 적용(Supabase pooler). 직업 항목은 표준 확인 → 남녀 모두 필수 유지(이전 '여성 직업 거의 없음' 판단은 미리보기 잘림 오류였음).
- tsc PASS · 모바일 재배포 완료.
Reporter 상태
| ■ 진행률 | 프로필 밴드정합(6건+풀버전 남성2필드) 완료 · Supabase 한도초과 100% |
| ■ 완료 | 프로필 폼 6건(닉네임·성별 확인팝업 / 뱃지 제거 / 직업·결혼 순서 / 자가운전 예아니오+차종 / 지불조건 선택형 / 닮은연예인 남성추가) · mobile+admin 프로덕션 재배포 |
| ■ 진행 중 | 없음 |
| ■ 다음 작업 | 신규 지시 대기 · Fable 5 접근복구 모니터링(백그라운드). 보류: 밴드 24/7(Oracle 한국리전 미오픈) · EAS · 커스텀 SMTP |
| ■ BLOCKED | 없음 |
| ■ 승인 필요 | 없음 |
생성: Claude Code 자율 개발팀 · 데이터: Supabase DB(storage.objects) 실측 · 2026-06-13