// market-data.jsx — 우리집사기 호재/악재 이벤트 + 12개 지표 상세 데이터
// ⚠ 백엔드(api.uri-jib.com) 미연결 환경에서도 100% 동작하도록 자체 데이터로 구성.
//   호재/악재는 공개적으로 보도된 부동산 시장 이슈를 기반으로 한 샘플이며,
//   RTMS 백엔드 연결 시 실시간 뉴스/공시로 자동 보강됩니다.

// 네이버 뉴스 검색 링크 (실제 최신 기사 목록으로 연결)
function njUrl(q) { return 'https://search.naver.com/search.naver?where=news&query=' + encodeURIComponent(q); }

// ─── 호재 / 악재 이벤트 ────────────────────────────────
// kind: 호재 | 악재 | 정책 | 공급 | 금리 | 재건축 | 교통 | 학군
// impact: positive | negative | neutral, mag: 1~5 (영향 강도)
// factor: 연결되는 12개 지표 id (클릭 시 지표 상세로도 이동 가능)
const MARKET_EVENTS = [
  {
    id: 'gtx-a-seongnam', kind: '교통', impact: 'positive', mag: 5, factor: 'transit',
    region: '수도권 동남부', area: '성남·용인·화성',
    title: 'GTX-A 성남역 6월 부분 개통 확정',
    summary: '성남역~수서 구간 우선 개통. 분당·판교권 서울 접근성 급개선.',
    date: '2026.06.01', hot: true,
    points: [
      'GTX-A 성남역 정차 확정 — 강남(수서)까지 약 9분',
      '판교·정자·서현 역세권 단지 직접 수혜',
      '개통 임박 단지는 선반영 진행, 거래량 동반 증가',
    ],
    detail: 'GTX-A 노선의 성남역이 6월 부분 개통 대상에 포함되며 분당·판교 일대 서울 도심 접근성이 크게 개선된다. KDI의 광역교통망 연구에 따르면 신설 역세권 500m 내 단지는 개통 전후 뚜렷한 가격 프리미엄이 형성되는 경향이 있다. 정자아이파크·판교 푸르지오 등 인접 단지가 직접 수혜 대상으로 분류된다.',
    affected: ['jeongja-ip', 'pangyo-prujio', 'samp-vill', 'paeykhyeon-2'],
    source: { label: '국토부 광역교통망 · 네이버 뉴스', url: njUrl('GTX-A 성남역 개통') },
  },
  {
    id: 'gtx-c-progress', kind: '교통', impact: 'positive', mag: 4, factor: 'transit',
    region: '수도권 동북부', area: '강남·도봉·의왕',
    title: 'GTX-C 착공 구간 진척률 87% 돌파',
    summary: '대치·창동·금정 정차역 공정 가속. 인접 단지 선반영.',
    date: '2026.05.22',
    points: [
      'GTX-C 전체 공정률 87% — 2028년 개통 목표 유지',
      '대치 은마·창동 주공 등 정차 예정지 인근 수혜',
      '미개통 프리미엄 일부 선반영 — 변동성 유의',
    ],
    detail: 'GTX-C 노선의 착공 구간 공정률이 87%를 넘기며 2028년 개통 목표에 청신호가 켜졌다. 대치동(은마), 창동(주공) 등 정차 예정역 인근 단지는 교통 호재 가중치가 상향 적용된다. 다만 개통까지 시차가 있어 단기 선반영 후 조정이 나타날 수 있다.',
    affected: ['eunma', 'changdong-jj'],
    source: { label: '국토부 · 네이버 뉴스', url: njUrl('GTX-C 진척률') },
  },
  {
    id: 'dsr-ease', kind: '정책', impact: 'positive', mag: 4, factor: 'rates',
    region: '전국', area: '전국',
    title: 'DSR 규제 일부 완화 검토 — 6월 중 발표',
    summary: '실수요자 대상 DSR 한도 상향 검토. 매수 여력 개선 기대.',
    date: '2026.05.20', hot: true,
    points: [
      '생애최초·실수요자 DSR 산정 완화 방안 논의',
      '대출 한도 상향 시 중저가 단지 수요 회복',
      '확정 전 단계 — 발표 내용에 따라 영향 변동',
    ],
    detail: '금융당국이 실수요자를 대상으로 한 DSR(총부채원리금상환비율) 규제 일부 완화를 검토 중이다. 완화가 확정되면 대출 한도가 늘어 매수 여력이 개선되고, 특히 9억 이하 중저가 단지의 수요가 회복될 가능성이 있다. 금리·대출 규제 지표의 방향성을 좌우하는 핵심 변수다.',
    affected: ['mapo-rmp', 'magok-9b', 'songdo-1park'],
    source: { label: '금융위·한국은행 · 네이버 뉴스', url: njUrl('DSR 규제 완화') },
  },
  {
    id: 'bok-hold-jun', kind: '금리', impact: 'positive', mag: 3, factor: 'rates',
    region: '전국', area: '전국',
    title: '한국은행 기준금리 2.75% 동결 (6월)',
    summary: '시장 예상 부합. 동결 기조 유지로 대출 부담 안정.',
    date: '2026.05.27',
    points: [
      '기준금리 2.75% 동결 — 동결 확률 78% 반영',
      '주담대 금리 안정 → 매수 심리 지지',
      '하반기 인하 기대 일부 상존',
    ],
    detail: '한국은행 금융통화위원회가 기준금리를 2.75%로 동결했다. 시장 컨센서스에 부합하는 결정으로, 주택담보대출 금리 안정세가 이어질 전망이다. 금리는 구매력과 직접 연결되는 변수로, 동결·인하 기조는 주택 수요에 우호적으로 작용한다.',
    affected: [],
    source: { label: '한국은행 통화정책방향 · 네이버 뉴스', url: njUrl('한국은행 기준금리 동결') },
  },
  {
    id: 'dunchon-occupancy', kind: '공급', impact: 'negative', mag: 3, factor: 'supply',
    region: '서울 강동', area: '둔촌동',
    title: '둔촌주공(올림픽파크포레온) 입주 임박 — 인근 전세 압력',
    summary: '1.2만 세대 입주 본격화. 강동권 단기 전세가 조정 압력.',
    date: '2026.05.18',
    points: [
      '올림픽파크포레온 12,032세대 입주 진행',
      '강동권 전세 물량 일시 증가 → 전세가 하방 압력',
      '입주장 마무리 후 매매가 회복 패턴 통상적',
    ],
    detail: '국내 최대 규모 단지인 올림픽파크포레온(둔촌주공 재건축) 입주가 본격화되며 강동권 전세 물량이 일시적으로 늘고 있다. 대규모 입주는 단기적으로 인근 전세가와 매매가에 하방 압력을 주지만, 입주장이 마무리되면 가격이 회복되는 패턴이 일반적이다.',
    affected: ['olympic-pkc', 'heliocity'],
    source: { label: '한국부동산원 공급통계 · 네이버 뉴스', url: njUrl('둔촌주공 입주 전세') },
  },
  {
    id: 'eunma-plan', kind: '재건축', impact: 'positive', mag: 4, factor: 'redev',
    region: '서울 강남', area: '대치동',
    title: '대치 은마 사업시행계획 변경안 가결',
    summary: '정비사업 단계 진척. 불확실성 축소로 가치 반영.',
    date: '2026.05.15', hot: true,
    points: [
      '은마 사업시행계획 변경안 조합 총회 가결',
      '재건축 단계 진척 → 사업 불확실성 축소',
      '분담금·심의 일정은 변수로 잔존',
    ],
    detail: '대치 은마아파트의 사업시행계획 변경안이 조합 총회에서 가결되며 재건축이 한 단계 진척됐다. 정비사업은 안전진단→사업시행→관리처분 단계가 진행될수록 불확실성이 줄며 가치가 단계적으로 반영된다. 다만 분담금 규모와 인허가 일정은 여전히 핵심 변수다.',
    affected: ['eunma'],
    source: { label: 'KB부동산 정비사업 DB · 네이버 뉴스', url: njUrl('대치 은마 사업시행계획') },
  },
  {
    id: 'mokdong-academy', kind: '학군', impact: 'positive', mag: 3, factor: 'school',
    region: '서울 양천', area: '목동',
    title: '목동 신시가지 학원가 확장 — 학군 수요 강세',
    summary: '목동 학원 밀집도 추가 상승. 학군 프리미엄 견조.',
    date: '2026.05.10',
    points: [
      '목동 학원가 신규 입점 증가 — 밀집도 상승',
      '학군 수요 비탄력적 → 하방 경직성 강화',
      '재건축 추진과 결합 시 상승 탄력',
    ],
    detail: '목동 신시가지 일대 학원가가 확장되며 학군 수요가 견조하게 유지되고 있다. 교육 수요는 가격 탄력성이 낮아 학군 우수지의 하방 경직성을 강화한다(헤도닉 가격모형). 목동은 재건축 추진 이슈와 결합돼 중장기 상승 탄력이 기대되는 지역이다.',
    affected: ['mok-7', 'mok-14'],
    source: { label: '교육통계 · 네이버 뉴스', url: njUrl('목동 학원가 학군') },
  },
  {
    id: 'pir-high', kind: '악재', impact: 'negative', mag: 4, factor: 'pir',
    region: '서울', area: '서울 전역',
    title: '서울 PIR 28.4 — 역사적 고점권 진입',
    summary: '소득 대비 주택가격 부담 최고 수준. 상승 여력 제한.',
    date: '2026.05.08',
    points: [
      '서울 PIR 28.4배 — 가구소득 대비 역사적 고점',
      '추가 상승 여력 제한·조정 민감도 상승',
      '중저가·소득증가 지역으로 수요 분산 가능',
    ],
    detail: 'KB부동산 기준 서울 PIR(소득 대비 주택가격 배율)이 28.4배로 역사적 고점권에 진입했다. PIR이 높을수록 추가 상승 여력이 제한되고 외부 충격에 대한 가격 민감도가 커진다. 모델에서는 고평가 신호(하방 요인)로 반영되며, 상대적으로 PIR이 낮은 지역으로 수요가 분산될 수 있다.',
    affected: ['ap-hyundai', 'reburi-park', 'hannam-dhill'],
    source: { label: 'KB부동산 PIR 지표 · 네이버 뉴스', url: njUrl('서울 PIR 소득 대비 주택가격') },
  },
  {
    id: 'supply-shortage', kind: '공급', impact: 'positive', mag: 4, factor: 'supply',
    region: '서울', area: '서울 전역',
    title: '서울 입주물량 전년比 −32% — 공급 부족 심화',
    summary: '2026~2027 서울 입주 급감. 중장기 공급 부족 상방 요인.',
    date: '2026.05.05',
    points: [
      '서울 입주물량 전년 대비 −32%',
      '정비사업 이주 수요와 겹쳐 전세 불안 가능',
      '공급 부족 → 중장기 매매가 상방 압력',
    ],
    detail: '2026~2027년 서울 아파트 입주물량이 전년 대비 약 32% 감소할 전망이다. 공급탄력성 이론(Glaeser, 2008)에 따르면 공급이 줄면 가격 변동성과 상승 압력이 커진다. 정비사업 이주 수요와 겹칠 경우 전세 불안으로 이어질 수 있어 핵심 상방 요인으로 분류된다.',
    affected: [],
    source: { label: '한국부동산원 주택공급통계 · 네이버 뉴스', url: njUrl('서울 입주물량 공급 부족') },
  },
  {
    id: 'volume-up', kind: '호재', impact: 'positive', mag: 3, factor: 'volume',
    region: '전국', area: '전국',
    title: '전국 아파트 거래량 +24% MoM — 거래 회복',
    summary: '거래량 증가는 가격 상승의 선행지표. 매수세 유입.',
    date: '2026.05.03',
    points: [
      '전국 아파트 매매 거래량 전월 대비 +24%',
      '거래량 증가 → 가격 상승의 선행 신호',
      '매물 회전율 상승, 관망세 일부 해소',
    ],
    detail: '국토부 실거래 신고 기준 전국 아파트 거래량이 전월 대비 24% 증가했다. 거래량은 통상 가격 상승에 선행하는 지표로, 관망세가 해소되며 매수세가 유입되고 있음을 시사한다. 매물 회전율 상승은 단기 모멘텀을 강화한다.',
    affected: [],
    source: { label: '국토부 거래량 · 네이버 뉴스', url: njUrl('아파트 거래량 증가') },
  },
  {
    id: 'mokdong-hagwon-expand', kind: '교통', impact: 'positive', mag: 3, factor: 'transit',
    region: '서울 양천', area: '목동',
    title: '목동선·강북횡단선 등 경전철 사업 재추진 검토',
    summary: '서울 서남권 교통망 보강 논의. 역세권 기대감.',
    date: '2026.04.28',
    points: [
      '서울 경전철 사업 재추진 논의 — 서남권 수혜 기대',
      '목동·신정 일대 교통 접근성 개선 가능',
      '초기 단계 — 확정성 낮아 변동성 유의',
    ],
    detail: '서울시가 경전철 사업의 일부 노선 재추진을 검토하면서 서남권 교통망 보강 기대감이 형성되고 있다. 다만 사업 초기 단계로 확정성이 낮아 호재의 강도는 제한적으로 반영된다.',
    affected: ['mok-7', 'mok-14'],
    source: { label: '서울시 도시철도망 · 네이버 뉴스', url: njUrl('서울 경전철 사업 재추진') },
  },
  {
    id: 'jeonse-up', kind: '호재', impact: 'positive', mag: 3, factor: 'jeonse',
    region: '전국', area: '전국',
    title: '전세가율 54.2%로 반등 — 갭 축소·하방 지지',
    summary: '전세가 상승으로 매매-전세 갭 축소. 투자 진입 용이.',
    date: '2026.04.25',
    points: [
      '전국 전세가율 54.2% — 최근 추세 반등',
      '매매-전세 갭 축소 → 하방 지지력 강화',
      '입주 물량 적은 지역 전세 강세 두드러짐',
    ],
    detail: '전국 평균 전세가율이 54.2%로 반등했다. 전세가율이 높아지면 매매가 대비 전세가의 갭이 줄어 하방을 지지하고 투자 진입 장벽이 낮아진다. 입주 물량이 적은 지역에서 전세 강세가 두드러진다.',
    affected: ['dt-csv', 'songdo-1park'],
    source: { label: 'KB 주택가격동향 · 네이버 뉴스', url: njUrl('전세가율 상승') },
  },
  {
    id: 'macro-gdp', kind: '중립', impact: 'neutral', mag: 2, factor: 'macro',
    region: '전국', area: '전국',
    title: '1분기 GDP +2.1%·CPI 2.4% — 안정적 거시 환경',
    summary: '성장·물가 안정권. 자산시장 배경 변수 우호적.',
    date: '2026.04.24',
    points: [
      'GDP 성장률 +2.1%, CPI 2.4% — 안정 구간',
      '급격한 긴축 가능성 낮아 자산시장에 우호적',
      '고용 지표 동반 안정 시 수요 지지',
    ],
    detail: '1분기 GDP 성장률이 2.1%, 소비자물가 상승률이 2.4%로 안정적인 거시 환경이 유지되고 있다. 급격한 통화 긴축 가능성이 낮아 부동산을 포함한 자산시장 전반에 우호적인 배경으로 작용한다.',
    affected: [],
    source: { label: '통계청·한국은행 · 네이버 뉴스', url: njUrl('GDP 성장률 소비자물가') },
  },
  {
    id: 'gangnam-income', kind: '호재', impact: 'positive', mag: 2, factor: 'income',
    region: '서울 강남3구', area: '강남·서초·송파',
    title: '강남 3구 가구소득 +6.4% YoY — 구매력 견조',
    summary: '고소득 지역 소득 증가 지속. 실수요 기반 탄탄.',
    date: '2026.04.20',
    points: [
      '강남3구 가구소득 전년 대비 +6.4%',
      '소득 기반 실수요 → 가격 하방 지지',
      '고PIR에도 구매력 뒷받침',
    ],
    detail: '국세청 통합소득 기준 강남 3구의 가구소득이 전년 대비 6.4% 증가했다. 소득이 높고 증가하는 지역은 구매력 기반 실수요가 탄탄해 가격 하방을 지지한다. 높은 PIR에도 불구하고 구매력이 뒷받침되는 배경이다.',
    affected: ['raemian-daechi', 'banpo-jay'],
    source: { label: '국세청 통합소득 · 네이버 뉴스', url: njUrl('강남 가구소득 증가') },
  },
  {
    id: 'cheongyak-comp', kind: '호재', impact: 'positive', mag: 2, factor: 'pop',
    region: '수도권', area: '수도권 청약',
    title: '수도권 청약 경쟁률 평균 18:1 — 실수요 집중',
    summary: '청약 경쟁 치열. 신축·역세권 선호 뚜렷.',
    date: '2026.04.15',
    points: [
      '수도권 청약 경쟁률 평균 18:1',
      '신축·역세권·학군지 쏠림 심화',
      '인구 순유입 지역 청약 강세',
    ],
    detail: '수도권 청약 경쟁률이 평균 18:1을 기록하며 실수요가 신축·역세권·학군지에 집중되는 흐름이 뚜렷하다. 인구 순유입과 청약 경쟁률은 지역 실수요의 강도를 가늠하는 지표로, 경쟁이 치열한 지역일수록 가격 방어력이 높다.',
    affected: ['gumdan-a', 'songdo-gw3'],
    source: { label: '청약홈·통계청 · 네이버 뉴스', url: njUrl('수도권 청약 경쟁률') },
  },
  {
    id: 'transaction-momentum', kind: '호재', impact: 'positive', mag: 4, factor: 'transactions',
    region: '서울', area: '서울 주요구',
    title: '서울 실거래가 6개월 이동평균 +0.8% — 모멘텀 전환',
    summary: '실거래 기준 상승 모멘텀. 강남·용산 주도.',
    date: '2026.04.12',
    points: [
      '서울 실거래가 6개월 MA +0.8% MoM',
      '강남·서초·용산 주도, 외곽으로 온기 확산',
      '실거래 모멘텀은 차분기 가격의 강한 선행지표',
    ],
    detail: '국토부 실거래가 기준 서울의 6개월 이동평균 변동률이 +0.8%로 상승 모멘텀이 확인된다. 강남·서초·용산이 주도하며 점차 외곽으로 온기가 확산되는 양상이다. 실거래 모멘텀은 다음 분기 가격을 예측하는 가장 강한 신호 중 하나다(Case & Shiller, 1989).',
    affected: ['eunma', 'reburi-park', 'hannam-dhill'],
    source: { label: '국토부 RTMS · 네이버 뉴스', url: njUrl('서울 실거래가 상승') },
  },
];

