| # | 요청 | 처리 내용 | 상태 |
|---|---|---|---|
| 1 | 사진 캡처·도용·무단 유포 시 처벌 문구를 이용약관에 추가 | 제6-2조 신설 — 캡처·녹화·스크린샷·저장·복제·유포 금지 + 정보통신망법/개인정보보호법/저작권법·민법(초상권)/성폭력처벌법(불법촬영물) 근거로 민·형사상 처벌 명시. docs/TERMS.md + 앱 terms.tsx 동시 반영, 도용 의심 사진 사전통보 없이 삭제 조항 포함. |
완료 |
| 2 | reference 영상 2건 보고 타 앱 약관·필수동의 항목을 우리에 맞게 업데이트 | 영상(288MB·325MB)을 ffmpeg로 376프레임 추출 → Windows 한국어 OCR로 텍스트화. 골프썸·그린라이트 약관/동의 구조 분석 후 우리 도메인에 맞게 반영: 가입 시 필수/선택 동의 항목 명시(이용약관·개인정보 수집이용·제3자제공=필수, 마케팅=선택), 게시물·콘텐츠 권리/초상권(제6-3조), 회원 의무(제6-4조). 우리는 위치기반서비스 미제공 → 해당 약관 제외 명시. | 완료 |
| 3 | 휴면 회원: 탐색에선 숨기되 보낸 관심·매칭에선 유지하고 사진 위 '휴면' 표시 | 기존엔 RLS가 휴면을 모든 화면에서 숨겨 관심·매칭에서도 사라졌음. 마이그레이션 0022로 "관심·매칭 관계가 있으면 휴면이어도 조회 가능"하게 RLS 완화 + 탐색 쿼리는 is_hidden=false로 명시 제외. ProfilePhoto에 휴면 배지 오버레이 추가(관심탭·매칭탭·상세). |
완료 |
| 4 | 제목에 'unidentified'라고 뜨는 버그 | 밴드 임포트 프로필의 celeb_lookalike가 'unidentified'였고 제목에 그대로 삽입됨. 제목 생성기가 unidentified/unknown/미상/없음 등 무의미 값을 무시하도록 수정 + displayTitle()로 이미 저장된 깨진 제목은 표시 시 프로필 기반 재생성. |
완료 |
| 5 | 프로필에 지역 있는데 제목에도 지역 → 중복 | 제목 생성 템플릿에서 지역 토큰 전면 제거. 저장된 제목에 지역이 포함되면 displayTitle()이 자동 재생성하여 중복 제거. |
완료 |
| 6 | 회원관리 화면에 등급도 보이게 | 회원 목록에 등급 컬럼 추가 — 가입유형(⭐VIP/일반) + 회원등급(정회원/준회원) 뱃지. 휴면 회원 행 표시도 추가. | 완료 |
| 7 | 회원관리 검색에 전체 프로필 + 연락처 포함 | 검색을 닉네임·지역·제목 → 전체 프로필 항목(직업·취미·스타일·자기어필 등) + 연락처(전화·카카오·연락시간) + 이메일로 확장. 연락처는 관리자 전용 RPC admin_member_contacts()(마이그레이션 0023)로 안전 조회. |
완료 |
| 8 | 회원관리 엑셀 다운로드에 전체 프로필 + 실제 연락처 포함 | CSV를 8개 컬럼 → 34개 컬럼(전체 프로필 + 이메일·전화·연락시간·카카오ID + 등급·휴면)으로 확장. UTF-8 BOM 유지(엑셀 바로 열림). | 완료 |
| # | 요청 | 처리 | 상태 |
|---|---|---|---|
| N1 | 가입 시 비밀번호 2번·일치 시만 가입 | 비밀번호 확인 필드 + zod refine 일치 검증 | 완료 |
| N2 | 스타일·성격분위기 최대 3개 | 이미 구현됨(maxSelect:3, ChipMultiSelect 강제) — 확인 | 완료 |
| N7 | 프로필 탭 사진추가 작동 안함 | 원인: 웹에서 await(개수조회) 후 picker 호출→제스처 끊겨 파일창 안뜸. picker를 먼저 호출하도록 수정 | 완료 |
| N8·N13 | 관리자 모바일 세로/보기 불편 | AdminShell 반응형(브랜드+로그아웃 상단, 내비 가로스크롤), 패딩·sticky 헤더 | 완료 |
| N9 | 대시보드 수치 클릭 시 이동 | 카드를 Link로 변경(회원/활동/신고/사진 바로가기) | 완료 |
| N10 | 입금계좌 복사 버튼 | expo-clipboard 설치 + 충전화면에 "계좌번호 복사" 버튼 | 완료 |
| N11·N18 | 제목 이모지 중복·'그녀/그남'·기계적 | '그녀/그남' 제거, 매니저 톤 호칭·마무리 문구 확장, 이모지 풀 확대+독립 시드로 중복 완화 | 완료 |
| N14 | 채팅 Enter 전송 | 웹 Enter=전송, Shift+Enter=줄바꿈(onKeyPress) | 완료 |
| N17 | 하단 탭 글자 잘림 | '내 프로필'→'프로필', 라벨 폰트·여백 조정 | 완료 |
| N6 | VIP 그린라이트 골드요금제 참고 보고서(미적용) | reports/0017-vip-gold-pricing-reference.md | 완료 |
| N12 | 밴드별 남녀 인원 보고서 | reports/0018-band-roster-report.md — 스크랩된 1개 밴드만 가용, 추가 6개 밴드는 미스크랩(현황·한계 명시) | 부분(데이터 대기) |
DB password로 Postgres(세션 풀러) 직접 접속 → 마이그레이션 적용 러너(backend/apply-migration.mjs) 구축. 0022·0023·0024·0025·0026 적용 완료.
| # | 요청 | 처리 | 상태 |
|---|---|---|---|
| N5 | 내 프로필 탭 오늘 방문자 수 | profile_visits(0024)+집계 RPC, 프로필 열람 시 기록, 프로필 탭에 "오늘 방문자 N명" | 완료 |
| N23 | 관리자 변경점(changelog) 탭 | changelog(0025)+과거 이력 시드, 관리자 페이지(추가 폼·항목별 코멘트) | 완료 |
| N3 | VIP 결제+관리자 승인 승급 | 가입 VIP 자가부여 제거, vip_requests(0026), 프로필 VIP 신청 화면, 관리자 VIP 승급 탭(승인/거절/회수) | 완료 |
| # | 요청 | 처리 | 상태 |
|---|---|---|---|
| N21 | 인증 뱃지 시스템 + 관리자 승인/거절(사유) | badge_requests(0027), 8종 뱃지 신청(증빙 사진), 프로필 표시, 관리자 뱃지 검수(증빙 미리보기·거절 사유) | 완료 |
| N19 | 리뷰 탭 게시판식 + 추천 | reviews/review_likes(0028), 후기 탭(작성·별점·추천), 관리자 후기 검수, RLS로 누구나 열람 | 완료 |
| N20 | 리뷰 쓰면 여성 버디 지급 | 여성 후기 승인 시 버디 +2(중복 방지) | 완료 |
| N4 | 가입 관리자 승인제 | profiles.is_approved(0029), 기존 자동승인, 미승인=승인대기 화면+탐색 제외, 관리자 회원관리에 가입승인 | 완료 |
| N16 | 매칭 시 여성도 남성 번호·사진 | contacts_matched 정책(0030)으로 매칭 시 연락처 양방향(사진은 0013에서 기존 양방향), 상세화면에 매칭 시 공개 | 완료 |
| N15 | 모임 신청 남/여 숫자 | 관리자 모임 페이지에 모임별 (남 N · 여 N) 표시 | 완료 |
사용자 본인 로그인 세션으로 7개 밴드 전체 수집(band-collector, PII 자동 마스킹) → 파싱·DB 적재(남/여 분리). 관리자 "밴드 프로필" 탭(성별 필터·검색·밴드별).
| 밴드 | 성별 | 인원 |
|---|---|---|
| 남성프로필 (85487507) | 남 | 18 |
| 공치고썸타고매칭조인 (102324219) | 여 | 108 |
| 골프파트너 (71405498) | 여 | 10 |
| 여성프로필 (85486348) | 여 | 9 |
| 공썸여성무료골프 (102327168) | 여 | 8 |
| 여성무료골프 (71301317) | 여 | 5 |
| 여자 (102767068) | 여 | 1 |
| 합계 | 남 18 · 여 141 | 159명 |
닉네임·출생년도(137명)·지역·구력·직업·결혼·신체 등 파싱 + 원문 보존. 파서: backend/ingest-band-profiles.mjs(🔸/번호 두 형식). 마이그: 0032.
toDo 1~112 전 항목을 코드와 대조(서브에이전트 2개 병렬 감사). 대부분 구현돼 있었고, 발견된 누락을 보완했습니다.
| 항목 | 누락 내용 | 처리 | 상태 |
|---|---|---|---|
| #14a | 매칭후기 비로그인 열람 | 공개 후기 화면(reviews-public)+로그인화면 진입, RLS anon 허용 | 보완 |
| #14c | 후기 안 쓰면 다음날부터 소개 차단 | 가입 1일 경과+후기 0건이면 탐색에 CTA 노출(후기 작성 유도) | 보완 |
| #37 | 관심 받으면 알림 | 관심 탭 안읽음 배지(notifications), 탭 열면 읽음 처리 | 보완 |
| #63 | 관리자에 실명 표시 | real_name 수집(필수·비공개) + 관리자 상세·검색·엑셀 포함(0031) | 보완 |
| #2 | 다크모드 | 전 화면 색상 하드코딩 → 전용 테마 리팩터 필요(대규모). 반쪽 적용은 깨져 보여 별도 작업 권장 | 남음(대규모) |
| #112 | 추가 6개 밴드 스크랩+남녀 분리 DB+관리자 밴드탭 | 밴드 로그인 세션 필요(band-collector). 진행 지시 시 수집 | 남음(데이터) |
※ 그 외 50여 개 항목(휴면·관심·버디·매칭·VIP사진·정회원 자동승급·닉네임 유니크·지역 선택형·아이디/비번 찾기·모임 마감·엑셀 등)은 모두 구현 확인됨. #87(가입 시 VIP 선택)은 사용자 지시(N3: 결제+승인)로 의도적 변경.
lib/theme.tsx: light/dark 팔레트, AsyncStorage 유지) 도입. 공용 컴포넌트(ui.tsx)와 전 화면(탐색·관심·매칭·후기·모임·프로필·상세·채팅·충전·VIP·뱃지·휴면·승인대기·약관 등)을 useColors() 기반 동적 스타일로 전환(병렬 변환 + 검증). 탭바·헤더·StatusBar 연동. 화이트 기본 + 프로필 탭에 다크모드 토글 스위치. mobile 타입체크 통과.tools/band-collector/.naver-credentials.local, gitignore) + 6개 밴드 URL config.json 구성. ※ 실제 수집은 band-collector가 로그인된 브라우저 세션을 재사용하는 방식이라, 네이버 로그인(1회 상호작용)이 필요 → 다음 단계에서 실행.toDo 1~154 전 항목을 적대적 서브에이전트 2개로 재감사. 대부분 구현 확인, 발견된 갭과 새 항목(146~154 + 충전 입금자)을 처리.
| # | 내용 | 처리 |
|---|---|---|
| 146 | 변경점 탭 개선·이름 | "업데이트·제안" 탭: 변경점 + 새 제안(proposal) 추가·항목별 코멘트 (kind, 0033) |
| 147 | 모임 글 수정 | 모임 카드 수정/삭제(MeetupEdit) + 신청 남/여 수 |
| 148 | 강제탈퇴·블랙리스트 | 강제탈퇴 회원 탐색·관심·매칭 전면 숨김(RLS 0033) + 버튼 명확화 |
| 154 | 밴드 프로필 관리 탭 | 성별 분리·전체검색(원문 포함) + 프로필 복사 버튼 |
| 충전 | 입금자명 매칭 | 앱에 입금자명 칸 존재. 비워둘 수 있어 관리자 충전화면에 회원 실명 병기(대조용) |
| 115 | 가입 필수 동의 | 가입 시 [필수] 약관·개인정보·제3자·만14세 동의 체크박스 필수화(영상 참고 약관은 v0.4 반영 완료) |
| 57·84·95·124 | 문구·검증 | 쌍방관심 자동매칭 오해 문구 수정+죽은 로직 제거, 스타일·성격 최대 3개 서버(zod) 검증 |
그 외 76~145 대부분 구현+배선 확인. (참고: #142 여성 후기 보상은 비원자적 코인 갱신 — 단일 관리자 작업이라 실사용 영향 낮음, 추후 RPC화 권장)
| 요청 | 처리 | 상태 |
|---|---|---|
| 채팅 placeholder가 "Enter 전송…" — 모바일에 안 맞음 | placeholder를 "메시지 입력"으로 단순화(웹 Enter 전송 로직은 유지) | 완료·배포 |
| 우상단 프로필 아이콘만 → 글자 추가 | 헤더 버튼에 🙂 "내 프로필" 텍스트 라벨 추가 | 완료·배포 |
| 관심탭에 만남요청 버튼 | 각 카드에 만남 요청 버튼(남=5버디 확인, 여=무료 안내) | 완료·배포 |
| 초대 링크 실제 URL 노출 위험 | 단축URL(is.gd) + 웹앱 대신 공개 랜딩 /i/<코드>(스토어 안내, noindex)로 연결 | 완료·배포 |
| 연락처 아래 "초대하신 분의 친구초대 코드" 칸 | 초대 폼에 추천인 코드 입력칸 추가(기본=내 코드, 수정 가능) | 완료·배포 |
| 하단 탭 한글 받침 잘림(재발) | 탭바 높이 78 + 하단 여백 20으로 라벨을 위로 올려 잘림 해소 | 완료·배포 |
| 폰 연락처 차단 기능 | 회원 상세에 🚫 차단 버튼 → blocks insert. RLS가 양방향으로 탐색·검색·관심에서 즉시 숨김(api/blocks.ts) | 완료·배포 |
| 채팅 볼 수 있는 관리자 메뉴(신고 대응) | 관리자 채팅 탭: 방 목록(참여자·최근 메시지·수) + 대화 상세 읽기 전용(/chats, /chats/[roomId]) | 완료·배포 |
| 규칙 위반 발언 자동 신고 | 메시지 INSERT 트리거(0039)가 외부연락처·욕설·성적/불법·금전요구 감지 시 reports에 자동 신고([자동] 접두사) | 완료·DB적용 |
| 밴드 새 글 실시간 클로닝 → 관리자 반영 | ingest를 append-only(upsert)로 전환 + 준실시간 동기화 루프(sync-realtime.mjs/.bat: collect→ingest 5분 주기) + 관리자 밴드탭 최신순·60초 자동새로고침·마지막 수집시각 | 구현완료(운영 시작은 로그인 Chrome 필요) |
밴드 실시간은 본인 로그인된 Chrome(--remote-debugging-port=9222)이 켜져 있어야 동작합니다. sync-realtime.bat 더블클릭으로 5분 주기 클로닝이 시작되고, 새 글이 관리자 '밴드 프로필'에 자동 반영됩니다.
chat/[roomId].tsx·(tabs)/_layout.tsx·(tabs)/interests.tsx·invite.tsx·api/blocks.ts·member/[id].tsx / admin: app/chats/*·components/AutoRefresh.tsx·components/AdminShell.tsx·app/band-profiles/page.tsx·app/i/[code]/page.tsx·middleware.ts / backend/migrations/0039_chat_auto_report.sql·ingest-band-profiles.mjs / tools/band-collector/sync-realtime.mjs|.batdocs/TERMS.md (v0.4), mobile/src/app/terms.tsxmobile/src/lib/auto-title.ts (generateTitle 수정 + displayTitle 신설) — 적용: explore·member/[id]·interests·profilebackend/migrations/0022_dormant_keep_relations.sql, components/profile-photo.tsx, api/explore.ts, api/matches.ts, interests·matches·member 화면backend/migrations/0023_admin_member_contacts.sql, admin/src/app/members/page.tsx, admin/src/components/MemberExport.tsxsign-up.tsx·schemas.ts(비번확인) · api/photos.ts(사진추가 버그) · charge.tsx(계좌복사,expo-clipboard) · chat/[roomId].tsx(Enter전송) · (tabs)/_layout.tsx(탭라벨) · auto-title.ts(제목) · components/AdminShell.tsx·app/page.tsx(관리자 반응형·대시보드 링크)reports/0017-vip-gold-pricing-reference.md, reports/0018-band-roster-report.md0022(휴면 관계 RLS)·0023(관리자 연락처 RPC)는 이 PC에 Supabase 토큰(backend/.supabase-token.local)이 없어 미적용. SQL Editor에 두 파일을 붙여넣어 Run하면 휴면 배지·연락처 검색/엑셀이 활성화됩니다. (미적용 상태에서도 앱은 정상 동작 — 검색은 프로필 필드 기준, 연락처 열만 비어 표시)expo export 재배포.backend/apply-migration.mjs)