발행일

검색 화면 시안 넷을 만들었고 여덟 달 뒤 전부 지워졌다 — 시안이 남긴 것과 남기지 못한 것

검색 화면 시안 넷을 만들었고 여덟 달 뒤 전부 지워졌다

이 글은 2026년 9월에 당시 커밋 이력을 다시 보며 정리한 것입니다. 날짜는 작업한 날 기준입니다.

2025년 7월 말, 표준데이터를 찾는 화면이 필요했습니다. 어떤 모양이어야 하는지는 정해져 있지 않았어요. 검색어 하나로 찾는 건지, 분류를 타고 내려가는 건지, 조건을 여러 개 거는 건지.

정하지 못한 채로 화면을 먼저 만들기로 했습니다. 7월 29일에 search라는 앱을 새로 만들고, 그 안에 가짜 데이터로 시안을 그리기 시작했습니다.

urlpatterns = [
    # 검색 가짜 데이터 진행
    path("", search.search, name="search"),
]

시안 넷

날짜파일모양
7/29chip-filter-search.html.j2139검색어를 치면 칩이 붙고, 칩을 눌러 조건을 빼는 형태
7/29cascading-data-filter-search.html.j296상위 분류를 고르면 하위 목록이 바뀌는 단계식
7/31dropdown-search-filter-with-checkbox.html.j2164드롭다운 안에 체크박스를 넣어 여러 개 고르는 형태
8/5→8/8advanced-filter-checkbox.html.j2107→452고급 필터 패널을 펼쳐 전체 선택·해제하는 형태

전부 TemplateView 하나에 템플릿만 바꿔 끼운 구조였고, 데이터는 템플릿 안에 박아 둔 목록이었습니다. 네 번째 시안은 사흘 사이 107줄에서 452줄로 늘었는데, 검색 결과 건수 표시·전체 선택·초기화 버튼까지 그 안에서 다 그려 봤기 때문입니다.

      <button id="filter-toggle-btn" type="button" class="primary w-[5rem]">
        고급 필터
      </button>
      ...
    <!-- 검색 결과 카운트 표시 -->
    <div class="flex justify-start items-center mb-4">
      <div class="result-count">
        검색 결과: <span id="result-count">0</span>      </div>
    </div>

시안을 만들면서 Search라는 모델도 만들었습니다. 이름·URL·공개 여부 필드 넷이고, 나중에는 마이그레이션까지 생겼어요. 시안 화면은 그 모델을 한 번도 읽지 않았어요. 모양을 보려고 만든 앱에 모델부터 만든 것인데, 왜 그랬는지는 커밋에 없습니다. 다른 앱의 모델 파일을 복사해 시작한 흔적으로 보입니다.

열흘 뒤 — 셋은 살고 하나는 남았다

8월 20일, 팀원이 "검색 기능 구현 initial commit"으로 실제 검색을 시작했습니다. 그날 두 번째 커밋이 제 시안 셋에 데이터를 붙였습니다.

class searchChipView(TemplateView):
    template_name = "search/common/chip-filter-search.html.j2"

    def get_context_data(self, **kwargs):
        context = super().get_context_data(**kwargs)
        context['dataset_titles'] = DatasetManager.get_all_titles()
        return context

칩 시안에는 데이터셋 제목 목록이, 드롭다운 시안에는 카탈로그 필터 데이터가, 단계식 시안에는 분류체계 데이터가 들어갔습니다. 메뉴에도 "단어 기반 검색·필터 기반 검색·계층 기반 검색" 셋이 올라갔어요.

네 번째 시안, 사흘 동안 452줄까지 키운 고급 필터 체크박스는 끝내 데이터가 연결되지 않았습니다. 그 뒤로 그 파일을 건드린 커밋 넷은 구조 정리·문구·테두리뿐이고, 뷰에 데이터를 붙인 커밋은 없어요. 가장 공을 들인 시안이 가장 먼저 쓸모를 잃었습니다.