// ─── 12개 지표 상세 정보 ────────────────────────────────
// data.jsx 의 FACTORS(id/label/value/impact) 와 1:1 매칭.
// 각 지표를 클릭하면 이 데이터로 상세 페이지를 구성한다.
const FACTOR_INFO = {
  transactions: {
    title: '실거래가 추이', icon: 'pulse', unit: '% MoM',
    one: '국토부 RTMS 실거래 신고가의 최근 추세(6개월 이동평균)',
    what: '단지·평형별 국토부 실거래 신고가의 최근 추세를 6개월 이동평균으로 추적합니다.',
    why: '실제 체결가는 호가보다 시장을 정확히 반영하며, 단기 모멘텀이 다음 분기 가격을 예측하는 가장 강한 신호입니다.',
    how: '6·12개월 변화율과 거래 빈도를 결합해 추세 강도를 점수화합니다.',
    now: '전국 +0.42% · 서울 +0.8% MoM', nowState: 'positive',
    trend: [-0.4, -0.2, -0.1, 0.0, 0.1, 0.2, 0.15, 0.3, 0.42, 0.5, 0.6, 0.8],
    regions: [['서울 강남', '+0.8%', '상승'], ['서울 외곽', '+0.3%', '완만'], ['경기', '+0.4%', '완만'], ['지방 5대', '+0.1%', '보합']],
    sources: [['국토교통부 실거래가 공개시스템(RTMS)', 'https://rt.molit.go.kr'], ['Case & Shiller (1989) 주택가격 모멘텀', 'https://www.nber.org/papers/w2506']],
  },
  supply: {
    title: '공급 물량', icon: 'box', unit: '% YoY',
    one: '향후 2년 입주 예정 물량과 분양 일정',
    what: '권역별로 향후 2년간 입주 예정 물량과 분양 일정을 집계합니다.',
    why: '공급이 늘면 가격 상승이 둔화됩니다(공급탄력성 이론). 입주 폭탄 지역은 단기 조정 위험이 큽니다.',
    how: '권역별 입주물량 대비 수요(가구 증가)를 비율화해 공급 압력을 산출합니다.',
    now: '서울 입주물량 전년比 −32% (공급 부족 → 상방)', nowState: 'positive',
    trend: [5, 2, 0, -8, -12, -18, -22, -25, -28, -30, -31, -32],
    regions: [['서울', '−32%', '부족'], ['경기', '−14%', '완화'], ['인천', '+8%', '증가'], ['지방', '+3%', '보합']],
    sources: [['한국부동산원 주택공급통계', 'https://www.reb.or.kr/r-one'], ['Glaeser et al. (2008) 공급탄력성', 'https://www.sciencedirect.com/science/article/abs/pii/S0094119008000557']],
  },
  rates: {
    title: '기준금리 / 대출 규제', icon: 'percent', unit: '%',
    one: '한국은행 기준금리와 DSR 등 대출 규제 동향',
    what: '한국은행 기준금리 수준·방향과 DSR 등 대출 규제 강도를 종합합니다.',
    why: '금리는 대출 이자·구매력을 직접 좌우합니다. 규제 완화는 수요를 늘립니다.',
    how: '기준금리 수준·방향에 규제 강도를 결합해 금융환경 점수를 만듭니다.',
    now: '기준금리 2.75% 동결 · DSR 완화 검토', nowState: 'positive',
    trend: [3.5, 3.5, 3.5, 3.25, 3.25, 3.0, 3.0, 2.75, 2.75, 2.75, 2.75, 2.75],
    regions: [['기준금리', '2.75%', '동결'], ['주담대 평균', '4.2%', '안정'], ['DSR', '40%', '완화 검토'], ['하반기 전망', '인하 가능', '대기']],
    sources: [['한국은행 통화정책방향', 'https://ecos.bok.or.kr'], ['Himmelberg et al. (2005) 이자율·적정가치', 'https://www.aeaweb.org/articles?id=10.1257/089533005775196769']],
  },
  transit: {
    title: '교통 호재', icon: 'train', unit: '진척률 %',
    one: 'GTX·지하철 신설/연장 등 교통 인프라 진척도',
    what: 'GTX·지하철 신설·연장 등 교통 인프라 사업의 진척도를 추적합니다.',
    why: '역세권 접근성 개선은 인접 단지에 뚜렷한 프리미엄을 형성합니다(KDI 연구).',
    how: '노선별 공정률·개통 임박도로 역세권 단지 가중치를 부여합니다.',
    now: 'GTX-A 성남역 6월 개통 · GTX-C 진척률 87%', nowState: 'positive',
    trend: [60, 64, 68, 71, 74, 77, 80, 82, 84, 85, 86, 87],
    regions: [['GTX-A', '성남역 6월 개통', '호재'], ['GTX-C', '87% 공정', '진행'], ['GTX-B', '착공', '초기'], ['경전철', '재추진 검토', '논의']],
    sources: [['국토부 광역교통망 계획', 'https://www.molit.go.kr'], ['KDI 교통 인프라 지가 효과', 'https://www.kdi.re.kr']],
  },
  school: {
    title: '학군 / 학원가', icon: 'book', unit: '지수',
    one: '학군·학원가 밀집도와 명문 배정 여부',
    what: '학원 밀집도, 학업성취, 배정학교 등급을 결합해 학군 매력도를 평가합니다.',
    why: '교육 수요는 비탄력적이라 학군 우수지는 하방 경직성이 강합니다(헤도닉 분석).',
    how: '학원 밀집도·학업성취·배정학교 등급을 지수화합니다.',
    now: '대치·분당·목동 강세', nowState: 'positive',
    trend: [88, 88, 89, 89, 90, 90, 91, 91, 92, 92, 93, 93],
    regions: [['대치동', '최상위', '강세'], ['분당', '상위', '견조'], ['목동', '상위', '확장'], ['중계·평촌', '중상위', '안정']],
    sources: [['교육통계서비스 + 학원 밀집도', 'https://kess.kedi.re.kr'], ['Rosen (1974) 헤도닉 가격모형', 'https://www.journals.uchicago.edu/doi/10.1086/260169']],
  },
  redev: {
    title: '재건축 / 재개발', icon: 'crane', unit: '단계',
    one: '재건축·재개발 사업 단계(안전진단~사업시행~관리처분)',
    what: '정비사업의 진행 단계(안전진단→사업시행→관리처분)를 추적합니다.',
    why: '단계가 진척될수록 불확실성이 줄며 가치가 단계적으로 반영됩니다.',
    how: '정비사업 단계별 가중에 분담금 리스크를 차감해 산출합니다.',
    now: '주요 단지 사업시행계획 단계', nowState: 'positive',
    trend: [40, 44, 48, 52, 58, 60, 63, 66, 70, 72, 74, 76],
    regions: [['대치 은마', '사업시행 변경 가결', '진척'], ['압구정', '재건축 추진', '초기'], ['여의도', '재건축', '진행'], ['목동', '안전진단', '추진']],
    sources: [['KB부동산 정비사업 DB', 'https://kbland.kr'], ['국토연구원 정비사업 영향 분석', 'https://www.krihs.re.kr']],
  },
  pir: {
    title: 'PIR (소득 대비 가격)', icon: 'scale', unit: '배',
    one: '가구소득 대비 주택가격 배율(Price to Income Ratio)',
    what: '지역 중위소득 대비 중위 주택가격의 배율을 측정합니다.',
    why: 'PIR이 역사적 고점이면 추가 상승 여력이 제한됩니다(적정가치 평가).',
    how: '지역 중위소득 대비 중위가격 배율을 산출해 고·저평가를 판단합니다.',
    now: '서울 28.4배 (역사적 고점권 → 하방 요인)', nowState: 'negative',
    trend: [24.5, 25.0, 25.6, 26.1, 26.6, 27.0, 27.4, 27.8, 28.0, 28.2, 28.3, 28.4],
    regions: [['서울', '28.4배', '고평가'], ['강남3구', '32.1배', '최고'], ['수도권', '19.0배', '보통'], ['지방', '11.5배', '저평가']],
    sources: [['KB부동산 PIR 지표', 'https://kbland.kr'], ['Himmelberg et al. (2005) 적정가치 평가', 'https://www.aeaweb.org/articles?id=10.1257/089533005775196769']],
  },
  macro: {
    title: '거시 경제 (GDP·CPI)', icon: 'globe', unit: '%',
    one: 'GDP 성장률·소비자물가(CPI) 등 거시 환경',
    what: 'GDP 성장률, 소비자물가(CPI), 고용 추세 등 거시 환경을 종합합니다.',
    why: '경기·물가는 자산 전반의 방향을 좌우하는 배경 변수입니다.',
    how: 'GDP·CPI·고용 추세를 종합 스코어링해 시장 배경을 평가합니다.',
    now: 'GDP +2.1% · CPI 2.4%', nowState: 'neutral',
    trend: [1.8, 1.9, 2.0, 2.0, 2.1, 2.1, 2.0, 2.1, 2.1, 2.2, 2.1, 2.1],
    regions: [['GDP 성장률', '+2.1%', '안정'], ['CPI', '2.4%', '안정'], ['실업률', '2.9%', '양호'], ['M2 증가율', '+4.8%', '완만']],
    sources: [['통계청 국가통계포털(KOSIS)', 'https://kosis.kr'], ['한국은행 경제통계(ECOS)', 'https://ecos.bok.or.kr']],
  },
  volume: {
    title: '거래량 / 매물 수', icon: 'swap', unit: '% MoM',
    one: '거래량과 시장 매물(재고) 수',
    what: '실거래 거래량과 시장 매물(재고) 수의 변화를 추적합니다.',
    why: '거래량 증가는 가격 상승의 선행지표, 매물 적체는 하락 신호입니다.',
    how: '거래량 MoM과 매물 회전율을 결합해 시장 활력을 측정합니다.',
    now: '거래량 +24% MoM', nowState: 'positive',
    trend: [-10, -6, -2, 3, 6, 9, 12, 15, 18, 20, 22, 24],
    regions: [['서울', '+24%', '회복'], ['경기', '+18%', '증가'], ['인천', '+12%', '완만'], ['지방', '+6%', '보합']],
    sources: [['국토부 실거래 거래량', 'https://rt.molit.go.kr'], ['한국부동산원 R-ONE', 'https://www.reb.or.kr/r-one']],
  },
  jeonse: {
    title: '전세가율', icon: 'layers', unit: '%',
    one: '매매가 대비 전세가 비율(전세가율)',
    what: '매매가 대비 전세가의 비율과 그 추세를 추적합니다.',
    why: '전세가율이 높으면 갭이 작아 하방을 지지하고 투자 진입이 쉽습니다.',
    how: '전세/매매 비율의 수준과 추세를 결합해 하방 지지력을 평가합니다.',
    now: '전국 평균 54.2%', nowState: 'positive',
    trend: [52.0, 52.2, 52.5, 52.8, 53.0, 53.3, 53.5, 53.7, 53.9, 54.0, 54.1, 54.2],
    regions: [['전국', '54.2%', '반등'], ['서울', '42.0%', '낮음'], ['경기', '52.4%', '보통'], ['지방', '62.0%', '높음']],
    sources: [['KB 주택가격동향 전세가율', 'https://kbland.kr'], ['한국부동산원 전세통계', 'https://www.reb.or.kr/r-one']],
  },
  income: {
    title: '지역별 소득 수준', icon: 'wallet', unit: '% YoY',
    one: '지역별 가구 소득 수준과 증가율',
    what: '지역별 가구 소득 수준과 증가율을 추적합니다.',
    why: '소득이 높고 늘어나는 지역은 구매력 기반 수요가 탄탄합니다.',
    how: '국세청 통합소득과 증가율을 결합해 구매력을 평가합니다.',
    now: '강남3구 +6.4% YoY', nowState: 'positive',
    trend: [3.8, 4.0, 4.3, 4.6, 4.9, 5.2, 5.5, 5.8, 6.0, 6.2, 6.3, 6.4],
    regions: [['강남3구', '+6.4%', '강세'], ['수도권', '+4.1%', '견조'], ['광역시', '+3.0%', '완만'], ['지방', '+2.2%', '보합']],
    sources: [['국세청 통합소득', 'https://www.nts.go.kr'], ['통계청 가계금융복지조사', 'https://kosis.kr']],
  },
  pop: {
    title: '인구 이동 / 청약', icon: 'users', unit: ': 1',
    one: '인구 순유입과 청약 경쟁률',
    what: '지역별 인구 순이동과 청약 경쟁률을 추적합니다.',
    why: '인구가 몰리고 청약 경쟁이 치열하면 실수요가 강하다는 의미입니다.',
    how: '순이동 인구와 청약 경쟁률을 결합해 실수요 강도를 측정합니다.',
    now: '청약 경쟁률 평균 18:1', nowState: 'positive',
    trend: [9, 10, 11, 12, 13, 14, 15, 16, 16, 17, 17, 18],
    regions: [['수도권', '18:1', '치열'], ['서울', '34:1', '최고'], ['광역시', '12:1', '양호'], ['지방', '6:1', '보통']],
    sources: [['청약홈 경쟁률·공급통계', 'https://www.applyhome.co.kr'], ['통계청 인구이동통계', 'https://kosis.kr']],
  },
};

