ibtcc.kr 부모-자식 관계 추적

마지막 업데이트: 2026-07-13  |  페이지 간 연결, 데이터 흐름, 미션 트리거, 테이블 의존성

이전 버전: 2026-06-03 신규 페이지 연결: 11개 신규 데이터 흐름: 8개

페이지 네비게이션 트리

index.html (루트)
├── about.html                  ← 사이트소개 (헤더 버튼) [신규]
├── updates.html                ← 업데이트 소식 (헤더 버튼) [신규]
├── competition.html            ← 경쟁률 조회
│   ├── hub/electric.html       ← 직렬허브 (퀵네비 칩)
│   └── salary.html             ← 기관별 연봉 (팝업 버튼) [신규]
├── evidence/sample.html        ← 성적분석
│   └── hub/electric.html       ← 직렬허브 (퀵네비 칩)
├── evidence/sample-report.html ← 합격예측·진단 리포트
│   ├── evidence/aptitude.html  ← 인적성 자가진단 (⑦단계 버튼)
│   └── [영상 팝업]             ← YouTube 모달 (letter popup step2) [신규]
├── schedule.html               ← 시험일정
├── university-board.html       ← 대학활동
├── library-pdf.html            ← 자료실
├── job-board.html              ← 채용공고
├── public-jobs.html            ← 공공기관 정규직 채용공고 [업데이트]
├── salary.html                 ← 공공기관 연봉 + 45개 기관 [업데이트]
├── cert-dist.html              ← 직무별 자격증 분포 [신규]
├── gtelp-score.html            ← 점수대비표
├── gov/index.html              ← 기관별 채용공고 (퀵링크 하단 배너)
│   ├── gov/cat-*.html          ← 카테고리 허브
│   └── gov/<slug>.html    ← 기관별 랜딩 (40개) → competition.html
├── inst/index.html             ← 공기업 준비 가이드 허브 (53개 기관) [신규]
│   └── inst/jobs/              ← 기관별 채용공고 SEO (33개) [신규]
├── newsletter/index.html       ← 뉴스레터 매거진 [신규]
│   └── newsletter/view.html   ← 발행본 상세 [신규]
├── package.html                ← IBT 패키지
│   └── staff/index.html        ← 대학관계자용 버튼
├── student.html                ← IBT 무료신청
├── mobile.html                 ← 모바일 허브
│   ├── competition.html
│   ├── evidence/sample.html
│   └── student.html
├── mypage.html                 ← 마이페이지
│   ├── evidence/sample.html    ← 점수확인 탭
│   ├── library-pdf.html        ← 자료실 탭
│   └── challenge/index.html    ← 합격챌린지 버튼
├── community/
│   ├── community_index.html    ← 목록
│   │   ├── community_write.html
│   │   └── community_post.html
│   └── community_write.html    ← 수정 모드 (?id=)
├── challenge/index.html        ← 합격챌린지
├── hub/
│   ├── electric.html
│   ├── computer.html
│   ├── mechanical.html
│   └── admin.html
├── businessHR/index.html       ← 해외인재 플랫폼 [신규]
│   └── businessHR/profiles/   ← 인재 프로필 SEO 75개 [신규]
├── GHR_website/index.html      ← G-TELP HR 웹사이트 [신규]
└── admin-k9x3.html             ← 관리자 (비공개)

페이지 간 직접 링크 관계