그 뒤 두 달은 제가 검색 화면의 테두리·정렬·아코디언을 손보고 팀원이 쿼리와 링크를 고치는 식으로 갈렸습니다. 이때부터 화면은 제 것이고 데이터는 팀원 것이라는 분업이 생겼는데, 이 분업의 대가는 한계에 적었습니다.

여덟 달 뒤 — 내가 지웠다

2026년 3월 28일, 제가 올린 커밋 하나가 search 앱을 통째로 지웠습니다.

4차년도 인프라·모델 기반 구축
- Tailwind CSS 통합, search 앱·미사용 패키지 제거
...
 136 files changed, 2897 insertions(+), 4246 deletions(-)

시안 넷, 뷰 186줄, 모델, 마이그레이션이 한 줄 "search 앱 제거"로 사라졌습니다. 검색은 표준데이터 앱 안의 통합검색으로 옮겨 갔고, 그 통합검색도 다섯 달 뒤 다시 걷혔습니다. 그 이야기는 별도 글에 있습니다.

지우는 건 제가 했는데, 136개 파일짜리 커밋 안에서였습니다. 시안 넷 중 무엇이 최종 화면에 살아남았는지를 코드로 이을 수 없는 이유가 이겁니다. 삭제된 파일과 새로 만든 파일 사이에 이름도 구조도 다르고, 그 사이를 설명하는 커밋 메시지가 한 줄뿐이니까요.

시안이 남긴 것

지금 화면을 보면 검색어 칩은 있고, 분류를 타고 내려가는 드롭다운도 있고, 조건마다 칩 하나씩 붙어서 ×로 빼는 것도 있습니다. 2025년 7월 시안에 있던 모양들입니다. 하지만 그게 시안에서 온 건지 1년 뒤 목업에서 온 건지 저도 구분 못 합니다.

시안이 확실히 남긴 건 하나입니다. 팀원이 실제 검색을 만들 때 화면 모양을 새로 정하지 않아도 됐다는 것. 8월 20일 커밋이 뷰에 데이터 세 줄씩만 붙이고 끝난 게 그 증거입니다.

남기지 못한 건, 왜 그 넷이었는지입니다. 네 가지 모양을 비교한 기록이 없어요. 만들어 보고 눈으로 고른 겁니다.

검증

  • 당시 검증은 브라우저에서 네 화면을 열어 본 것이 전부입니다. 가짜 데이터라 검색이 실제로 되는지는 볼 수 없었습니다.
  • 이 글을 쓰며 확인한 것: 네 파일의 생성·수정 이력(git log --follow), 팀원의 데이터 연결 커밋에서 뷰 diff, 삭제 커밋의 파일 목록과 저자.
  • 네 번째 시안에 데이터가 끝내 안 붙었다는 건, 그 파일을 건드린 커밋이 8월 8일 이후 넷이고 넷 다 뷰를 안 건드렸다는 것으로 확인했습니다.

남은 것 · 한계

  • 시안 단계에서 모델과 마이그레이션을 만든 건 과했습니다. 지울 때 DB 테이블까지 따라 지워야 했습니다.
  • 화면은 나, 데이터는 팀원이라는 분업은 빨랐지만, 그 결과 저는 검색이 실제로 어떤 쿼리를 도는지 여덟 달 동안 몰랐습니다. 2026년에 검색 화면을 다시 만들 때 모집단과 건수 문제를 처음부터 겪은 이유 중 하나가 이겁니다.
  • 시안을 지운 커밋이 136개 파일짜리라, 다음 사람이 "검색 시안이 있었다"는 사실 자체를 알 방법이 이 글밖에 없습니다.
  • 네 모양을 비교한 기준을 그때 한 줄이라도 적었다면 1년 뒤 목업 대조 때 다시 썼을 텐데, 없습니다.

관련 글: 검색 화면 하나를 지우면서 파일 36개를 건드렸다 — 무엇을 남길지가 더 어려웠다 · Figma 44프레임을 코드와 대조하기 — "다르다"와 "틀렸다"를 나누는 일 · 분류 칩 하나를 네 번 갈아엎었다 — URL 값 0이 falsy라서 생긴 일 · 인기 검색어를 주석 처리했다 · 55개 파일의 회색을 처음 통일했다