// ─── 헬퍼 ────────────────────────────────────────────
function getEvent(id) { return MARKET_EVENTS.find(e => e.id === id) || null; }
function eventsForFactor(fid) { return MARKET_EVENTS.filter(e => e.factor === fid); }
function eventsForApt(aptId) { return MARKET_EVENTS.filter(e => (e.affected || []).includes(aptId)); }
function latestEvents(n) { return MARKET_EVENTS.slice().sort((a, b) => (a.date < b.date ? 1 : -1)).slice(0, n || MARKET_EVENTS.length); }

// ─── 네이버 뉴스 호재/악재 분류기 ──────────────────────
// 백엔드 /v1/news (네이버 검색 API) 응답 제목/요약을 키워드로 분류.
const HOJAE_KW = ['개통', '호재', '완화', '인하', '상승', '신고가', '최고가', '분양', '청약', '승인', '용적률', '공급 부족', '공급부족', '반등', '회복', '역세권', 'GTX', '광역급행', '착공', '수주', '재건축', '재개발', '교통망', '훈풍', '강세'];
const AKJAE_KW = ['규제', '하락', '미분양', '입주폭탄', '입주 폭탄', '금리 인상', '인상', '역전세', '급매', '경매', '연체', '하향', '조정', '약세', '공급 과잉', '공급과잉', '세금 인상', '대출 축소', '거래 절벽', '거래절벽', '침체', '둔화', '급락', '리스크', '부담', '미입주'];
function stripTags(s) { return ('' + (s || '')).replace(/<\/?[^>]+>/g, '').replace(/&[a-z]+;/g, ' ').trim(); }
function classifyNews(text) {
  const t = stripTags(text);
  let pos = 0, neg = 0;
  HOJAE_KW.forEach(k => { if (t.includes(k)) pos++; });
  AKJAE_KW.forEach(k => { if (t.includes(k)) neg++; });
  if (pos > neg) return { impact: 'positive', kind: '호재' };
  if (neg > pos) return { impact: 'negative', kind: '악재' };
  return { impact: 'neutral', kind: '뉴스' };
}

Object.assign(window, { MARKET_EVENTS, FACTOR_INFO, getEvent, eventsForFactor, eventsForApt, latestEvents, njUrl, classifyNews, stripTags });
