패턴
첫 가져오기 진행
스켈레톤 3행 → 도착하는 대로 표시 → 날짜로 진행 → 일부 실패해도 받은 것은 유지 → 떠나도 계속. 알림은 상태 변화만.
흐름
기다리게 하지 않는다. 받은 것은 버리지 않는다. 떠나도 계속된다.
- 처음엔 스켈레톤 3행 — 빈 상태와 다른 모양이다.
- 첫 배치가 오면 위에서부터 행을 추가한다. 스크롤한 뒤에는 “새 기록 N개” 칩으로 바꾼다.
- 진행은 퍼센트가 아니라 날짜: “10월 3일까지 읽음”.
- 일부가 실패하면 partial 고정 행(failedRange)을 띄우고 받은 결과는 유지한다.
- 떠나도 계속된다. 돌아오면 서버 단계를 바로 그리고 순 변화만 한 번 알린다.
단계별 조합
실제 컴포넌트: ImportProgress + 목록 + 일부 실패 행 + 새 기록 칩
가져오기
10월 3일까지 읽음
다른 화면으로 가도 계속 읽어요.
Google Calendar
- 주간 계획 회의Google Calendar · 10/14
- 출시 일정 조율Google Calendar · 10/09
- Q4 로드맵 싱크Google Calendar · 10/07
알림 정책
- 이렇게role="status" 공유 리전 하나로, 상태 변화만: 시작 · 첫 결과 · 일부 실패 · 완료. 10초에 최대 1회. 완료·일부 실패는 버리지 않고 창이 열릴 때까지 미룬다.
- 이렇게 하지 않기행 추가마다 알리지 않는다. 목록은 aria-busy, 초점은 움직이지 않는다.
| 떠날 때 | 지금 | 알림 |
|---|---|---|
running | running | — |
running | partial | partial |
first-results | done | done |
starting | running | — |
문구
| 자리 | ko | en | zh-Hans | es |
|---|---|---|---|---|
| 진행 | 10월 3일까지 읽음 | Scanned back to Oct 3 | 已读取至10月3日 | Leído hasta el 3 oct |
| 보조 줄 | 다른 화면으로 가도 계속 읽어요. | Keeps going if you leave. | 离开此页也会继续。 | Sigue aunque salgas. |
| 일부 실패 | 9월 21–25일 일정을 읽지 못했어요. 받은 {n}개는 그대로 있어요. | Couldn’t read Sep 21–25. The {n} we got are kept. | 9月21–25日的日程未能读取,已获取的{n}条仍保留。 | No pudimos leer 21–25 sep. Los {n} recibidos se conservan. |
| 결과 0건 | 지난 30일을 모두 읽었지만 가져올 일정이 없었어요. | Scanned all 30 days. No events to bring in. | 已读完过去30天,没有可导入的日程。 | Leímos los 30 días. No hay eventos para traer. |
날짜를 모르면(failedRange가 없거나 잘못됐으면) 날짜를 추측하지 않고 “일부 기간”으로 쓴다.