출발 페이지도착 페이지경로비고
index.htmlabout.html헤더 버튼신규
index.htmlupdates.html헤더 버튼 / 배너신규
index.htmlcompetition.html히어로 버튼
index.htmlevidence/sample.html히어로 버튼
index.htmlevidence/sample-report.html합격예측 프로모 배너 (하단)신규
index.htmlnewsletter/index.html탑 캐러셀 4번째 슬라이드 + ACADEMIA 섹션신규
index.htmlmypage.html로그인 버튼
index.htmlchallenge/index.html플로팅 버튼
index.htmlcommunity/community_index.html플로팅(후기쓰면커피)
competition.htmlhub/electric.html퀵네비 칩
competition.htmlsalary.html기관 팝업 → 연봉 알아보기 버튼신규
competition.htmlevidence/sample-report.html3초 추천 팝업 (세션 1회)
evidence/sample-report.htmlevidence/aptitude.html⑦ 인적성검사 시작 버튼
evidence/aptitude.htmlevidence/sample-report.html결과 후 '리포트로 돌아가기'localStorage ncs_apt 전달
evidence/sample-report.html[YouTube 영상 팝업]응원 편지 → 응원 영상 버튼신규
package.htmlstaff/index.html히어로 '대학관계자용' 버튼
staff/index.htmlevidence/sample-report.html프로모 배너 (상단)
mypage.htmlevidence/sample.html점수확인 탭
mypage.htmllibrary-pdf.html자료실 탭
mypage.htmlchallenge/index.html사이드바 버튼
community_index.htmlcommunity_write.html글쓰기 버튼
community_index.htmlcommunity_post.html게시글 클릭?id=
community_post.htmlcommunity_write.html수정 버튼 (본인만)?id=
gov/<slug>.htmlcompetition.html경쟁률 확인 버튼
businessHR/index.htmlbusinessHR/profiles/*.html인재 프로필 카드 클릭신규
GHR_website/index.htmlibtcc.kr/student.html (상담신청)문의하기·채용대행 버튼신규
hub/*.htmlchallenge/index.html(트리거만, 링크 없음)localStorage
student.htmlevidence/sample-report.html하단 인라인 CTA신규
gtelp-score.htmlevidence/sample-report.html하단 인라인 CTA신규
salary.htmlinst/<기관>.htmlNCS 연습문제·인적성 버튼신규

주요 데이터 흐름

인적성 자가진단 데이터 흐름 (ncs_apt localStorage)

sample-report.html ⑦ 버튼
        │
        ▼
aptitude.html (6문항 응답) ── 제출 ──→ localStorage `ncs_apt` = {scores:{6축}, ts}
        │
        ▼ (돌아가기)
sample-report.html ── aptGet() 읽기 ──→ ⑦ 상태 '완료' + 인적성 차트 육각 레이더

백엔드/Supabase 미사용. 동일 오리진 localStorage로만 전달.

응원 멘토의 편지 팝업 데이터 흐름 신규

evidence/sample-report.html
  └── runAnalysis() 실행
        ├── d.qualified (합격권 기관) 확인
        ├── state.insts (선택 기관) 확인
        └── 선택 기관이 합격권 미달일 때:
              ├── nearEntry.diff (합격컷 차이) 계산
              ├── PASS_MAP[기관명] → 난이도·합격선·평균·자격증·직렬 칩 생성
              └── setTimeout 4000ms
                    └── #cta-modal 표시 (Step1: 봉투 애니메이션)
                          └── "편지 열기" 클릭
                                ├── spTrack('letter:open') → page_views INSERT
                                └── Step2: 편지 내용 슬라이드업
                                      └── "응원 영상" 버튼 클릭
                                            └── YouTube iframe src 주입 → 영상 팝업

모바일→PC 진단 값 인계 신규

모바일에서 evidence/sample-report.html 입력
  └── '간편 진단 즉시하기' 버튼 → URL 파라미터 또는 QR 코드 생성
        └── PC에서 동일 URL 접속 → 입력값 자동 복원

뉴스레터 발행 흐름 신규

관리자 → 뉴스레터 제작 탭
  └── HTML + 이미지 업로드 → Supabase Storage
        └── newsletter_items 테이블 INSERT
              ├── newsletter/index.html → 목록 표시
              ├── newsletter/view.html  → 상세 렌더링
              └── index.html ACADEMIA 섹션 → 최신 3개 노출 (없으면 자동 숨김)

businessHR 인재 프로필 생성 흐름 신규

businessHR/index.html 등록 폼
  └── Supabase INSERT (비자·학업현황·직무·언어 등)
        └── generate_profiles.py 실행
              └── businessHR/profiles/*.html 75개 생성 (SEO 정적 페이지)

미션 트리거 관계

[트리거 페이지]                    [감지]                [결과]
competition.html ──────────────→ mission_competition ──→ +20 EXP
  (DOMContentLoaded)

evidence/sample.html ──────────→ mission_score ─────────→ +50 EXP
  (analyze() 실행 후)

hub/electric.html ─────────────→ mission_hub ───────────→ +20 EXP
hub/computer.html ─────────────→ mission_hub
hub/mechanical.html ───────────→ mission_hub
hub/admin.html ────────────────→ mission_hub
  (DOMContentLoaded)

company/index.html ────────────→ mission_bookmark ──────→ +30 EXP
  (toggleFav — ★ 등록 시만)

challenge/index.html ──────────→ attendance (출석) ─────→ +10 EXP
  (로그인 후 자동)

페이지 ↔ Supabase 테이블 의존성

index.html

index.html
├── READ  popup_ads             ← 팝업광고
├── READ  youtube_shorts        ← 유튜브 쇼츠
├── READ  newsletter_items      ← ACADEMIA 섹션 최신 3개 [신규]
└── RPC   consultation_count() ← 누적 신청수 (개수만)

competition.html

competition.html
├── READ  alio_jobs             ← 경쟁률 데이터
├── READ  alio_source_cache     ← 원본 캐시
├── READ  pass_statistics       ← 합격점수
├── WRITE pass_statistics       ← 합격점수 제보
├── READ  job_postings          ← 채용공고 연동
└── WRITE page_views            ← 방문 추적

evidence/sample-report.html 의존성 확장

evidence/sample-report.html
├── READ  pass_cut_public       ← 합격컷 집계 뷰 [신규]
├── READ  pass_cert_public      ← 합격 자격증 집계 뷰 [신규]
├── READ  pass_exp_public       ← 합격 경험 집계 뷰 [신규]
├── READ  pass_specs_public     ← 합격자 스펙 집계 뷰 [신규]
├── READ  alio_jobs             ← 경쟁률 (직군별 instRatio)
├── WRITE page_views            ← 방문 추적 + :letter:open 이벤트 [신규]
└── WRITE session_views_test    ← 세션 정밀 추적

staff/index.html 의존성 확장

staff/index.html
├── RPC   staff_login           ← 공용 비번 로그인 검증
├── READ  pass_cut_public       ← ①합격컷 탭 [신규]
├── READ  alio_jobs             ← ②경쟁률 분석 탭 [신규]
├── READ  job_calendar          ← ③채용 일정 탭 [신규]
└── READ  pass_cert_public      ← ④합격 자격증 탭 [신규]

newsletter/ 신규

newsletter/index.html
└── READ  newsletter_items      ← 발행본 목록

newsletter/view.html
└── READ  newsletter_items      ← 발행본 상세 (?id=)

businessHR/index.html 신규

businessHR/index.html
├── READ/WRITE hr_profiles      ← 인재 프로필 등록·조회
├── READ  hr_companies          ← CRM 기업 목록
├── WRITE hr_companies          ← 기업 등록·수정
└── WRITE page_views            ← 방문 추적 (admin businessHR 통계 탭)

inst/index.html 신규

inst/index.html
├── READ  exam_questions        ← 기관별 기출문제 (5문항 이상)
├── READ  pass_cut_public       ← 기관 합격컷 정보
└── WRITE page_views            ← inst/ 방문 추적 (admin 통계)

admin-k9x3.html 의존성 대폭 확장

admin-k9x3.html
├── READ/WRITE student_applications
├── READ/WRITE consultations
├── READ/WRITE school_programs
├── READ/WRITE university_news
├── READ/WRITE staff_job_postings
├── READ/WRITE job_postings
├── READ/WRITE company_news
├── READ/WRITE youtube_shorts
├── READ/WRITE popup_ads
├── READ/WRITE university_sites     ← 수집 사이트 관리
├── READ/WRITE pass_statistics      ← 합격제보 관리
├── READ/WRITE pass_cut_public      ← 기관별 합격컷 표
├── READ/WRITE exam_questions       ← 기출문제 탭 [신규]
├── READ       tutor_logs           ← AI 튜터 질문 로그 [신규]
├── READ/WRITE tutor_qa             ← AI 튜터 Q&A [신규]
├── READ/WRITE newsletter_items     ← 뉴스레터 제작 탭 [신규]
├── READ/WRITE site_updates         ← 업데이트 관리 탭 [신규]
├── READ/WRITE insight_reports      ← 인사이트 탭 [신규]
├── READ       page_views           ← 통계 + businessHR 통계 탭
├── READ       session_views_test   ← 이동경로 분석 탭 (RPC 집계)
├── READ       download_logs
└── READ       auth.users           ← 회원관리

기타 페이지

university-board.html
├── READ  school_programs       ← 대학활동 (type: 활동)
├── READ  university_news       ← 대학소식 (type: 소식)
└── READ  staff_job_postings    ← 직원채용 (type: 채용, school_name 일치 시만)

community_index.html
└── READ  community_posts       ← 목록 (is_deleted=false)

community_write.html
├── WRITE community_posts       ← 글쓰기 (INSERT)
├── UPDATE community_posts      ← 수정 (본인만)
└── WRITE Storage(community-images)

community_post.html
├── READ  community_posts       ← 상세
└── RPC   soft_delete_post      ← 소프트삭제

challenge/index.html
├── READ/WRITE challenge_users  ← EXP·레벨·스트릭·미션
├── WRITE exp_logs
├── WRITE attendance
└── READ  challenge_users       ← 리더보드 (현재 숨김)

mypage.html
├── READ  pass_statistics
├── READ  university_news       ← 랜덤 9개
├── READ  job_postings          ← 채용달력
├── READ  alio_jobs             ← 마이데이터
└── WRITE page_views

updates.html [신규]
└── READ  site_updates          ← 업데이트 소식 목록

인증(Auth) 의존성

Supabase Auth
├── 로그인 필요 (미로그인 시 리다이렉트 또는 모달)
│   ├── community_write.html   → community_index.html으로 리다이렉트
│   ├── challenge/index.html   → 로그인 모달
│   └── mypage.html            → 로그인 모달
│
├── 로그인 시 기능 확장 (미로그인도 기본 조회 가능)
│   ├── competition.html       → ★ 즐겨찾기 활성화
│   ├── evidence/sample.html   → ★ 즐겨찾기 활성화
│   └── community_index.html   → 글쓰기 버튼 활성화
│
├── 공용 비밀번호 로그인 (Supabase RPC, 세션 유지)
│   └── staff/index.html       → staff_login RPC → pass_cut_public + alio_jobs 등
│
└── 관리자 전용 (이메일 화이트리스트 + 진짜 Supabase Auth, 2026-06-03~)
    ├── admin-k9x3.html        → signInWithPassword 세션 필수 (PII RLS 조회용)
    └── marketing-intel.html   → 이메일+비번 Auth 게이트

RLS 의존성

is_admin() = (auth.jwt()->>'email' = 'a9723992@gmail.com')

consultations / student_applications
├── INSERT  : anon 허용 ← student.html, competition.html
├── SELECT  : is_admin()만 ← admin-k9x3.html (진짜 세션 필요)
└── UPDATE/DELETE : is_admin()만

consultation_count() RPC (SECURITY DEFINER, anon 실행 가능)
└── index.html 히어로 "누적 신청수" — 개수만 노출

pass_specs (개인정보 다차원 스펙)
├── INSERT  : anon 허용 ← 합격데이터 변환 탭 (관리자)
├── SELECT  : is_admin()만
└── 공개: pass_specs_public 집계뷰만 (개별행 비노출)

공유 localStorage 키

기록 페이지읽기 페이지용도
mission_competitioncompetition.htmlchallenge/index.html미션 완료 날짜
mission_scoreevidence/sample.htmlchallenge/index.html미션 완료 날짜
mission_bookmarkcompany/index.htmlchallenge/index.html미션 완료 날짜
mission_hubhub/*.htmlchallenge/index.html미션 완료 날짜
ncs_aptevidence/aptitude.htmlevidence/sample-report.html인적성 6축 점수 전달
gtelp_notrackevidence/sample.html모든 추적 페이지관리자 방문 제외
ibtcc-user-authSupabase SDKchallenge/index.html인증 토큰

크롤러 파이프라인 의존성

수집시작.bat
└── server.py (127.0.0.1:8765)
      ├── /detect → agent_selector.py
      │               └── READ/WRITE university_sites (셀렉터 자동 저장)
      │
      ├── /run → agent_automation.py
      │           ├── agent_collector.py
      │           │     └── READ university_sites (수집 대상 목록)
      │           ├── agent_comparator.py
      │           │     └── READ school_programs (중복 비교, is_deleted 포함)
      │           └── agent_publisher.py
      │                 └── WRITE school_programs (새 글만 INSERT)
      │
      └── /tbl-recruit → businessHR 현지채용공고 수집 [신규]
                          └── WRITE hr_jobs (또는 staff_job_postings)

pSEO 정적 페이지 생성 의존성

gov/ (기관별 채용공고, 40개)
works/govjobs/data.json → gen_seo_pages.py → gov/*.html + sitemap.xml

inst/ (공기업 준비 가이드, 53개 기관 + 33개 채용공고) [신규]
inst/index.html (수동 관리, 기출문제 5문항+ 기관)

businessHR/profiles/ (인재 프로필, 75개) [신규]
businessHR/generate_profiles.py → businessHR/profiles/*.html

sitemap.xml 통합 현황:
├── gov/  40개 기관 + 카테고리 4 + index 1
├── jobs/ 896개 채용공고 페이지 [신규]
├── inst/ 53개 기관 + 33개 채용공고
└── 기타 방문자 페이지 약 40개
총: 2312 URL

Vercel Cron 의존성

스케줄파일대상 테이블동작
UTC 15:05 (KST 00:05)api/challenge-cron.jschallenge_users일일 미션 초기화 (missions_today 리셋, 스트릭 계산)

세션 정밀 이동경로 추적 (session_views_test)