release: 2026-04-08 (35건 커밋) #19
No reviewers
레이블
레이블 없음
마일스톤 없음
담당자 없음
참여자 2명
알림
마감일
마감일이 설정되지 않았습니다.
의존성
No dependencies set.
Reference: gc/kcg-ai-monitoring#19
불러오는 중...
Reference in New Issue
Block a user
No description provided.
Delete Branch "release/2026-04-08"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
릴리즈 [2026-04-08]
주요 변경
/design-system.html) + 신규 공통 컴포넌트 + 23개 카탈로그 중앙 레지스트리/system-flow.html) — 102 노드 + 133 엣지통계
검증
/deploy/kcg-ai-monitoring/)상세 노트
전체 변경사항은 docs/RELEASE-NOTES.md의 [2026-04-08] 섹션 참조.
변경: - badgeVariants 8 intent 모두 라이트/다크 팔레트 분리 - 다크: 밝은 솔리드 배경(-400) + slate-900 글자 + 강한 보더(-600) - 라이트: 파스텔 배경(-100) + 진한 글자(-900) + 소프트 보더(-300) - base에서 text-on-bright 제거 (intent별로 관리) - classes 기반 카탈로그 4종에 dark: 변형 추가로 라이트 모드 대응: - eventStatuses: bg-red-100 text-red-800 dark:bg-red-500/20 dark:text-red-400 - enforcementResults: 동일 패턴 (red/purple/yellow/green) - patrolStatuses: border 포함 (7 상태) - enforcementActions: classes 필드 신규 추가 (기존에 없어서 fallback grey로 떨어져 라이트 모드에서 글자 안 보이던 원인) - CatalogSection fallback classes도 dark: 변형 추가 (안전장치) - enforcementActions에 getEnforcementActionClasses() 헬퍼 신규 빌드 검증: - tsc ✅, vite build ✅ - CSS 확인: .dark\:bg-red-400:is(.dark *) 컴파일 정상Phase A: 쇼케이스의 카탈로그/variant 정보를 중앙 상수로 끌어올림 - shared/constants/catalogRegistry.ts 신규 - 19+ 카탈로그의 id/showcaseId/titleKo/titleEn/description/source/items를 단일 레지스트리로 통합 관리 - 새 카탈로그 추가 = 레지스트리에 1줄 추가로 쇼케이스 자동 노출 - CATALOG_REGISTRY + getCatalogById() - lib/theme/variantMeta.ts 신규 - BADGE_INTENT_META: 8 intent의 titleKo/titleEn/description - BUTTON_VARIANT_META: 5 variant의 titleKo/titleEn/description - BADGE_INTENT_ORDER/SIZE_ORDER, BUTTON_VARIANT_ORDER/SIZE_ORDER - 쇼케이스 섹션 리팩토링 — 하드코딩 제거 - CatalogSection: CATALOG_REGISTRY 자동 열거 (CATALOGS 배열 삭제) - BadgeSection: BADGE_INTENT_META에서 의미 가이드 + titleKo 참조 - ButtonSection: BUTTON_VARIANT_META에서 의미 가이드 + titleKo 참조 효과: - 카탈로그의 라벨/색상/intent 변경 시 쇼케이스와 실 페이지 동시 반영 - Badge/Button의 variant 의미가 variantMeta 한 곳에서 관리됨 - 쇼케이스 섹션에 분산돼 있던 하드코딩 제거 (INTENT_USAGE, VARIANT_USAGE 등) 다음 단계: 실 페이지를 PageContainer/PageHeader/Button/Input으로 마이그레이션Phase C-2 (인라인 <button>): - TabBar/TabButton 공통 컴포넌트 신규 (underline/pill/segmented 3종) - DataHub: 메인 탭 → TabBar + TabButton 전환, 필터 pill 전환, CTA 버튼 (작업 등록/스토리지 관리/새로고침) → Button variant - PermissionsPanel: 역할 생성/저장 → Button variant, icon 버튼 유지 - Python 일괄 치환: 51개 inline <button>에 type="button" 추가 - 남은 <button> type 누락 0건 (multi-line 포함) Phase C-3 (하드코딩 색상): - AdminPanel SERVER_STATUS 뱃지: getStatusIntent() 사용으로 통일 - bg-X-500/20 text-X-400 패턴 0건 Phase C-4 (인라인 style): - LiveMapView BaseMap minHeight → className="min-h-[400px]" - 나머지 89건 style={{}}은 모두 dynamic value (progress width, toggle left, 데이터 기반 color 등)로 정당함 4개 catalog (eventStatuses/enforcementResults/enforcementActions/ patrolStatuses)에 intent 필드 추가, statusIntent.ts 공통 유틸 신규. 이제 모든 Badge가 쇼케이스 팔레트 자동 적용됨. 빌드 검증: - tsc ✅, eslint ✅, vite build ✅ - 남은 위반 지표: Badge className 0, button-type-missing 0, 하드코딩 색상 0axe/forms/backdrop 에러 3종 모두 해결: 1) CSS: backdrop-filter Safari 호환성 - design-system CSS에 -webkit-backdrop-filter 추가 - trk-pulse 애니메이션을 outline-color → opacity로 변경 (composite만 트리거, paint/layout 없음 → 더 나은 성능) 2) 아이콘 전용 <button> aria-label 추가 (9곳): - MainLayout 알림 버튼 → '알림' - UserRoleAssignDialog 닫기 → '닫기' - AIAssistant/MLOpsPage 전송 → '전송' - ChinaFishing 좌/우 네비 → '이전'/'다음' - 공통 컴포넌트 (PrintButton/ExcelExport/SaveButton) type=button 누락 보정 3) <input>/<textarea> 접근 이름 27곳 추가: - 로그인 폼, ParentReview/LabelSession/ParentExclusion 폼 (10) - NoticeManagement 제목/내용/시작일/종료일 (4) - SystemConfig/DataHub/PermissionsPanel 검색·역할 입력 (5) - VesselDetail 조회 시작/종료/MMSI (3) - GearIdentification InputField에 label prop 추가 - AIAssistant/MLOpsPage 질의 input/textarea - MainLayout 페이지 내 검색 - 공통 placeholder → aria-label 자동 복제 (3) Button 컴포넌트에는 접근성 정책 JSDoc 명시 (타입 강제는 API 복잡도 대비 이득 낮아 문서 가이드 + 코드 리뷰로 대응). 검증: - 실제 위반 지표: inaccessible button 0, inaccessible input 0, textarea 0 - tsc ✅, eslint ✅, vite build ✅ - dist CSS에 -webkit-backdrop-filter 확인됨이전 스캐너가 놓친 패턴 — 모달 닫기 X 버튼과 토글 스위치 등: - NoticeManagement: 모달 헤더 X → '닫기' - ReportManagement: 업로드 패널 X → '업로드 패널 닫기' - AIModelManagement: 규칙 토글 → role=switch + aria-checked + aria-label API 예시 복사 → '예시 URL 복사' - FileUpload: 파일 제거 X → '{파일명} 제거' - NotificationBanner: 알림 닫기 X → '알림 닫기' - SearchInput: 입력 aria-label (placeholder), 지우기 버튼 → '검색어 지우기' 검증: - 개선된 스캐너로 remaining=0 확인 (JSX tag 중첩 파싱) - tsc ✅릴리즈 2026-04-08 승인 (via /release skill)