{
  "id": "5dc8141c-3c4e-4ab8-8f56-80bd4ac1e5b0",
  "slug": "ref/khub/geocare-ensurehttps-일괄-치환-잔해-버그-사후-기록",
  "doc_type": "ref",
  "title": "🐛 ensureHttps 일괄 치환 잔해 버그 — 사후 기록",
  "title_en": null,
  "one_liner": "## 버그 요약 **발생일**: 2026-02-28 **원인 커밋**: `7a37127` (refactor: ensureHttps 로컬 복사본 9개 → 정본 import 통일) **수정 커밋**: Lovable 자동 수정 `4f01c88` (Refactored ensureHttps i",
  "summary_bullets": [],
  "body_md": "## 버그 요약\n\n**발생일**: 2026-02-28\n**원인 커밋**: `7a37127` (refactor: ensureHttps 로컬 복사본 9개 → 정본 import 통일)\n**수정 커밋**: Lovable 자동 수정 `4f01c88` (Refactored ensureHttps imports)\n\n## 증상\n\n- 프론트엔드 빌드/런타임 오류 발생\n- `useEasySession.ts`, `ATypeHub.tsx` 두 파일에 잘못된 잔여 코드 존재\n\n## 근본 원인\n\nPython 일괄 regex 스크립트로 로컬 `ensureHttps` 함수를 제거할 때, 함수 바디 안의 template literal (`` `https://${...}` ``)에 포함된 `}` 문자를 함수 끝 `}`로 오인식.\n\n결과적으로 **닫는 backtick+세미콜론**과 **함수 닫는 중괄호**가 잔여로 남음:\n\n```\n// ensureHttps → imported from '@/lib/geoDomain'\n`;    ← 잔해\n}     ← 잔해\n```\n\n## `npx tsc --noEmit`이 통과한 이유\n\nTypeScript 컴파일러가 해당 잔여 코드를 구문 오류로 감지하지 못하는 edge case. 런타임에서만 파싱 에러 발생.\n\n## Lovable 수정 내용\n\n- `useEasySession.ts`: 잔여 2줄 제거\n- `ATypeHub.tsx`: 잔여 2줄 제거\n- 추가로 7개 파일에서 import 경로 보정\n\n## 교훈 (AP 후보)\n\n1. **일괄 regex 치환 후 반드시 `npm run build` (Vite 빌드)까지 확인** — `tsc --noEmit`만으로는 불충분\n2. **template literal 포함 함수 제거는 sed/수동 처리** — `[^}]+` 패턴이 template literal `}` 에서 깨짐\n3. **변경 파일 수 5개 이상이면 파일별 diff 육안 확인 필수**\n\n## 영향 범위\n\n- 프로덕션 빌드 일시 실패 (Lovable 자동 수정으로 해결)\n- 사용자 영향: 없음 (프리뷰 환경에서 발견/수정)\n",
  "related_slugs": [],
  "faq": [],
  "jsonld": null,
  "keywords": [],
  "source_id": "5aad728e-5d37-4f1b-a569-8b1c62b0a32e",
  "video_url": null,
  "duration_sec": null,
  "thumbnail_url": null,
  "image_url": null,
  "caption": null,
  "solution_slug": null,
  "captured_at": null,
  "width": null,
  "height": null,
  "created_at": "2026-08-24T11:53:44.908861+00:00",
  "updated_at": "2026-08-24T11:53:44.908861+00:00",
  "visibility": "public",
  "source_stage": "1",
  "anonymized": true,
  "source_key": "legacy-khub",
  "origin": "ingest",
  "locked": false,
  "locked_by": null,
  "locked_at": null,
  "gate_state": {
    "g1": {
      "hits": [],
      "pass": true
    },
    "g2": {
      "pass": true,
      "total": 52,
      "issues": [
        "핵심 요약 불릿이 3개 미만입니다",
        "Q&A 쌍이 3개 미만입니다"
      ],
      "applies": true
    },
    "g3": {
      "pass": true,
      "required": false
    },
    "stage": "1",
    "decided_at": "2026-08-24T11:53:44.334Z"
  },
  "raw_id": "a08298dc-105f-448f-9968-e60d6922bb9f",
  "search_text": "🐛 ensureHttps 일괄 치환 잔해 버그 — 사후 기록  ## 버그 요약 **발생일**: 2026-02-28 **원인 커밋**: `7a37127` (refactor: ensureHttps 로컬 복사본 9개 → 정본 import 통일) **수정 커밋**: Lovable 자동 수정 `4f01c88` (Refactored ensureHttps i  ## 버그 요약\n\n**발생일**: 2026-02-28\n**원인 커밋**: `7a37127` (refactor: ensureHttps 로컬 복사본 9개 → 정본 import 통일)\n**수정 커밋**: Lovable 자동 수정 `4f01c88` (Refactored ensureHttps imports)\n\n## 증상\n\n- 프론트엔드 빌드/런타임 오류 발생\n- `useEasySession.ts`, `ATypeHub.tsx` 두 파일에 잘못된 잔여 코드 존재\n\n## 근본 원인\n\nPython 일괄 regex 스크립트로 로컬 `ensureHttps` 함수를 제거할 때, 함수 바디 안의 template literal (`` `https://${...}` ``)에 포함된 `}` 문자를 함수 끝 `}`로 오인식.\n\n결과적으로 **닫는 backtick+세미콜론**과 **함수 닫는 중괄호**가 잔여로 남음:\n\n```\n// ensureHttps → imported from '@/lib/geoDomain'\n`;    ← 잔해\n}     ← 잔해\n```\n\n## `npx tsc --noEmit`이 통과한 이유\n\nTypeScript 컴파일러가 해당 잔여 코드를 구문 오류로 감지하지 못하는 edge case. 런타임에서만 파싱 에러 발생.\n\n## Lovable 수정 내용\n\n- `useEasySession.ts`: 잔여 2줄 제거\n- `ATypeHub.tsx`: 잔여 2줄 제거\n- 추가로 7개 파일에서 import 경로 보정\n\n## 교훈 (AP 후보)\n\n1. **일괄 regex 치환 후 반드시 `npm run build` (Vite 빌드)까지 확인** — `tsc --noEmit`만으로는 불충분\n2. **template literal 포함 함수 제거는 sed/수동 처리** — `[^}]+` 패턴이 template literal `}` 에서 깨짐\n3. **변경 파일 수 5개 이상이면 파일별 diff 육안 확인 필수**\n\n## 영향 범위\n\n- 프로덕션 빌드 일시 실패 (Lovable 자동 수정으로 해결)\n- 사용자 영향: 없음 (프리뷰 환경에서 발견/수정)\n",
  "embedding": null,
  "embedded_at": null,
  "embedding_hash": null,
  "backlinks": [],
  "html_url": "https://bizspring.ai/kb/ref/khub/geocare-ensurehttps-일괄-치환-잔해-버그-사후-기록",
  "markdown_url": "https://bizspring.ai/kb/ref/khub/geocare-ensurehttps-일괄-치환-잔해-버그-사후-기록.md"
}