본문으로 이동
모든 코스
Harvard공공 데이터와 사회180분4 모듈
최신 자료2026.05 릴리스 · 코드 발췌 2025-10-23

온라인 삭제 통지는 어떻게 기록되고 검색될까

삭제 요청이 등록·비식별화·검토·검색되는 Rails 코드를 따라가며 플랫폼 규제 데이터를 책임 있게 해석합니다.

삭제 통지가 데이터베이스에 있다는 사실은 무엇을 증명하고, 무엇을 증명하지 못할까요?

프로젝트와 최신성

GPL-2.0으로 공개된 Lumen Database의 Rails 애플리케이션을 읽습니다. 법률 자문이 아니라 데이터 구조와 권리·투명성의 긴장을 살펴보는 수업입니다.

Lumen은 2025년부터 Harvard Law School Library가 운영합니다. GitHub 조직명은 역사적으로 Berkman Center를 유지하며, 과정의 코드는 기본 브랜치 커밋에 고정했습니다.

먼저 볼 장면

검색 결과 건수를 ‘불법 콘텐츠 수’로 잘못 읽는 순간

Lumen은 법적 통지와 요청을 기록하지만 그 주장 자체를 확정 판결로 바꾸지 않습니다. 어떤 필터를 거쳤고 무엇이 비공개인지 함께 보여 줘야 합니다.

데이터 흐름

삭제 요청이 검색 결과가 되기까지

1제출자통지와 관련 주체 입력
2NoticeBuilder형식을 맞추고 기본값 추가
3검토·비식별화민감정보와 공개 여부 점검
4검색 색인공개 가능한 기록만 탐색
0/4

‘다음 단계’를 눌러 입력이 결과가 되는 길을 따라가세요.

구성요소 대화

‘결과 10,000건’이 뜻하는 것을 두고 나누는 대화

‘다음 단계’를 눌러 구성요소의 첫 메시지를 열어 보세요.

코드 워크스루

관심 분야의 문제를 정하고, 코드와 데이터를 읽고, AI 실험을 검증한 뒤 결과를 발표합니다.

40분

통지를 모으는 이유부터 읽기

서비스가 무엇을 수집하며 연구자와 인터넷 이용자에게 왜 필요한지 출발점부터 확인합니다.

먼저 떠올릴 비유

도서관의 판례집이 판결을 만드는 곳이 아니듯, Lumen은 통지를 기록하지만 유효성을 판결하지 않습니다.

핵심 판단

Lumen의 기본 단위는 삭제된 게시물이 아니라 법적 불만이나 삭제 요청을 담은 `notice`입니다.

직접 해보기

검색 결과 한 건에서 요청 주체, 수신 플랫폼, 대상 자료, 조치 여부를 서로 다른 칸에 적습니다.

남길 증거

‘통지 한 건이 의미하는 것/아닌 것’ 카드

코드 용어
저장소의 실제 코드이 파일에서 확인
README.mded2b5b4
# Lumen Database

The Lumen Database collects and analyzes legal complaints and requests for removal of online materials, helping Internet users to know their rights and understand the law. These data enable us to study the prevalence of legal threats and let Internet users see the source of content removals.

## Documentation

https://berkman-klein-center.gitbook.io/lumen-database
코드가 하는 일
  1. 1

    프로젝트 이름 아래에 수집 대상이 ‘법적 불만과 삭제 요청’이라고 분명히 적혀 있습니다.

  2. 2

    목적은 이용자가 권리와 법을 이해하고 삭제의 출처를 볼 수 있게 하는 것입니다.

  3. 3

    기술 문서는 별도 문서 사이트로 연결됩니다.

새 상황에 적용하기

Lumen 검색에서 특정 플랫폼 관련 통지 500건을 찾았습니다.

가장 안전한 첫 문장은 무엇인가요?

45분

입력을 맞추고 민감정보를 가리기

