Skip to content

관리자 전체 종목 필터 — 기록 필드(무게·횟수·거리·시간·칼로리)로 거르기 (2026-09-02)

  • 기간: 2026-09-02 (세션 1개, 3feaf604-f4c8-4a2d-a319-21b18878f081). 오너 지시: "지금 종목 필터에 기록 필드 별로 필터할 수 있는 기능도 추가해줄래?"
  • 랜딩: PR #1128(04fdfaea). 마이그레이션·엣지 함수 0건(서버 무변경). 관리자 셸은 docs 프로젝트 /admin/ 배포
  • 설계서: 없음(단일 화면 소품 — 지시 즉시 반영)
  • 정본: DesktopAdminAllExercises.tsxfieldF/fieldMatch/FIELD_OPTS · 마커 adminAllExercisesFieldFilter(designContract.ts)
  • 도구: 없음(브라우저 실측은 워크트리 일회용 vite 하네스, 커밋 안 함)
  • 게이트: 기존 렌더 계약·dead-css·마커 등록 검사(신규 테스트 없음 — 모달은 열림 상태가 UI 내부 상태라 SSR로 못 잠근다)
  • 버그리포트: 없음(기능 추가)
  • 계약: 없음

1. 배경

전체 종목 표의 필터 설정 모달에는 종목 타입·종목 분류·타겟 부위 세 행만 있었다. "거리를 기록하는 종목만" 같은 조건은 검색어로도 걸 수 없어, 기록 필드 기준 점검(예: 유산소 종목의 기록 필드가 제대로 등록됐는지)을 표 전체를 훑어야 했다.

2. 문제 제기

기록 필드는 종목 특성인데 필터 축이 없었다

표의 '필수 입력' 열에 기록 필드 조합이 보이긴 하지만, 그 열로 거를 수는 없었다. 관리자가 "칼로리 기록 종목 전부"를 보려면 1,000행 넘는 표를 눈으로 훑어야 했다.

3. 해결 방안

원칙 (오너 지시, 2026-09-02)

  • 기존 필터 행과 같은 문법(칩 버튼 + 파셋 카운트)으로 "기록 필드" 행을 추가한다.

접근

대안판단
"그 항목을 기록하는 종목"(포함) 단일 선택채택 — 거리 → 러닝·로잉머신처럼 직관적이고 다른 행과 같은 단일 선택 문법
기록 필드 조합 정확 일치(예: 거리+시간만)기각 — 조합 수가 많아 칩이 늘고, 점검 용도엔 포함 조건이면 충분
다중 선택(AND)보류 — 필요해지면 확장

4. 적용한 내용

Phase 1 — 기록 필드 필터 행 (#1128)

  • 상태 fieldF(기본 all), 조건 fieldMatch = 종목의 recordingFields에 선택 항목 포함. 선택지는 카탈로그 원자 5종 고정 순서(무게·횟수·거리·시간·칼로리).
  • 파셋 카운트는 다른 행과 같은 규칙(자기 그룹을 뺀 나머지 조건 + 검색을 적용한 모수), 초기화·활성 배지·검색 중 후보 필터에 포함.
  • 마커 adminAllExercisesFieldFilter 등록.

작업 중 드러난 것

  • 하네스 스크린샷이 뷰포트 에뮬레이션 잔재로 확대되어 찍히거나 시간 초과가 잦다 — 상태 확인은 read_page·JS로 DOM(data-lg-state=selected, 행 이름)을 직접 읽는 편이 빠르고 확실하다.

5. 적용 결과

항목결과
필터 축3(타입·분류·부위) → 4(+기록 필드)
하네스 실측(종목 6개 픽스처)'거리' 선택 시 카운트 2 → 적용 후 목록 러닝·로잉머신, 헤더 2/6, 필터 배지 1
로컬 게이트유닛 2,345건 green, unused 게이트 통과. §18로 CI 대기 없이 머지
미검증Production 관리자 화면 실물(로그인 장벽) — 코드 경로는 기존 필터 행과 동일

6. 이번 개선으로 향상된 것

기록 필드 기준 점검이 한 번의 클릭이 됐다

"칼로리 기록 종목 전부", "시간만 기록하는 종목" 같은 점검을 표를 훑지 않고 바로 본다.

남은 것

  • 다중 선택(무게 AND 횟수)이나 조합 정확 일치는 필요해지면 확장.