관리자 전체 종목 필터 — 기록 필드(무게·횟수·거리·시간·칼로리)로 거르기 (2026-09-02)
- 기간: 2026-09-02 (세션 1개,
3feaf604-f4c8-4a2d-a319-21b18878f081). 오너 지시: "지금 종목 필터에 기록 필드 별로 필터할 수 있는 기능도 추가해줄래?" - 랜딩: PR #1128(
04fdfaea). 마이그레이션·엣지 함수 0건(서버 무변경). 관리자 셸은 docs 프로젝트/admin/배포 - 설계서: 없음(단일 화면 소품 — 지시 즉시 반영)
- 정본:
DesktopAdminAllExercises.tsx의fieldF/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 횟수)이나 조합 정확 일치는 필요해지면 확장.