웹 양식과 JSON으로 들어온 통지를 하나의 Notice 객체로 만들고 자동 비식별화를 거치는 흐름을 봅니다.

먼저 떠올릴 비유

공항 보안대처럼, 서로 다른 가방을 같은 검사 순서로 보내고 공개하면 안 될 물건을 걸러 냅니다.

핵심 판단

`NoticeBuilder`는 입력 형식을 정리하고 관련 주체와 기본값을 붙인 뒤 `auto_redact`를 실행합니다.

직접 해보기

가상의 통지에서 공개해도 되는 필드와 가려야 할 개인정보를 두 색으로 표시합니다.

남길 증거

통지 등록→비식별화→검토 흐름도

코드 용어
저장소의 실제 코드이 파일에서 확인
app/models/notice_builder.rbed2b5b4
  def build
    @notice = model_class.new(params)
    set_json_params
    set_all_entities
    add_defaults
    @notice.auto_redact
    @notice
  end
코드가 하는 일
  1. 1

    입력값으로 새 통지 객체를 만듭니다.

  2. 2

    형식을 JSON처럼 맞추고 발신자·수신자 같은 관련 주체를 연결합니다.

  3. 3

    빠진 기본값을 채운 뒤 자동 비식별화를 실행합니다.

  4. 4

    마지막 줄은 정리된 통지를 다음 단계로 돌려줍니다.

새 상황에 적용하기

새 제출 경로를 추가했더니 개인정보가 검색에 그대로 나타났습니다.

가장 먼저 확인할 설계 지점은 어디인가요?

50분

공개 가능한 기록과 참인 주장을 구분하기

검색에 노출되는 조건을 읽고, 건수·비율을 법적 판단으로 과장하지 않는 해석 규칙을 만듭니다.

먼저 떠올릴 비유

신문의 정정란처럼, 공개 여부와 진실 여부는 같은 스위치가 아닙니다.

핵심 판단

`visible` 범위는 스팸·숨김·게시·철회 상태를 확인합니다. 이 필터는 통지 주장의 법적 타당성을 판정하지 않습니다.

직접 해보기

통지 건수 그래프에 검색 조건, 기간, 공개 범위, 해석 한계라는 네 가지 주석을 씁니다.

남길 증거

검색 탐색기와 ‘이 수치가 증명하지 않는 것’ 패널

코드 용어
저장소의 실제 코드이 파일에서 확인
app/models/notice.rbed2b5b4
  def self.visible
    where(visible_qualifiers)
  end

  def self.visible_qualifiers
    { spam: false, hidden: false, published: true, rescinded: false }
  end
코드가 하는 일
  1. 1

    `visible`이라는 이름의 선택 규칙이 아래 조건을 사용합니다.

  2. 2

    스팸이 아니고 숨김 처리되지 않은 기록만 남깁니다.

  3. 3

    게시됐고 철회되지 않은 통지만 검색 대상으로 삼습니다.

  4. 4

    어디에도 ‘법적으로 옳다’는 조건은 없습니다.

새 상황에 적용하기

`visible` 조건을 통과한 통지 2,000건을 분석했습니다.

코드가 직접 보장하는 것은 무엇인가요?

이번 코스의 결과물

플랫폼 삭제 통지 탐색기와 해석 한계 카드

제출 전 확인

  • 검색어·필터·기간을 다시 실행할 수 있게 기록했다.
  • 통지, 삭제, 법적 타당성을 서로 다른 개념으로 썼다.
  • 비식별화와 공개 범위가 결과에 미치는 영향을 설명했다.
  • 법률 자문이나 확정 판결처럼 표현하지 않았다.

7분 세미나 질문

검색 필터라는 기술 선택이 어떤 사람이나 통지를 보이게 또는 보이지 않게 만들 수 있나요?

다음 코스

도시 시나리오가 지도와 지표로 움직이는 구조 읽기

과정 보기