전수 E2E 순회·소유자 결정 6건 구현·디자인 감사 반영
- 전수 순회: IA 전 라우트 412개 기능 인벤토리를 체크리스트 백로그로 관리 (docs/ops/e2e-full-sweep-2026-07-27.md), 신규 full-sweep 스펙 10파일 추가. RED→GREEN으로 결함 12건 수정: 관리자 무한 렌더 프리즈(TanStack autoReset 루프), 복수 코호트 저장 유실, 페르소나 보관 503(SQL 컬럼 모호성), PII 과잉 마스킹, /admin/ai watchdog 오탐 오버레이, 모바일 겹침 2건, 설정 스크롤 스파이, 온보딩 전화번호 무검증, 리뷰 조사·난도 라벨, pending 피드백 등. - 소유자 결정 구현: 설정 아바타 변경, 동의 철회·재동의 전체 흐름, 신규 학습자 기초 우선 추천, 학생 분석 테이블 가상화(@tanstack/react-virtual), 저작 모드 죽은 레일 정리, 감정 밸런스 타임라인 차트(deep turn_valence + 결정론 파생 폴백). - 디자인 감사(142차): 라이트 팔레트 AA 대비, 다크 토큰 별칭 통일, 미정의 CSS 변수 정리, 한글 keep-all 전역화, 탭 타깃 24px, LCP preconnect. - 검증: npm run e2e 병렬 432 수집 GREEN + 직렬 49/49 exit 0, 백엔드 pytest 421, gateway 29, typecheck/build/design-ssot/dead-code/중복 게이트 통과, layout-visual-gate 15/15, session-layout 8/8. 상세는 SSOT 대시보드 142~144차 노트.
This commit is contained in:
parent
0ae94499f2
commit
4511383cd9
55 changed files with 9333 additions and 573 deletions
|
|
@ -405,9 +405,26 @@
|
|||
min-width:0;
|
||||
display:flex;
|
||||
flex-direction:column;
|
||||
/* 세로 가상화 스크롤 컨테이너. height:auto + max-height라 행이 적으면
|
||||
내용 높이만 차지해 데드스페이스가 생기지 않는다. */
|
||||
max-height:64vh;
|
||||
overflow-x:auto;
|
||||
overflow-y:auto;
|
||||
scrollbar-gutter:stable;
|
||||
}
|
||||
/* 가상화 본문 — 전체 목록 높이를 확보하는 relative 캔버스.
|
||||
column flex 컨테이너가 인라인 height를 축소하지 않도록 flex:none이 필수다. */
|
||||
.pf-learner-table__body{
|
||||
position:relative;
|
||||
flex:none;
|
||||
min-width:1000px;
|
||||
}
|
||||
.pf-learner-table__body .pf-learner-record{
|
||||
position:absolute;
|
||||
top:0;
|
||||
left:0;
|
||||
width:100%;
|
||||
}
|
||||
.pf-learner-table__head,
|
||||
.pf-learner-row{
|
||||
display:grid;
|
||||
|
|
@ -441,7 +458,8 @@
|
|||
min-width:1000px;
|
||||
border-top:1px solid var(--paper-2);
|
||||
}
|
||||
.pf-learner-table__head + .pf-learner-record{
|
||||
/* 가상화로 첫 행이 헤더의 형제가 아니게 되어 data-index 기준으로 상단 이중선을 막는다. */
|
||||
.pf-learner-record[data-index="0"]{
|
||||
border-top:0;
|
||||
}
|
||||
.pf-learner-row{
|
||||
|
|
@ -458,6 +476,15 @@
|
|||
.pf-learner-row__tags{
|
||||
min-width:0;
|
||||
}
|
||||
/* 암시적 컬럼(auto = minmax(auto,max-content))은 자식의 width:max-content 요청을
|
||||
그대로 수용해 셀 폭(261px)을 넘겨 288px까지 늘어났고, 그 결과 max-width:100%가
|
||||
확장된 트랙 기준으로 풀려 ellipsis가 걸리지 않고 옆 컬럼을 침범했다.
|
||||
트랙을 minmax(0,1fr)로 고정해야 셀 안에서 잘린다. (2026-07-27 겹침 회귀 수정) */
|
||||
.pf-learner-row__id,
|
||||
.pf-learner-row__metric,
|
||||
.pf-learner-row__tag-summary{
|
||||
grid-template-columns:minmax(0,1fr);
|
||||
}
|
||||
.pf-learner-row__id{
|
||||
display:grid;
|
||||
gap:3px;
|
||||
|
|
@ -465,7 +492,10 @@
|
|||
.pf-learner-name-button{
|
||||
width:max-content;
|
||||
max-width:100%;
|
||||
padding:0;
|
||||
/* 상세 진입의 주 조작이다. 줄높이만큼(19px)이면 WCAG 2.2 SC 2.5.8(24px)에
|
||||
미달해 세로 여백으로 타깃을 채운다. */
|
||||
min-height:24px;
|
||||
padding:3px 0;
|
||||
border:0;
|
||||
color:var(--text-strong);
|
||||
background:transparent;
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue