발행일

교통 데이터 플랫폼 프론트엔드·백엔드 2025 ~ 현재 경력 기술서

한눈에 보기

항목내용
도메인교통 분야 국제 표준 — 데이터 사전·차량 통신 메시지 규격
기간2025.04 – 현재 (진행 중)
역할프런트엔드에서 백엔드까지
기술 스택Django 4.2, PostgreSQL(운영)·SQLite(개발), django-treebeard, Jinja 템플릿, JavaScript, jQuery, D3.js, jsTree, Tailwind CSS(v3→v4), Playwright, GitLab
담당 영역등록 신청, 트리 구조, 설문조사, 시각화, QA 자동화

화면을 만들던 사람이 모델과 쿼리까지 맡게 된 기록입니다. 재학 시절 파이썬으로 웹을 만들어 본 경험을 살려, 지금은 신청서 화면부터 승인 시점의 데이터 생성, 설문 모델 설계까지 한 기능을 앞뒤로 끝까지 맡고 있습니다. 데이터 지식이 필수인 도메인이라 처음엔 낯설었지만, 하나씩 풀다 보니 사용자가 어디서 막히는지가 보였고 그 지점을 고치는 데 집중했습니다.


1. 등록 신청

표준데이터·OID 등록 신청을 화면부터 데이터 생성까지 맡았습니다. 신청하는 순간 데이터를 만들면 반려된 신청의 흔적이 목록에 남기 때문에, 신청 내용을 JSON 초안 하나에 담아 두고 승인될 때 하위 항목부터 순서대로 만들도록 설계했습니다. 그러다 초안이 PostgreSQL 색인 크기 제한(2,704바이트)에 걸려 저장이 통째로 실패했고, 초안 행만 색인에서 빼는 부분 색인으로 풀었습니다.

화면 쪽에서는 신청서 항목 모달이 한 번 열 때마다 후보 조회를 20번 보내던 것을 2번으로 줄였고, 제출 조건을 "세 항목 중 하나만 있으면"으로 풀었습니다.

  • 신청 내용은 초안으로 두고 승인할 때 만들기
  • 신청서 모달의 후보 조회를 20번에서 2번으로 줄인 방법
  • 제출 조건을 "셋 중 하나만 있으면"으로 바꾼 일
  • 기록부터 배포까지, 신청 상태 7단계 설계

2. 트리 구조

분류체계·메타클래스·OID가 전부 계층 데이터라, 저장·조회·화면 세 층을 함께 다뤘습니다. 도메인마다 따로 있던 트리 로직을 공통 헬퍼로 뽑았고, 번호로 갈라지는 OID 트리는 세로 목록 대신 가로 조직도로 다시 그렸습니다.

  • 두 트리에 겹쳐 있던 서버 로직을 헬퍼로 묶은 기록
  • OID 트리를 세로 목록에서 가로 조직도로 바꾼 이유
  • 드릴다운을 뺐다가 같은 날 밤에 되살린 일

3. QA 자동화

사람이 눈으로 돌던 QA를 코드로 옮겼습니다. 기능목록 엑셀을 기준으로 메뉴 136종을 전부 열어 보는 Playwright 스윕을 만들었고, 오래 쌓여 있던 e2e 실패 25건을 원인별로 갈라 시나리오 274건을 실패 0으로 만들었습니다.

  • 메뉴 136개를 Playwright로 한 번에 점검하기
  • 실패로 남아 있던 e2e 25건, 진짜 버그는 1건이었다

4. 설문조사

공통 앱에 섞여 있던 설문 로직을 독립 앱으로 떼어 내고, 템플릿 → 섹션 → 질문 3단 구조의 모델 7개로 다시 설계했습니다. 소프트 삭제, 점수 자동 계산, 낮은 점수일 때 사유 필수 입력 같은 운영 규칙을 모델에 넣었고, 대상자 임시 계정 발급과 안내 메일 발송은 관리 명령으로 자동화했습니다.

  • 설문조사 기능을 처음부터 다시 설계한 기록

5. 시각화

서버에서 이미지로 굽던 트리를 D3 인터랙티브 트리로 바꿔 확대하고 탐색할 수 있게 했습니다. 화면마다 복제되던 줌 컨트롤은 공용 모듈로 뺐습니다.

  • 이미지로 굽던 트리를 D3로 다시 그린 일
  • 관계도를 따라 계속 탐색하게 하고, 겹치던 노드를 푼 일
  • 화면마다 복사해 쓰던 줌 버튼을 하나로 합친 일

참고 : 사이트 화면

메인 화면 표준데이터 통합검색 OID 트리 온톨로지 관계도