← 작업일지

2026-05-05 · v1.0.0

2026.05.05 작업일지 v1.0.0

Apple이 두 번 리젝했고, 코레일 봇은 PerimeterX에 막혔다. 오늘은 막힌 길을 기록하면서 다음 길을 찾은 날이다.

오늘의 궤적

어린이날 새벽 자정 직후부터 저녁까지 4개 영역이 동시에 움직였다. 로또번호 계산기가 Apple Guideline 2.3.6에 두 번 걸리면서 앱 이름까지 바꾸는 큰 방향 전환이 있었고, 코레일 자동예매 봇은 PerimeterX에 막혀 dead-ends 섹션으로 사례를 기록하는 것으로 마무리됐다. 그 사이 단어요(wordyo) WSL 작업 PR 3건이 조용히 완료됐고, AI 카톡방 인사이트 3번째 분석도 메모리에 저장됐다.


로또번호 계산기 — Apple 리젝 2연속 + 앱 전면 재포장

새벽 00:04~00:27 — 카지노 애니메이션 추가 + 통계 제거 결정

WSL이 밤새 처리한 PR 3개(#10 시드 업데이트, #11 iOS 흰화면 수정, #12 레이블 개선)를 squash 머지하고, “다시 뽑기 버튼이 너무 심심하다”는 피드백에 따라 카지노 슬롯머신 애니메이션을 추가했다 (PR #13). 번호가 고속 롤링 후 감속 정착, scaleIn 효과, 롤링 중 카드 색상 변화.

그런데 /irun으로 실기기 테스트 후 “통계 검증됐냐?” 질문이 나왔다. 1회~1222회 데이터 포함, 로직 6가지 검증 PASS였지만 “제대로 운영 못할 거면 빼는 게 맞다”는 결론이 나왔다. 통계 탭 전면 제거(PR #14, main 반영).

07:56 — 통계 제거 PR #14 merge + v1.1.0+2 bump

09:09~09:17 — parallel-cycle: 지원URL ASC API 수정

lotto-calc가 ASC에 등록할 때 지원URL을 daejongkang.com으로 잘못 입력. ASC API(JWT 인증 + PATCH appStoreVersionLocalizations)로 ssamssae.github.io/daejong-page로 수정. 개인정보처리방침URL도 동시 수정. usesNonExemptEncryption=false 설정 후 심사 제출.

10:25~11:36 — Apple 리젝 메일 확인 + Gambling=Yes 재제출

ASC 메일: Guideline 2.3.6 — Age Rating “Gambling and Contests” 항목을 Yes로 설정해야 한다는 요구. Playwright로 ASC 들어가 Age Rating 변경 + 재제출 (제출 ID: c079dc78).

11:43~12:01 — WSL 자문: Gambling=No + 반론이 더 낫다

WSL 분석: “로또 AI매니저”, “복똑방”, “로또라이브” — 국내 동일 기능 앱들이 생산성/엔터테인먼트 카테고리로 Gambling 없이 판매 중. Apple 2.3.6의 핵심어는 “facilitate gambling”인데 번호 생성기는 실제 도박을 촉진하지 않음. 성공률 50~60% 추정.

→ Gambling=Yes 심사 취소 → Gambling=No + 반론 메모 재제출 (제출 ID: 0358b1ac, 심사 메모에 경쟁 앱 비교 근거 포함).

15:08~16:45 — 앱 전면 재포장 (lottocalc → randompick)

2.3.6 거절이 반복될 가능성에 대비해 패키지명부터 뜯어고침:

  • 앱 이름: 로또번호 생성기 → 행운번호 생성기
  • 패키지: com.daejongkang.lottocalc → com.daejongkang.randompick
  • 슬롯머신 애니메이션 제거 (카지노 연상 우려)
  • v1.1.0+3 (아이콘 교체 포함)

커밋 e5ac8b0 refactor: lottocalc → randompick 재포장 (2.3.6 거절 대응)


코레일 자동예매 봇 — PerimeterX 차단 + dead-ends 기록

14:52~17:08 — korail_bot.py v3 작성 + 봇 탐지 원리 분석

시도결과
headed 모드탐지됨
Device=BH→WB 변환탐지됨
playwright-stealth + 랜덤 딜레이탐지됨

PerimeterX(현 HUMAN Security): 브라우저 핑거프린트 + 행동 패턴(클릭 간격, 스크롤 여부) + 요청 빈도 복합 분석. navigator.webdriver, plugins 배열 등. “다량 구매 후 취소 반복”이 주 타깃. 1매 예매용이면 구매 행태 탐지는 해당 없지만 세션 기반 차단이 일어남.

결론: 현재 방법으로는 지속적 우회 불가. dead-ends 사례로 기록 (daejong-page/dead-ends.html). 후속안: 코레일 앱 API 스니핑 + Appium 자동화.


WSL 작업 — 단어요 + 로또 자문

  • wordyo PR #26: 학습 통계 배너 (오늘 N개 · N일 연속) — WSL 완성, 본진 merge
  • wordyo PR #27: swipe 속도 임계값 상수화 + 다이어리 잔재 확인 — merge
  • wordyo seed null 수정: 6개 카테고리 level null 31~50번 항목 (5551c66)
  • 로또 방향 자문: Gambling=No + 반론 권장 보고서 → mac-report.sh로 본진 수신

AI 카톡방 인사이트 분석 (00:xx~01:40)

어제 이어 3번째 카톡방(내코드를부탁해, 1789줄) 분석 완료:

  • reference_naecoderequest_kakao_insights.md 저장
  • 도구 현황 표, 핵심 워크플로우 8개, 피해야 할 것 목록
  • rtk/superpowers/secall 3개 도구 → parking-lot 추가

인프라·스킬·노하우

  • WSL alias 누락m alias가 ~/.bashrc에 없었음. m1/mb는 있는데 m(자신 tmux) 빠짐. 즉시 추가 + 노하우 기록: knowhow/2026-05-05-wsl-alias-mesh-m-missing.md
  • 코레일 PerimeterX 노하우knowhow/2026-05-05-korail-perimeter-x-bot-detection.md
  • dead-ends 섹션 신설 — 막다른 실패 사례 모음 페이지. 코레일 봇 첫 번째 사례.
  • RTK 참조 — CLAUDE.md에 @RTK.md 추가 (claude-skills 4076018)
  • submit-app territory cache — 174개 territory_ids.json 추가 (6bf9064)
  • session-clear 트리거 확장 — goodnight 발화 금지 명시 (16b71a0)
  • STT 연결 — macOS 받아쓰기(Fn×2) 방법 안내 + parking-lot 추가
  • 통신판매업 신고 관련 — Apple/Google이 merchant of record 역할, 즉각적 위험 낮음. 다만 접수 권장.
  • 병렬 사이클 — parallel-cycle v0.5로 Mac 3개 + WSL 3개 동시 작업

남은 작업

  • 행운번호 생성기 App Store 심사 결과 대기
  • 로또 Gambling=No 반론 심사 결과 대기
  • 코레일 봇 대안 — 앱 API 스니핑 / Appium 경로 탐색
  • wordyo 다음 단계 (swipe/next + 학습 게임화)
  • 포모도로/한컵 심사 결과 대기

관련 커밋

repoSHA메시지
lottocalce5ac8b0refactor: lottocalc → randompick 재포장
lottocalcdaf258cfix: 슬롯머신 애니메이션 제거 + 앱 이름 변경
lottocalc1f03751chore: 아이콘 교체 + 버전 bump 1.1.0+3
lottocalcbf3ca06Remove stats screen (#14)
lottocalce529383feat(home): 카지노 슬롯머신 애니메이션 (#13)
wordyoe793150feat: 학습 통계 배너 추가 (#26)
wordyo5551c66fix(seeds): level null 수정
daejong-pagebd2c694add dead-ends section
daejong-pagef52087cknowhow: 코레일 PerimeterX 봇 탐지 우회 패턴
daejong-page5944ee2knowhow: WSL alias mesh m 누락 점검 패턴
claude-skills4076018chore: add @RTK.md reference
claude-skills6bf9064feat(submit-app): territory_ids.json cache