Commit a9f3903
committed
학습: 자동저장 복원을 언어 독립 셀 상태로 고정
상황:
- main d3d857e2의 CI run 30212156544에서 experience job만 web-learning 자동저장 최종 대기 중 timeout으로 실패했다.
- 검증기는 data-notebook-active-cell을 조회했지만 NotebookPanel은 class만 렌더링했고, 복원 완료 여부도 한국어 문자열 셀 1 / 1에 결합돼 있었다.
- 학습 section 정적 검증기는 현재 제품이 curriculum과 editor 모두에서 진단 내보내기를 숨기는 더 강한 조건 대신 과거의 짧은 조건 문자열을 요구했다.
- Landing/Learning packet 문서는 전체 수동 접근성 matrix와 현재 구현 배포 증거의 책임 경계를 구분하지 못했다.
변경:
- NotebookPanel의 활성 셀 상태에 data-notebook-active-cell, data-notebook-active-index, data-notebook-cell-count를 추가했다.
- 자동저장 브라우저 검증을 표시 문구가 아니라 active index 1과 cell count 1 데이터 계약으로 판정하도록 바꾸고 회귀 테스트를 추가했다.
- 학습 section 계약은 curriculum과 editor 양쪽의 진단 내보내기 억제를 현재 TopControls 조건과 동일하게 검사한다.
- packet README에 design-system-contract, web-learning, landing-public의 실제 범위와 구현 commit 동일 Pages 배포 원칙을 기록하고, 전체 AT matrix owner를 04로 분리했다.
영향:
- Web 학습 reload 후 편집 내용 제거와 1개 셀의 첫 활성 셀 복원을 locale에 관계없이 검증할 수 있다.
- curriculum과 notebook editor의 집중 화면에는 진단 내보내기가 다시 노출되지 않는다.
- 이번 구현은 Landing/Learning machine migration과 배포 증거 범위만 다루며 contrast, keyboard, screen-reader, Firefox, WebKit, WebView2 전체 검수는 04에 남는다.
검증:
- npm run build (editor): 2731 modules, Vite 2.69초, passed.
- uv run pytest -q tests/surface/testProductSurfaceContract.py: 19 passed.
- verifyNotebookAutosavePlaywright.py --reuse-build: Web restore, Local bounded transition flush, document path ownership passed.
- tests/run.py gate web-learning: 472/472 routes, Chromium 10/10, failure 0.
- tests/run.py gate landing-public: Chromium 5/5, failure 0.
- design-system-contract, docs, root-clean: passed.
- tests/run.py preflight: 3/3, 415515ms; backend 1522 passed, 10 skipped, 1 warning, 8 subtests passed.
- git diff --cached --check: passed.1 parent d3d857e commit a9f3903
5 files changed
Lines changed: 35 additions & 9 deletions
File tree
- editor/src/components/notebook
- mainPlan/astryx-product-experience/01-design-foundation/02-landing-and-learning-migration
- tests
- learning
- surface
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
225 | 225 | | |
226 | 226 | | |
227 | 227 | | |
228 | | - | |
| 228 | + | |
| 229 | + | |
| 230 | + | |
| 231 | + | |
| 232 | + | |
| 233 | + | |
| 234 | + | |
229 | 235 | | |
230 | 236 | | |
231 | 237 | | |
| |||
Lines changed: 11 additions & 5 deletions
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
36 | 36 | | |
37 | 37 | | |
38 | 38 | | |
39 | | - | |
40 | | - | |
41 | | - | |
42 | | - | |
| 39 | + | |
| 40 | + | |
| 41 | + | |
| 42 | + | |
| 43 | + | |
| 44 | + | |
| 45 | + | |
| 46 | + | |
43 | 47 | | |
44 | 48 | | |
45 | 49 | | |
46 | 50 | | |
47 | 51 | | |
48 | 52 | | |
49 | 53 | | |
50 | | - | |
| 54 | + | |
| 55 | + | |
| 56 | + | |
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
548 | 548 | | |
549 | 549 | | |
550 | 550 | | |
551 | | - | |
552 | | - | |
| 551 | + | |
| 552 | + | |
553 | 553 | | |
554 | 554 | | |
555 | 555 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
145 | 145 | | |
146 | 146 | | |
147 | 147 | | |
| 148 | + | |
| 149 | + | |
| 150 | + | |
| 151 | + | |
| 152 | + | |
| 153 | + | |
| 154 | + | |
| 155 | + | |
| 156 | + | |
| 157 | + | |
| 158 | + | |
| 159 | + | |
| 160 | + | |
148 | 161 | | |
149 | 162 | | |
150 | 163 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
492 | 492 | | |
493 | 493 | | |
494 | 494 | | |
495 | | - | |
| 495 | + | |
| 496 | + | |
496 | 497 | | |
497 | 498 | | |
498 | 499 | | |
| |||
0 commit comments