{
  "id": "90ab0e27-b4e4-4993-8831-9ed57c6660a3",
  "url": "https://searchkorea.kr/datasets/public-library-calculations",
  "version": 4,
  "publishedAt": "2026-09-17T09:57:15.334Z",
  "modifiedAt": "2026-09-29T01:45:54.505Z",
  "reviewer": "로컬 편집부",
  "changeNote": "2026-09-29 운영자 요청에 따른 Codex 자체 편집: 단단한중문을 제외한 원고의 독자 질문·사례·설명·결론을 재작성하고 중복 글을 통합했습니다. 공식 자료와 계산을 대조했으며 독립 인적 검수·새 고객 성과·제품 실행을 주장하지 않습니다.",
  "document": {
    "readerIntents": [],
    "readerTools": [],
    "kind": "dataset",
    "slug": "public-library-calculations",
    "title": "서울야외도서관: 계산으로 알 수 있는 것과 없는 것",
    "summary": "공식 발표값으로 가능한 산술 계산과 자료가 부족해 계산하지 않은 항목을 구분합니다.",
    "body": "같은 단위의 숫자라도 더하거나 나누기 전에 기간과 대상을 맞춰야 합니다. 이 표는 계산식과 결과뿐 아니라 그 결과를 어디까지 해석할 수 있는지를 함께 보여줍니다.\n\n방문량의 단순 차이는 운영 효율이나 고유 이용자의 변화와 다릅니다. 배포 총량을 기관 수로 나눈 값도 실제로 각 기관이 받은 수량은 아닙니다. 필요한 분모가 없는 항목은 계산하지 않았으며, 비어 있는 결과를 영으로 취급하지 않습니다.",
    "disclosure": "공식 공개자료를 운영자가 분석한 비고객 편집물입니다. 해당 기관과 고객·후원 관계가 없으며 서비스 실행·고객 성과·AI 노출 실험을 수행하지 않았습니다.",
    "authorName": "서치코리아 편집부",
    "authorType": "Organization",
    "verificationSummary": "원행·산식·기존 출처를 보존하며 독자용 소개와 해석 순서를 재편집했습니다. 새로운 제품 실행이나 현장 실측을 추가하지 않았습니다.",
    "publicFiles": [
      {
        "purpose": "source",
        "key": "raw-metrics",
        "title": "공식 발표값 원장",
        "name": "raw-metrics.json",
        "type": "application/json",
        "text": "[\n  {\n    \"code\": \"M01\",\n    \"sourceCode\": \"outdoor-2024\",\n    \"year\": 2022,\n    \"metric\": \"연간 방문량\",\n    \"value\": 210000,\n    \"unit\": \"명\",\n    \"precision\": \"약수·운영기관 발표\",\n    \"locator\": \"PDF 10쪽 Q2\",\n    \"scope\": \"시범운영; 고유 인원 아님\",\n    \"sourceUrl\": \"https://culture.seoul.go.kr/culture/cmmn/file/fileDown.do?atchFileId=f70925f6ff6a4517bce4b28f21221db5&bbsId=&fileSn=2&menuNo=200051\"\n  },\n  {\n    \"code\": \"M02\",\n    \"sourceCode\": \"outdoor-2024\",\n    \"year\": 2023,\n    \"metric\": \"연간 방문량\",\n    \"value\": 1700000,\n    \"unit\": \"명\",\n    \"precision\": \"약수·운영기관 발표\",\n    \"locator\": \"PDF 10쪽 Q2\",\n    \"scope\": \"거점·운영일 확대; 고유 인원 아님\",\n    \"sourceUrl\": \"https://culture.seoul.go.kr/culture/cmmn/file/fileDown.do?atchFileId=f70925f6ff6a4517bce4b28f21221db5&bbsId=&fileSn=2&menuNo=200051\"\n  },\n  {\n    \"code\": \"M03\",\n    \"sourceCode\": \"outdoor-2024\",\n    \"year\": 2024,\n    \"metric\": \"연간 방문량\",\n    \"value\": 3000000,\n    \"unit\": \"명\",\n    \"precision\": \"약수·추정\",\n    \"locator\": \"PDF 1쪽/10쪽 Q2·Q3\",\n    \"scope\": \"좌석·회전율·목측 기반 발표; 원시 계수표 없음\",\n    \"sourceUrl\": \"https://culture.seoul.go.kr/culture/cmmn/file/fileDown.do?atchFileId=f70925f6ff6a4517bce4b28f21221db5&bbsId=&fileSn=2&menuNo=200051\"\n  },\n  {\n    \"code\": \"M04\",\n    \"sourceCode\": \"outdoor-2025\",\n    \"year\": 2025,\n    \"metric\": \"연간 방문량\",\n    \"value\": 2830000,\n    \"unit\": \"명\",\n    \"precision\": \"발표값\",\n    \"locator\": \"PDF 1쪽 운영기간 문단\",\n    \"scope\": \"혹서기 제외 운영; 전년과 운영일·범위 같다고 보장되지 않음\",\n    \"sourceUrl\": \"https://culture.seoul.go.kr/culture/cmmn/file/fileDown.do?atchFileId=877f329443d247e99f3d9ad5c2b013c5&bbsId=&fileSn=2&menuNo=200051\"\n  },\n  {\n    \"code\": \"M05\",\n    \"sourceCode\": \"outdoor-2025\",\n    \"year\": 2025,\n    \"metric\": \"개장 이후 누적 방문량\",\n    \"value\": 8000000,\n    \"unit\": \"명\",\n    \"precision\": \"약수\",\n    \"locator\": \"PDF 1쪽 첫 문단\",\n    \"scope\": \"2022년 이후 누적; 연간 합계와 범위·반올림 일치 미확인\",\n    \"sourceUrl\": \"https://culture.seoul.go.kr/culture/cmmn/file/fileDown.do?atchFileId=877f329443d247e99f3d9ad5c2b013c5&bbsId=&fileSn=2&menuNo=200051\"\n  },\n  {\n    \"code\": \"M06\",\n    \"sourceCode\": \"outdoor-2025\",\n    \"year\": 2025,\n    \"metric\": \"팝업 연계 운영처\",\n    \"value\": 108,\n    \"unit\": \"곳\",\n    \"precision\": \"발표값\",\n    \"locator\": \"PDF 2쪽 팝업 문단\",\n    \"scope\": \"학교·시 문화시설 등 운영처\",\n    \"sourceUrl\": \"https://culture.seoul.go.kr/culture/cmmn/file/fileDown.do?atchFileId=877f329443d247e99f3d9ad5c2b013c5&bbsId=&fileSn=2&menuNo=200051\"\n  },\n  {\n    \"code\": \"M07\",\n    \"sourceCode\": \"outdoor-2025\",\n    \"year\": 2025,\n    \"metric\": \"북키트 대여량\",\n    \"value\": 4962,\n    \"unit\": \"개\",\n    \"precision\": \"발표값\",\n    \"locator\": \"PDF 2쪽 팝업 문단\",\n    \"scope\": \"팝업 연계; 기관별 분포 미공개\",\n    \"sourceUrl\": \"https://culture.seoul.go.kr/culture/cmmn/file/fileDown.do?atchFileId=877f329443d247e99f3d9ad5c2b013c5&bbsId=&fileSn=2&menuNo=200051\"\n  },\n  {\n    \"code\": \"M08\",\n    \"sourceCode\": \"outdoor-2024\",\n    \"year\": 2023,\n    \"metric\": \"현장 독서자 비율\",\n    \"value\": 83.5,\n    \"unit\": \"%\",\n    \"precision\": \"발표비율\",\n    \"locator\": \"PDF 2쪽 첫 문단\",\n    \"scope\": \"연도별 조사 설계·동일인 여부 미공개\",\n    \"sourceUrl\": \"https://culture.seoul.go.kr/culture/cmmn/file/fileDown.do?atchFileId=f70925f6ff6a4517bce4b28f21221db5&bbsId=&fileSn=2&menuNo=200051\"\n  },\n  {\n    \"code\": \"M09\",\n    \"sourceCode\": \"outdoor-2024\",\n    \"year\": 2024,\n    \"metric\": \"현장 독서자 비율\",\n    \"value\": 85.4,\n    \"unit\": \"%\",\n    \"precision\": \"발표비율\",\n    \"locator\": \"PDF 2쪽 첫 문단\",\n    \"scope\": \"현장에서 1권 이상 읽음; 국민 연간 독서율과 다름\",\n    \"sourceUrl\": \"https://culture.seoul.go.kr/culture/cmmn/file/fileDown.do?atchFileId=f70925f6ff6a4517bce4b28f21221db5&bbsId=&fileSn=2&menuNo=200051\"\n  },\n  {\n    \"code\": \"M10\",\n    \"sourceCode\": \"outdoor-2024\",\n    \"year\": 2023,\n    \"metric\": \"미반납률\",\n    \"value\": 0.71,\n    \"unit\": \"%\",\n    \"precision\": \"발표비율\",\n    \"locator\": \"PDF 4쪽 마지막 문단\",\n    \"scope\": \"원시 권수·분모 미공개\",\n    \"sourceUrl\": \"https://culture.seoul.go.kr/culture/cmmn/file/fileDown.do?atchFileId=f70925f6ff6a4517bce4b28f21221db5&bbsId=&fileSn=2&menuNo=200051\"\n  },\n  {\n    \"code\": \"M11\",\n    \"sourceCode\": \"outdoor-2024\",\n    \"year\": 2024,\n    \"metric\": \"미반납률\",\n    \"value\": 0.51,\n    \"unit\": \"%\",\n    \"precision\": \"발표비율\",\n    \"locator\": \"PDF 4쪽 마지막 문단\",\n    \"scope\": \"원시 권수·분모 미공개\",\n    \"sourceUrl\": \"https://culture.seoul.go.kr/culture/cmmn/file/fileDown.do?atchFileId=f70925f6ff6a4517bce4b28f21221db5&bbsId=&fileSn=2&menuNo=200051\"\n  },\n  {\n    \"code\": \"M12\",\n    \"sourceCode\": \"outdoor-2024\",\n    \"year\": 2024,\n    \"metric\": \"만족도\",\n    \"value\": 91.3,\n    \"unit\": \"%\",\n    \"precision\": \"발표비율\",\n    \"locator\": \"PDF 2쪽 만족도 문단\",\n    \"scope\": \"만족도 조사 응답자 5,521명; 독서자 비율 분모와 동일하다고 단정하지 않음\",\n    \"sourceUrl\": \"https://culture.seoul.go.kr/culture/cmmn/file/fileDown.do?atchFileId=f70925f6ff6a4517bce4b28f21221db5&bbsId=&fileSn=2&menuNo=200051\"\n  },\n  {\n    \"code\": \"M13\",\n    \"sourceCode\": \"outdoor-2025\",\n    \"year\": 2025,\n    \"metric\": \"자치구 야외도서관\",\n    \"value\": 14,\n    \"unit\": \"곳\",\n    \"precision\": \"발표값\",\n    \"locator\": \"PDF 2쪽 첫 문단\",\n    \"scope\": \"중앙 세 거점·팝업 운영처와 다른 구분\",\n    \"sourceUrl\": \"https://culture.seoul.go.kr/culture/cmmn/file/fileDown.do?atchFileId=877f329443d247e99f3d9ad5c2b013c5&bbsId=&fileSn=2&menuNo=200051\"\n  },\n  {\n    \"code\": \"M14\",\n    \"sourceCode\": \"outdoor-2025\",\n    \"year\": 2025,\n    \"metric\": \"현장 독서자 비율 표현\",\n    \"value\": 80,\n    \"unit\": \"%\",\n    \"precision\": \"10명 중 8명으로 거칠게 표시\",\n    \"locator\": \"PDF 3쪽 마지막 문단\",\n    \"scope\": \"5,000명 대상 설문; 정확한 비율·전년 비교 분모 미공개\",\n    \"sourceUrl\": \"https://culture.seoul.go.kr/culture/cmmn/file/fileDown.do?atchFileId=877f329443d247e99f3d9ad5c2b013c5&bbsId=&fileSn=2&menuNo=200051\"\n  },\n  {\n    \"code\": \"M16\",\n    \"sourceCode\": \"outdoor-2024\",\n    \"year\": 2024,\n    \"metric\": \"만족도 조사 응답자\",\n    \"value\": 5521,\n    \"unit\": \"명\",\n    \"precision\": \"발표값\",\n    \"locator\": \"PDF 2쪽 만족도 문단\",\n    \"scope\": \"만족도 조사 모집단; 현장 독서율 분모로 전용하지 않음\",\n    \"sourceUrl\": \"https://culture.seoul.go.kr/culture/cmmn/file/fileDown.do?atchFileId=f70925f6ff6a4517bce4b28f21221db5&bbsId=&fileSn=2&menuNo=200051\"\n  },\n  {\n    \"code\": \"M17\",\n    \"sourceCode\": \"outdoor-2025\",\n    \"year\": 2025,\n    \"metric\": \"현장 독서 설문 대상\",\n    \"value\": 5000,\n    \"unit\": \"명\",\n    \"precision\": \"5천 명으로 발표\",\n    \"locator\": \"PDF 3쪽 마지막 문단\",\n    \"scope\": \"방문객 설문 대상; 응답 원시자료 미공개\",\n    \"sourceUrl\": \"https://culture.seoul.go.kr/culture/cmmn/file/fileDown.do?atchFileId=877f329443d247e99f3d9ad5c2b013c5&bbsId=&fileSn=2&menuNo=200051\"\n  }\n]\n",
        "license": "custom: 자체 분류·계산·코드 재사용; 원문 권리 제외",
        "rights": "편집부 작성 분류·산식·코드는 출처·시점·한계를 유지해 재사용할 수 있습니다. 원문 저작물·사진·로고·서술 전체에 대한 이용권을 부여하지 않으며 원문 파일을 배포하지 않습니다."
      },
      {
        "purpose": "source",
        "key": "conditions",
        "title": "서비스 조건 원장",
        "name": "comparison-conditions.json",
        "type": "application/json",
        "text": "[\n  {\n    \"service\": \"general\",\n    \"criterion\": \"회원\",\n    \"value\": \"회원증 발급 절차\",\n    \"factCodes\": [\n      \"G02\",\n      \"G03\"\n    ],\n    \"asOf\": \"2026-09-17\",\n    \"scope\": \"금천구립도서관 공식 안내의 서비스 조건; 재고·실행 성공 아님\"\n  },\n  {\n    \"service\": \"relay\",\n    \"criterion\": \"회원\",\n    \"value\": \"정상 회원\",\n    \"factCodes\": [\n      \"G10\"\n    ],\n    \"asOf\": \"2026-09-17\",\n    \"scope\": \"금천구립도서관 공식 안내의 서비스 조건; 재고·실행 성공 아님\"\n  },\n  {\n    \"service\": \"smart\",\n    \"criterion\": \"회원\",\n    \"value\": \"모바일 회원증 가능\",\n    \"factCodes\": [\n      \"G07\"\n    ],\n    \"asOf\": \"2026-09-17\",\n    \"scope\": \"금천구립도서관 공식 안내의 서비스 조건; 재고·실행 성공 아님\"\n  },\n  {\n    \"service\": \"general\",\n    \"criterion\": \"권수\",\n    \"value\": \"합산 10권\",\n    \"factCodes\": [\n      \"G04\"\n    ],\n    \"asOf\": \"2026-09-17\",\n    \"scope\": \"금천구립도서관 공식 안내의 서비스 조건; 재고·실행 성공 아님\"\n  },\n  {\n    \"service\": \"relay\",\n    \"criterion\": \"권수\",\n    \"value\": \"2권·전체한도 포함\",\n    \"factCodes\": [\n      \"G10\"\n    ],\n    \"asOf\": \"2026-09-17\",\n    \"scope\": \"금천구립도서관 공식 안내의 서비스 조건; 재고·실행 성공 아님\"\n  },\n  {\n    \"service\": \"smart\",\n    \"criterion\": \"권수\",\n    \"value\": \"2권\",\n    \"factCodes\": [\n      \"G06\"\n    ],\n    \"asOf\": \"2026-09-17\",\n    \"scope\": \"금천구립도서관 공식 안내의 서비스 조건; 재고·실행 성공 아님\"\n  },\n  {\n    \"service\": \"general\",\n    \"criterion\": \"기간\",\n    \"value\": \"14일\",\n    \"factCodes\": [\n      \"G04\"\n    ],\n    \"asOf\": \"2026-09-17\",\n    \"scope\": \"금천구립도서관 공식 안내의 서비스 조건; 재고·실행 성공 아님\"\n  },\n  {\n    \"service\": \"relay\",\n    \"criterion\": \"기간\",\n    \"value\": \"실제 대출일부터 14일\",\n    \"factCodes\": [\n      \"G12\"\n    ],\n    \"asOf\": \"2026-09-17\",\n    \"scope\": \"금천구립도서관 공식 안내의 서비스 조건; 재고·실행 성공 아님\"\n  },\n  {\n    \"service\": \"smart\",\n    \"criterion\": \"기간\",\n    \"value\": \"14일·연장 불가\",\n    \"factCodes\": [\n      \"G06\"\n    ],\n    \"asOf\": \"2026-09-17\",\n    \"scope\": \"금천구립도서관 공식 안내의 서비스 조건; 재고·실행 성공 아님\"\n  },\n  {\n    \"service\": \"general\",\n    \"criterion\": \"자료선택\",\n    \"value\": \"대출 중 자료 예약 가능\",\n    \"factCodes\": [\n      \"G05\"\n    ],\n    \"asOf\": \"2026-09-17\",\n    \"scope\": \"금천구립도서관 공식 안내의 서비스 조건; 재고·실행 성공 아님\"\n  },\n  {\n    \"service\": \"relay\",\n    \"criterion\": \"자료선택\",\n    \"value\": \"수령관 미소장·타관 비치\",\n    \"factCodes\": [\n      \"G11\"\n    ],\n    \"asOf\": \"2026-09-17\",\n    \"scope\": \"금천구립도서관 공식 안내의 서비스 조건; 재고·실행 성공 아님\"\n  },\n  {\n    \"service\": \"smart\",\n    \"criterion\": \"자료선택\",\n    \"value\": \"기기 비치자료·예약 불가\",\n    \"factCodes\": [\n      \"G09\"\n    ],\n    \"asOf\": \"2026-09-17\",\n    \"scope\": \"금천구립도서관 공식 안내의 서비스 조건; 재고·실행 성공 아님\"\n  },\n  {\n    \"service\": \"general\",\n    \"criterion\": \"수령\",\n    \"value\": \"예약 도착 후 4일 보관\",\n    \"factCodes\": [\n      \"G05\"\n    ],\n    \"asOf\": \"2026-09-17\",\n    \"scope\": \"금천구립도서관 공식 안내의 서비스 조건; 재고·실행 성공 아님\"\n  },\n  {\n    \"service\": \"relay\",\n    \"criterion\": \"수령\",\n    \"value\": \"도착 후 3일 안에 수령\",\n    \"factCodes\": [\n      \"G12\"\n    ],\n    \"asOf\": \"2026-09-17\",\n    \"scope\": \"금천구립도서관 공식 안내의 서비스 조건; 재고·실행 성공 아님\"\n  },\n  {\n    \"service\": \"smart\",\n    \"criterion\": \"수령\",\n    \"value\": \"안내상 24시간·현장 출입 별도\",\n    \"factCodes\": [\n      \"G07\"\n    ],\n    \"asOf\": \"2026-09-17\",\n    \"scope\": \"금천구립도서관 공식 안내의 서비스 조건; 재고·실행 성공 아님\"\n  },\n  {\n    \"service\": \"general\",\n    \"criterion\": \"일정 제약\",\n    \"value\": \"예정일까지 반납·연체일수만큼 대출정지\",\n    \"factCodes\": [\n      \"G14\"\n    ],\n    \"asOf\": \"2026-09-17\",\n    \"scope\": \"금천구립도서관 공식 안내의 서비스 조건; 재고·실행 성공 아님\"\n  },\n  {\n    \"service\": \"relay\",\n    \"criterion\": \"일정 제약\",\n    \"value\": \"배송 2~4일·지연 가능\",\n    \"factCodes\": [\n      \"G13\"\n    ],\n    \"asOf\": \"2026-09-17\",\n    \"scope\": \"금천구립도서관 공식 안내의 서비스 조건; 재고·실행 성공 아님\"\n  },\n  {\n    \"service\": \"smart\",\n    \"criterion\": \"일정 제약\",\n    \"value\": \"빌린 기기에 반납·상호대차 불가\",\n    \"factCodes\": [\n      \"G08\",\n      \"G09\"\n    ],\n    \"asOf\": \"2026-09-17\",\n    \"scope\": \"금천구립도서관 공식 안내의 서비스 조건; 재고·실행 성공 아님\"\n  }\n]\n",
        "license": "custom: 자체 분류·계산·코드 재사용; 원문 권리 제외",
        "rights": "편집부 작성 분류·산식·코드는 출처·시점·한계를 유지해 재사용할 수 있습니다. 원문 저작물·사진·로고·서술 전체에 대한 이용권을 부여하지 않으며 원문 파일을 배포하지 않습니다."
      },
      {
        "purpose": "source",
        "key": "sources",
        "title": "공식 출처와 근거 위치",
        "name": "sources.json",
        "type": "application/json",
        "text": "[\n  {\n    \"code\": \"membership\",\n    \"title\": \"금천구립도서관 회원가입 안내\",\n    \"url\": \"https://geumcheonlib.seoul.kr/geumcheonlib/uce/content/contentList.do?selfId=1112\",\n    \"locator\": \"대상·방법·구비서류\",\n    \"publisher\": \"금천구립도서관\",\n    \"publishedAt\": \"\",\n    \"observedAt\": \"2026-09-17T09:24:00Z\",\n    \"sha256\": \"056a37fd75b8d6c1d115355c7db01efe05aeceeae86fe87df04e81a969aac1b0\",\n    \"rights\": \"공식 원문·사진·로고의 복제권은 부여하지 않음. 공개 첨부는 편집부가 만든 사실값·분류·산식만 제공하며 원문은 URL로 참조. 서울시 동일 2024 보도문 게시에는 공공누리 제4유형 표시가 있음.\",\n    \"notes\": \"확인일의 공식 안내. 현장 수령·대출 실행 및 장서 가용성은 미시험.\"\n  },\n  {\n    \"code\": \"loan\",\n    \"title\": \"금천구립도서관 일반 도서대출 안내\",\n    \"url\": \"https://geumcheonlib.seoul.kr/geumcheonlib/uce/content/contentList.do?selfId=1168\",\n    \"locator\": \"도서대출 안내·대출예약 안내\",\n    \"publisher\": \"금천구립도서관\",\n    \"publishedAt\": \"\",\n    \"observedAt\": \"2026-09-17T09:24:00Z\",\n    \"sha256\": \"81b7bef19c6eab2c9f75066b72895c35b8057fdc98022356a3c46c2e1de9a198\",\n    \"rights\": \"공식 원문·사진·로고의 복제권은 부여하지 않음. 공개 첨부는 편집부가 만든 사실값·분류·산식만 제공하며 원문은 URL로 참조. 서울시 동일 2024 보도문 게시에는 공공누리 제4유형 표시가 있음.\",\n    \"notes\": \"확인일의 공식 안내. 현장 수령·대출 실행 및 장서 가용성은 미시험.\"\n  },\n  {\n    \"code\": \"smart\",\n    \"title\": \"금천구립 스마트도서관 안내\",\n    \"url\": \"https://geumcheonlib.seoul.kr/geumcheonlib/uce/content/contentList.do?selfId=1110\",\n    \"locator\": \"1호점·2호점·3호점 이용안내 및 기타안내\",\n    \"publisher\": \"금천구립도서관\",\n    \"publishedAt\": \"\",\n    \"observedAt\": \"2026-09-17T09:24:00Z\",\n    \"sha256\": \"73909e5d83a05b547d31d54d40cd6ddf51ad64c0409c3c60a0a21b6a56730896\",\n    \"rights\": \"공식 원문·사진·로고의 복제권은 부여하지 않음. 공개 첨부는 편집부가 만든 사실값·분류·산식만 제공하며 원문은 URL로 참조. 서울시 동일 2024 보도문 게시에는 공공누리 제4유형 표시가 있음.\",\n    \"notes\": \"확인일의 공식 안내. 현장 수령·대출 실행 및 장서 가용성은 미시험.\"\n  },\n  {\n    \"code\": \"relay\",\n    \"title\": \"금천구립도서관 책두레 안내\",\n    \"url\": \"https://geumcheonlib.seoul.kr/geumcheonlib/uce/content/contentList.do?selfId=1107\",\n    \"locator\": \"이용대상·대상자료·상호대차규정\",\n    \"publisher\": \"금천구립도서관\",\n    \"publishedAt\": \"\",\n    \"observedAt\": \"2026-09-17T09:24:00Z\",\n    \"sha256\": \"d0403aad02b7f719e8ade6128b5e82836cc2f4b4431b4255537024d4d6dc7aef\",\n    \"rights\": \"공식 원문·사진·로고의 복제권은 부여하지 않음. 공개 첨부는 편집부가 만든 사실값·분류·산식만 제공하며 원문은 URL로 참조. 서울시 동일 2024 보도문 게시에는 공공누리 제4유형 표시가 있음.\",\n    \"notes\": \"확인일의 공식 안내. 현장 수령·대출 실행 및 장서 가용성은 미시험.\"\n  },\n  {\n    \"code\": \"organization\",\n    \"title\": \"금천구립도서관 조직 및 담당업무\",\n    \"url\": \"https://geumcheonlib.seoul.kr/geumcheonlib/uce/content/contentList.do?selfId=1118\",\n    \"locator\": \"금천문화재단 > 도서관기획팀\",\n    \"publisher\": \"금천구립도서관\",\n    \"publishedAt\": \"\",\n    \"observedAt\": \"2026-09-17T09:24:00Z\",\n    \"sha256\": \"32659c266330e00e576f029724b5aa58b685de77b55d8c2af953c88538f1bdca\",\n    \"rights\": \"공식 원문·사진·로고의 복제권은 부여하지 않음. 공개 첨부는 편집부가 만든 사실값·분류·산식만 제공하며 원문은 URL로 참조. 서울시 동일 2024 보도문 게시에는 공공누리 제4유형 표시가 있음.\",\n    \"notes\": \"확인일의 공식 안내. 현장 수령·대출 실행 및 장서 가용성은 미시험.\"\n  },\n  {\n    \"code\": \"outdoor-2024\",\n    \"title\": \"서울야외도서관 2024 운영 종료 발표\",\n    \"url\": \"https://culture.seoul.go.kr/culture/cmmn/file/fileDown.do?atchFileId=f70925f6ff6a4517bce4b28f21221db5&bbsId=&fileSn=2&menuNo=200051\",\n    \"locator\": \"PDF 1·2·4·10쪽; 붙임2 Q2/Q3\",\n    \"publisher\": \"서울특별시 서울도서관\",\n    \"publishedAt\": \"2024-11-27T02:15:00Z\",\n    \"observedAt\": \"2026-09-17T09:24:00Z\",\n    \"sha256\": \"30fde877b50c512ad1a7c9c6b39e19aae2713a57adff98ad23a6a4f64610c4f4\",\n    \"rights\": \"공식 원문·사진·로고의 복제권은 부여하지 않음. 공개 첨부는 편집부가 만든 사실값·분류·산식만 제공하며 원문은 URL로 참조. 서울시 동일 2024 보도문 게시에는 공공누리 제4유형 표시가 있음.\",\n    \"notes\": \"자료 제공기관 자체 발표이며 독립 효과평가가 아님.\"\n  },\n  {\n    \"code\": \"outdoor-2025\",\n    \"title\": \"서울야외도서관 2025 운영 종료 발표\",\n    \"url\": \"https://culture.seoul.go.kr/culture/cmmn/file/fileDown.do?atchFileId=877f329443d247e99f3d9ad5c2b013c5&bbsId=&fileSn=2&menuNo=200051\",\n    \"locator\": \"PDF 1~3쪽; 서울문화포털 2025-11-09 게시\",\n    \"publisher\": \"서울특별시 서울도서관\",\n    \"publishedAt\": \"2025-11-09T00:00:00Z\",\n    \"observedAt\": \"2026-09-17T09:24:00Z\",\n    \"sha256\": \"679dcc52c9a8e33bc75cb5cd5a3b3d7e48c5919d21520fda6d6c97c46068cce5\",\n    \"rights\": \"공식 원문·사진·로고의 복제권은 부여하지 않음. 공개 첨부는 편집부가 만든 사실값·분류·산식만 제공하며 원문은 URL로 참조. 서울시 동일 2024 보도문 게시에는 공공누리 제4유형 표시가 있음.\",\n    \"notes\": \"2025 PDF 배포시각 줄에 2024가 있으나 제목·첫줄·본문 운영기간·게시페이지는 2025. 그 불일치를 보존하고 임의 정정하지 않음. publishedAt은 게시페이지의 날짜를 UTC 자정으로 정규화한 날짜 표기이며 실제 공개 시각이 아님.\"\n  }\n]\n",
        "license": "custom: 자체 분류·계산·코드 재사용; 원문 권리 제외",
        "rights": "편집부 작성 분류·산식·코드는 출처·시점·한계를 유지해 재사용할 수 있습니다. 원문 저작물·사진·로고·서술 전체에 대한 이용권을 부여하지 않으며 원문 파일을 배포하지 않습니다."
      },
      {
        "purpose": "guide",
        "key": "reproduce",
        "title": "오프라인 재계산 코드",
        "name": "reproduce.py.txt",
        "type": "text/plain",
        "text": "\"\"\"Reproduce the public-library calculations offline using Python 3 standard library.\nUsage: python reproduce.py [--check]\nInput is operator-transcribed published figures, not respondent microdata.\nNo service accounts, network, customer data, API calls or publication.\n\"\"\"\nfrom pathlib import Path\nfrom decimal import Decimal, ROUND_HALF_UP\nimport csv,hashlib,json,sys\nROOT=Path(__file__).resolve().parent\ndef read(name):return json.loads((ROOT/name).read_text(encoding='utf-8'))\ndef rounded(value):return float(value.quantize(Decimal('0.01'),rounding=ROUND_HALF_UP))\ndef calculate():\n data=read('raw-metrics.json'); by={r['code']:r for r in data}\n assert len(by)==len(data),'duplicate metric code'\n def n(c):return Decimal(str(by[c]['value']))\n specs=[\n  ('D01','연간 발표 방문량 차이',['M03','M04'],n('M04')-n('M03'),'명','2830000 - 3000000','발표된 반올림·추정 수치의 단순 차이; 운영일·범위 미보정'),\n  ('D02','연간 발표 방문량 변화율',['M03','M04'],(n('M04')/n('M03')-1)*100,'%','(2830000 / 3000000 - 1) * 100','인과 효과·운영 효율·고유 방문자 변화가 아님'),\n  ('D03','팝업 운영처당 북키트 대여량',['M06','M07'],n('M07')/n('M06'),'개/곳','4962 / 108','배포 총량의 산술평균; 모든 기관이 이 수량을 받았다는 뜻이 아님'),\n  ('D04','발표 독서자 비율 차이',['M08','M09'],n('M09')-n('M08'),'%p','85.4 - 83.5','서로 다른 해의 집계 차이; 동일인 개선·전국 독서율 효과가 아님'),\n  ('D05','발표 미반납률 차이',['M10','M11'],n('M11')-n('M10'),'%p','0.51 - 0.71','책 수 분모가 없어 분실 권수나 비용 절감으로 환산하지 않음'),\n ]\n rows=[{'code':c,'measure':label,'inputCodes':codes,'value':rounded(v),'unit':unit,'formula':formula,'interpretation':note,'status':'calculated-from-published-values'} for c,label,codes,v,unit,formula,note in specs]\n rows.append({'code':'D06','measure':'독서자 비율 2024→2025 정확 변화','inputCodes':['M09','M14'],'value':None,'unit':'%p','formula':'not computed','interpretation':'해당 연도 원문은 10명 중 8명의 반올림 표현. 동일 정밀도·분모·조사설계가 확인되지 않아 정확한 전년 대비 효과를 만들지 않음.','status':'not-comparable-for-exact-change'})\n return rows\ndef main():\n rows=calculate(); raw=read('raw-metrics.json'); comparison=read('comparison-conditions.json')\n assert len(comparison)==18\n assert {r['service'] for r in comparison}=={'general','smart','relay'}\n assert len({(r['service'],r['criterion']) for r in comparison})==18\n assert rows[0]['value']==-170000 and rows[1]['value']==-5.67\n assert rows[2]['value']==45.94 and rows[3]['value']==1.9 and rows[4]['value']==-0.2\n assert rows[5]['value'] is None\n hashes={f:hashlib.sha256((ROOT/f).read_bytes()).hexdigest() for f in ['raw-metrics.json','comparison-conditions.json','sources.json']}\n result={'scope':'offline public-document analysis; no live service or AI experiment','rawMetricRows':len(raw),'comparisonCells':len(comparison),'derivedRows':len(rows),'numericDerivedRows':5,'withheldDerivedRows':1,'inputSha256':hashes,'calculations':rows}\n target=ROOT/'reproduced-results.json'\n if '--check' in sys.argv:\n  assert read(target.name)==result,'stored output does not reproduce'\n  print('PASS: stored calculations, input hashes and non-comparable guard reproduce')\n else:\n  target.write_text(json.dumps(result,ensure_ascii=False,indent=2)+'\\n',encoding='utf-8',newline='\\n')\n  with (ROOT/'analysis-results.csv').open('w',encoding='utf-8-sig',newline='') as f:\n   w=csv.DictWriter(f,fieldnames=list(rows[0]));w.writeheader();w.writerows({**r,'inputCodes':','.join(r['inputCodes'])} for r in rows)\n  print(json.dumps(result,ensure_ascii=False,indent=2))\nif __name__=='__main__':main()\n",
        "license": "custom: 자체 분류·계산·코드 재사용; 원문 권리 제외",
        "rights": "편집부 작성 분류·산식·코드는 출처·시점·한계를 유지해 재사용할 수 있습니다. 원문 저작물·사진·로고·서술 전체에 대한 이용권을 부여하지 않으며 원문 파일을 배포하지 않습니다."
      },
      {
        "purpose": "guide",
        "key": "results",
        "title": "실제 재계산 결과",
        "name": "reproduced-results.json",
        "type": "application/json",
        "text": "{\n  \"scope\": \"offline public-document analysis; no live service or AI experiment\",\n  \"rawMetricRows\": 16,\n  \"comparisonCells\": 18,\n  \"derivedRows\": 6,\n  \"numericDerivedRows\": 5,\n  \"withheldDerivedRows\": 1,\n  \"inputSha256\": {\n    \"raw-metrics.json\": \"098c6ccfccbd25e2687796df168303a31cde940131de7697ad06582e59be5439\",\n    \"comparison-conditions.json\": \"8b2d3cc6156899125d1da08f2bc35ce48c1aaf14be4156c94845f4ac36dca141\",\n    \"sources.json\": \"049f49aea1784a4d9853aaa7daa5fcb4a090079e3fe6ed52a2d1ee3013115d08\"\n  },\n  \"calculations\": [\n    {\n      \"code\": \"D01\",\n      \"measure\": \"연간 발표 방문량 차이\",\n      \"inputCodes\": [\n        \"M03\",\n        \"M04\"\n      ],\n      \"value\": -170000,\n      \"unit\": \"명\",\n      \"formula\": \"2830000 - 3000000\",\n      \"interpretation\": \"발표된 반올림·추정 수치의 단순 차이; 운영일·범위 미보정\",\n      \"status\": \"calculated-from-published-values\"\n    },\n    {\n      \"code\": \"D02\",\n      \"measure\": \"연간 발표 방문량 변화율\",\n      \"inputCodes\": [\n        \"M03\",\n        \"M04\"\n      ],\n      \"value\": -5.67,\n      \"unit\": \"%\",\n      \"formula\": \"(2830000 / 3000000 - 1) * 100\",\n      \"interpretation\": \"인과 효과·운영 효율·고유 방문자 변화가 아님\",\n      \"status\": \"calculated-from-published-values\"\n    },\n    {\n      \"code\": \"D03\",\n      \"measure\": \"팝업 운영처당 북키트 대여량\",\n      \"inputCodes\": [\n        \"M06\",\n        \"M07\"\n      ],\n      \"value\": 45.94,\n      \"unit\": \"개/곳\",\n      \"formula\": \"4962 / 108\",\n      \"interpretation\": \"배포 총량의 산술평균; 모든 기관이 이 수량을 받았다는 뜻이 아님\",\n      \"status\": \"calculated-from-published-values\"\n    },\n    {\n      \"code\": \"D04\",\n      \"measure\": \"발표 독서자 비율 차이\",\n      \"inputCodes\": [\n        \"M08\",\n        \"M09\"\n      ],\n      \"value\": 1.9,\n      \"unit\": \"%p\",\n      \"formula\": \"85.4 - 83.5\",\n      \"interpretation\": \"서로 다른 해의 집계 차이; 동일인 개선·전국 독서율 효과가 아님\",\n      \"status\": \"calculated-from-published-values\"\n    },\n    {\n      \"code\": \"D05\",\n      \"measure\": \"발표 미반납률 차이\",\n      \"inputCodes\": [\n        \"M10\",\n        \"M11\"\n      ],\n      \"value\": -0.2,\n      \"unit\": \"%p\",\n      \"formula\": \"0.51 - 0.71\",\n      \"interpretation\": \"책 수 분모가 없어 분실 권수나 비용 절감으로 환산하지 않음\",\n      \"status\": \"calculated-from-published-values\"\n    },\n    {\n      \"code\": \"D06\",\n      \"measure\": \"독서자 비율 2024→2025 정확 변화\",\n      \"inputCodes\": [\n        \"M09\",\n        \"M14\"\n      ],\n      \"value\": null,\n      \"unit\": \"%p\",\n      \"formula\": \"not computed\",\n      \"interpretation\": \"해당 연도 원문은 10명 중 8명의 반올림 표현. 동일 정밀도·분모·조사설계가 확인되지 않아 정확한 전년 대비 효과를 만들지 않음.\",\n      \"status\": \"not-comparable-for-exact-change\"\n    }\n  ]\n}\n",
        "license": "custom: 자체 분류·계산·코드 재사용; 원문 권리 제외",
        "rights": "편집부 작성 분류·산식·코드는 출처·시점·한계를 유지해 재사용할 수 있습니다. 원문 저작물·사진·로고·서술 전체에 대한 이용권을 부여하지 않으며 원문 파일을 배포하지 않습니다."
      },
      {
        "purpose": "source",
        "key": "csv",
        "title": "계산 결과 CSV",
        "name": "analysis-results.csv",
        "type": "text/csv",
        "text": "code,measure,inputCodes,value,unit,formula,interpretation,status\nD01,연간 발표 방문량 차이,\"M03,M04\",-170000.0,명,2830000 - 3000000,발표된 반올림·추정 수치의 단순 차이; 운영일·범위 미보정,calculated-from-published-values\nD02,연간 발표 방문량 변화율,\"M03,M04\",-5.67,%,(2830000 / 3000000 - 1) * 100,인과 효과·운영 효율·고유 방문자 변화가 아님,calculated-from-published-values\nD03,팝업 운영처당 북키트 대여량,\"M06,M07\",45.94,개/곳,4962 / 108,배포 총량의 산술평균; 모든 기관이 이 수량을 받았다는 뜻이 아님,calculated-from-published-values\nD04,발표 독서자 비율 차이,\"M08,M09\",1.9,%p,85.4 - 83.5,서로 다른 해의 집계 차이; 동일인 개선·전국 독서율 효과가 아님,calculated-from-published-values\nD05,발표 미반납률 차이,\"M10,M11\",-0.2,%p,0.51 - 0.71,책 수 분모가 없어 분실 권수나 비용 절감으로 환산하지 않음,calculated-from-published-values\nD06,독서자 비율 2024→2025 정확 변화,\"M09,M14\",,%p,not computed,해당 연도 원문은 10명 중 8명의 반올림 표현. 동일 정밀도·분모·조사설계가 확인되지 않아 정확한 전년 대비 효과를 만들지 않음.,not-comparable-for-exact-change\n",
        "license": "custom: 자체 분류·계산·코드 재사용; 원문 권리 제외",
        "rights": "편집부 작성 분류·산식·코드는 출처·시점·한계를 유지해 재사용할 수 있습니다. 원문 저작물·사진·로고·서술 전체에 대한 이용권을 부여하지 않으며 원문 파일을 배포하지 않습니다."
      }
    ],
    "searchAliases": [],
    "usage": "상태와 해석 범위를 결과값과 같이 읽으세요. 입력값은 연결된 연도 원장에서 출처·기간·정밀도를 확인할 수 있습니다.",
    "sourceIds": [
      "fa261d35-f844-4798-9881-b12361fe79fc",
      "94d0936d-5663-4cb8-90c8-5eda0820dac4"
    ],
    "columns": [
      "코드",
      "계산",
      "입력",
      "결과",
      "단위",
      "산식",
      "해석 범위",
      "상태"
    ],
    "rows": [
      [
        "D01",
        "연간 발표 방문량 차이",
        "M03,M04",
        "-170000.0",
        "명",
        "2830000 - 3000000",
        "발표된 반올림·추정 수치의 단순 차이; 운영일·범위 미보정",
        "calculated-from-published-values"
      ],
      [
        "D02",
        "연간 발표 방문량 변화율",
        "M03,M04",
        "-5.67",
        "%",
        "(2830000 / 3000000 - 1) * 100",
        "인과 효과·운영 효율·고유 방문자 변화가 아님",
        "calculated-from-published-values"
      ],
      [
        "D03",
        "팝업 운영처당 북키트 대여량",
        "M06,M07",
        "45.94",
        "개/곳",
        "4962 / 108",
        "배포 총량의 산술평균; 모든 기관이 이 수량을 받았다는 뜻이 아님",
        "calculated-from-published-values"
      ],
      [
        "D04",
        "발표 독서자 비율 차이",
        "M08,M09",
        "1.9",
        "%p",
        "85.4 - 83.5",
        "서로 다른 해의 집계 차이; 동일인 개선·전국 독서율 효과가 아님",
        "calculated-from-published-values"
      ],
      [
        "D05",
        "발표 미반납률 차이",
        "M10,M11",
        "-0.2",
        "%p",
        "0.51 - 0.71",
        "책 수 분모가 없어 분실 권수나 비용 절감으로 환산하지 않음",
        "calculated-from-published-values"
      ],
      [
        "D06",
        "독서자 비율 2024→2025 정확 변화",
        "M09,M14",
        "비교유보",
        "%p",
        "not computed",
        "해당 연도 원문은 10명 중 8명의 반올림 표현. 동일 정밀도·분모·조사설계가 확인되지 않아 정확한 전년 대비 효과를 만들지 않음.",
        "not-comparable-for-exact-change"
      ]
    ],
    "columnDefinitions": [
      {
        "name": "코드",
        "type": "string",
        "unit": "",
        "description": "코드",
        "missingValues": [
          "미관측",
          "비교유보"
        ]
      },
      {
        "name": "계산",
        "type": "string",
        "unit": "",
        "description": "계산",
        "missingValues": [
          "미관측",
          "비교유보"
        ]
      },
      {
        "name": "입력",
        "type": "string",
        "unit": "",
        "description": "입력",
        "missingValues": [
          "미관측",
          "비교유보"
        ]
      },
      {
        "name": "결과",
        "type": "string",
        "unit": "",
        "description": "결과",
        "missingValues": [
          "미관측",
          "비교유보"
        ]
      },
      {
        "name": "단위",
        "type": "string",
        "unit": "",
        "description": "단위",
        "missingValues": [
          "미관측",
          "비교유보"
        ]
      },
      {
        "name": "산식",
        "type": "string",
        "unit": "",
        "description": "산식",
        "missingValues": [
          "미관측",
          "비교유보"
        ]
      },
      {
        "name": "해석 범위",
        "type": "string",
        "unit": "",
        "description": "해석 범위",
        "missingValues": [
          "미관측",
          "비교유보"
        ]
      },
      {
        "name": "상태",
        "type": "string",
        "unit": "",
        "description": "상태",
        "missingValues": [
          "미관측",
          "비교유보"
        ]
      }
    ],
    "license": "custom",
    "licenseUrl": "",
    "rightsStatement": "편집부 작성 분류·산식·코드는 출처·시점·한계를 유지해 재사용할 수 있습니다. 원문 저작물·사진·로고·서술 전체에 대한 이용권을 부여하지 않으며 원문 파일을 배포하지 않습니다.",
    "method": "공식 PDF에서 발표값을 전사하고 Python Decimal로 산술 차이·변화율·평균을 계산했습니다. 계산 전후 입력 해시를 공개하며 정밀도·분모가 다른 비교는 유보합니다.",
    "reproductionPath": "",
    "periodStart": "2023-01-01T00:00:00Z",
    "periodEnd": "2026-09-17T09:24:00Z",
    "limitations": "선정한 공식 자료의 범위입니다. 모집단 대표성·실제 이용 성공·고객성과·인과 효과를 뜻하지 않습니다."
  },
  "relationships": {
    "about": [
      {
        "@type": "Organization",
        "@id": "https://searchkorea.kr/entities/public-library-seoul#entity",
        "identifier": "b4128343-0ad8-45bd-a757-d019b4e56eed",
        "name": "서울특별시 서울도서관",
        "url": "https://lib.seoul.go.kr",
        "alternateName": [],
        "description": "공공자료에 명시된 운영 주체를 서비스·완료 사례와 연결합니다.",
        "areaServed": "서울특별시"
      }
    ]
  }
}