전수 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
|
|
@ -1748,6 +1748,20 @@
|
|||
padding:4px 7px;
|
||||
}
|
||||
}
|
||||
/* 초소형 폭(320~420px, iPhone SE급) 전용 밴드.
|
||||
기존 최소 브레이크포인트가 460px이라 이 구간이 비어 있었다.
|
||||
320px에서 페르소나 카드는 78vw(=249.6px)이고 마크 38px + 좌우 패딩 48px + 갭 11px를
|
||||
빼면 이름 칸이 150.6px밖에 안 남는다. 그래서
|
||||
"하린(가명) · 고3 · 진로갈등(부모기대 vs 본인욕구)"가 3줄(57px)을 요구하는데
|
||||
기본 -webkit-line-clamp:2(38px)에 걸려 마지막 줄 19px이 통째로 사라졌다
|
||||
(실측: clientHeight 38 / scrollHeight 57).
|
||||
→ 이 구간만 3줄까지 허용해 이름이 온전히 보이게 한다. 그보다 더 길어져도
|
||||
-webkit-box + line-clamp를 유지하므로 세로로 깎이지 않고 말줄임(…)으로만 잘린다. */
|
||||
@media (max-width:420px){
|
||||
.lh-persona__name{
|
||||
-webkit-line-clamp:3;
|
||||
}
|
||||
}
|
||||
@media (prefers-reduced-motion:reduce){
|
||||
.lh-skel__box,
|
||||
.lh-skel__line{animation:none;}
|
||||
|
|
@ -1764,8 +1778,8 @@
|
|||
text-align: left;
|
||||
padding: 9px 11px;
|
||||
border-radius: var(--radius-sm);
|
||||
border: 1px solid var(--border-soft, rgba(255, 255, 255, 0.09));
|
||||
background: var(--bg-inset, rgba(0, 0, 0, 0.12));
|
||||
border: 1px solid var(--border-subtle);
|
||||
background: var(--bg-surface-2);
|
||||
color: inherit;
|
||||
cursor: pointer;
|
||||
}
|
||||
|
|
@ -1781,7 +1795,7 @@
|
|||
margin: 0;
|
||||
font-size: 11.5px;
|
||||
line-height: 1.5;
|
||||
color: var(--text-dim);
|
||||
color: var(--text-muted);
|
||||
}
|
||||
.lh-rapport-list {
|
||||
display: grid;
|
||||
|
|
@ -1806,13 +1820,13 @@
|
|||
margin-left: 4px;
|
||||
font-size: 10.5px;
|
||||
font-weight: 620;
|
||||
color: var(--text-dim);
|
||||
color: var(--text-muted);
|
||||
}
|
||||
.lh-rapport-row__bar {
|
||||
display: block;
|
||||
height: 5px;
|
||||
border-radius: 3px;
|
||||
background: var(--bg-inset, rgba(0, 0, 0, 0.16));
|
||||
background: var(--neutral-100);
|
||||
overflow: hidden;
|
||||
}
|
||||
.lh-rapport-row__bar i {
|
||||
|
|
@ -1840,10 +1854,10 @@
|
|||
gap: 5px;
|
||||
padding: 5px 10px;
|
||||
border-radius: 999px;
|
||||
border: 1px solid var(--border-soft, rgba(255, 255, 255, 0.1));
|
||||
border: 1px solid var(--border-subtle);
|
||||
font-size: 11.5px;
|
||||
font-weight: 680;
|
||||
color: var(--text-dim);
|
||||
color: var(--text-muted);
|
||||
}
|
||||
.lh-milestone.is-done {
|
||||
border-color: color-mix(in srgb, var(--accent) 45%, transparent);
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue