CLAUDE.md '디자인 시스템' 섹션 신규: - 쇼케이스(/design-system.html)를 단일 진실 공급원으로 명시 - 공통 컴포넌트 목록 (Button/Input/Select/PageContainer/PageHeader/Badge 등) - 카탈로그 API 사용 패턴 (getAlertLevelIntent/Label 등) - CSS 작성 6대 규칙 (인라인 색상 금지, 하드코딩 Tailwind 색상 금지, className override 정책, 시맨틱 토큰 우선, !important 절대 금지, vendor prefix 수동 대응) - 페이지 작성 표준 템플릿 - 접근성 (WCAG 2.1 Level A) 필수 사항 - 변경 사이클 (쇼케이스 → 카탈로그 → 컴포넌트 → 자동 반영) - 금지 패턴 체크리스트 RELEASE-NOTES.md [Unreleased]에 디자인 시스템 SSOT 작업 항목 추가: - 쇼케이스 페이지 + 신규 공통 컴포넌트 + 중앙 레지스트리 - 35+ feature 페이지 마이그레이션 - Badge intent 팔레트 테마 분리 - 접근성 전수 처리 (Select TypeScript 강제 등)
8.1 KiB
8.1 KiB
Release Notes
이 문서는 Keep a Changelog 형식을 따릅니다.
[Unreleased]
추가
- 디자인 시스템 쇼케이스 (
/design-system.html) — UI 단일 진실 공급원(SSOT)- 별도 Vite entry, 메인 SPA와 분리 (designSystem-*.js 54KB)
- 10개 섹션: Intro / Token / Typography / Badge / Button / Form / Card / Layout / Catalog / Guide
- 추적 ID 체계
TRK-<카테고리>-<슬러그>(예:TRK-BADGE-critical-sm) - 호버 시 툴팁, "ID 복사 모드", URL 해시 딥링크
#trk=... - 단축키
A로 다크/라이트 토글 - 한글/영문 라벨 병기로 카탈로그 검토 용이
- 신규 공통 컴포넌트:
Button(5 variant × 3 size = 15)@shared/components/ui/buttonInput/Select/Textarea/Checkbox/Radio@shared/components/ui/TabBar/TabButton(underline / pill / segmented 3 variant)@shared/components/ui/tabsPageContainer(size sm/md/lg + fullBleed)@shared/components/layout/PageContainerPageHeader(icon + title + description + demo + actions)@shared/components/layout/PageHeaderSection(Card 단축)@shared/components/layout/Section
- 중앙 레지스트리:
catalogRegistry.ts— 23개 카탈로그 메타 (id/title/description/source/items 자동 enumerate)variantMeta.ts— Badge intent 8종 + Button variant 5종 의미 가이드statusIntent.ts— 한글/영문 ad-hoc 상태 → BadgeIntent + getRiskIntent(0~100)
- 4 catalog에 intent 필드 추가: eventStatuses / enforcementResults / enforcementActions / patrolStatuses + getXxxIntent() 헬퍼
- UI 공통 카탈로그 19종 (
frontend/src/shared/constants/) — 백엔드 enum/code_master 기반 SSOT- violation/alert/event/enforcement/patrol/engine/userRole/device/parentResolution/ modelDeployment/gearGroup/darkVessel/httpStatus/userAccount/loginResult/permission/ vesselAnalysis/connection/trainingZone + kpiUiMap
- 표준 API:
get{Cat}Intent(code),get{Cat}Label(code, t, lang),get{Cat}Classes/Hex
- 시맨틱 텍스트 토큰 (
theme.css @layer utilities) — Tailwind v4 복합 이름 매핑 실패 대응text-heading/label/hint/on-vivid/on-bright,bg-surface-raised/overlay직접 정의
- Badge 시스템 재구축 — CVA 기반 8 intent × 4 size (rem), !important 제거
- cn() 유틸 (
lib/utils/cn.ts) — clsx + tailwind-merge, 시맨틱 토큰 classGroup 등록 - ColorPicker 컴포넌트 — 팔레트 grid + native color + hex 입력
- Role.colorHex (백엔드 V017 migration) — auth_role.color_hex VARCHAR(7), 빌트인 5개 역할 기본 색상 시드
- System Flow 뷰어 (
/system-flow.html) — 시스템 전체 데이터 흐름 시각화- 102 노드 + 133 엣지, 10개 카테고리 매니페스트
- stage/menu 두 가지 그룹화 토글, 검색/필터/딥링크 지원
- 포커스 모드 (1-hop 연결 노드만 활성화, 나머지 dim)
- 메인 SPA와 분리된 별도 entry, 산출문서 노드 ID 참조용
/version스킬 사후 처리로 manifest version 자동 동기화- CI/CD에서 버전별 스냅샷을 서버 archive에 영구 보존
- 백엔드
GET /api/stats/hourly?hours=24— 시간별 통계 조회 (PredictionStatsHourly) - V014 prediction 보조 테이블 12개 (fleet_vessels, gear_correlation_scores 등)
- V015 NUMERIC precision 일괄 확대 (score→7,4, pct→12,2)
- V016 parent workflow 누락 컬럼 일괄 추가 (17+ 컬럼, candidate_mmsi generated column)
변경
- 35+ feature 페이지 PageContainer/PageHeader 마이그레이션 — admin/detection/enforcement/field-ops/patrol/statistics/ai-operations/parent-inference/dashboard/monitoring/surveillance/vessel/risk-assessment 전체
- VesselDetail
-m-4negative margin 해킹 →<PageContainer fullBleed>정리 - LiveMapView fullBleed 패턴 적용
- Badge intent 팔레트 테마 분리: 라이트(파스텔
bg-X-100 text-X-900) + 다크(translucentbg-X-500/20 text-X-400) - 40+ 페이지 Badge/시맨틱 토큰 마이그레이션
- Badge className 직접 작성 → intent/size prop 변환
- 컬러풀 액션 버튼 →
text-on-vivid(흰색), 검색/필터 버튼 →bg-blue-400 text-on-bright - ROLE_COLORS 4곳 중복 제거 →
getRoleBadgeStyle()공통 호출 - PermissionsPanel 역할 생성/수정에 ColorPicker 통합
- DataTable
width의미 변경: 고정 → 선호 최소 너비 (minWidth), 컨텐츠 자동 확장 + truncate dateFormat.tssv-SE 로케일로YYYY-MM-DD HH:mm:ss일관된 KST 출력- MonitoringDashboard
PagePagination제거 (데이터 페이지네이션 오해 해소)
수정
- 접근성 (WCAG 2.1 Level A) — axe DevTools 위반 전수 처리:
<Select>컴포넌트 TypeScript union 타입으로aria-label/aria-labelledby/title컴파일 강제- 네이티브
<select>5곳 aria-label - 아이콘 전용
<button>16곳 aria-label <input>/<textarea>28곳 aria-label (placeholder 자동 복제 포함)- AIModelManagement 토글 →
role="switch"+aria-checked
- Badge className 위반 37건 전수 제거 —
<Badge intent="...">패턴으로 통일 - 하드코딩
bg-X-500/20 text-X-40056곳 제거 — 카탈로그 API + intent 사용 - 인라인
<button>type 누락 86곳 보정 - CSS Safari 호환성:
backdrop-filter-webkit-prefix 추가 (디자인 쇼케이스) trk-pulsekeyframe outline-color → opacity (composite-only 최적화)- Dashboard RiskBar 단위 버그 (0~100 정수를
*100하던 코드 → 범위 감지) - ReportManagement, TransferDetection
p-5 space-y-4padding 복구 - EnforcementHistory 그리드 minmax 적용으로 컬럼 잘림 해소
- timeline 시간
formatDateTime적용 (ISOT구분자 처리) - prediction e2e 5가지 이슈 수정 (2026-04-08)
- gear_correlation: psycopg2 Decimal × float TypeError →
_load_all_scores()float 변환 - violation_classifier:
(mmsi, analyzed_at)기준 UPDATE + 중국선박 EEZ 판정 로직 - kpi_writer / stats_aggregator: UTC → KST 날짜 경계 통일
- parent workflow 스키마 ↔ 코드 불일치 → V016로 일괄 해결
- gear_correlation: psycopg2 Decimal × float TypeError →
- DemoQuickLogin hostname 기반 노출 (Gitea CI
.env차단 대응) - 프론트 전수 mock 정리: eventStore.alerts, enforcementStore.plans, transferStore 완전 제거
- Dashboard/MonitoringDashboard/Statistics 하드코딩 → 실 API 전환
- UTC → KST 시간 표시 통일 (
@shared/utils/dateFormat.ts공통 유틸) - i18n
group.parentInferenceJSON 중복키 제거 - RiskMap Math.random() 격자 제거, MTIS 라벨 + "AI 분석 데이터 수집 중" 안내
- 12개 mock 화면에 "데모 데이터" 노란 배지 추가
[2026-04-07]
추가
- 모노레포 구조 전환 (frontend/ + backend/ + prediction/ + database/)
- Spring Boot 백엔드 초기화 + Flyway DB 마이그레이션 (V001~V013)
- 자체 인증 시스템 (JWT + 트리 기반 RBAC + 감사로그 + 데모 계정)
- 모선 워크플로우 + 관리자 화면 + 권한 라우트 가드
- 권한 관리 UI 고도화 (트리 RBAC PermissionsPanel)
- iran 백엔드 실연결 + 시스템 상태 + AI 채팅 기반 구현
- 마스터 데이터 + prediction 기반 DB 스키마 (V008~V013)
- 백엔드 API — 이벤트/통계/단속/마스터 데이터 CRUD
- prediction 분석 엔진 모노레포 이식 (14개 알고리즘, 7단계 파이프라인)
- prediction 출력 모듈 5종 (이벤트/위반/KPI/통계/경보)
- alerts API + AIAlert/Dashboard 위험선박 실데이터 전환
- VesselDetail + LiveMapView 실데이터 전환
- 프론트 15개 화면 실데이터 연동 (EventList, Statistics, Dashboard 등)
- 배포 환경 구성 (rocky-211 백엔드 + redis-211 prediction + nginx 프록시)
수정
- prediction_stats_monthly.stat_month CHAR(7) → DATE 타입 변경
- 권한 트리 UX 개선 + 라벨 사이드바 일치 + EXPORT 가드
변경
- 시스템 관리 페이지 백엔드 연결 + 메트릭 카드
문서
- 배포 문서 보강 + CI/CD 모노레포 수정
기타
- 팀 워크플로우 초기화 + Prettier + 타입 에러 수정
- .env 파일 서버 정책 준수 + pre-commit 모노레포 대응