@ihabdevteam/core 0.257.0 → 0.259.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +68 -0
- package/dist/components.cjs.js +181 -181
- package/dist/hooks.cjs.js +1 -1
- package/dist/i18n.cjs.js +1 -1
- package/dist/ihabdevteam-core.cjs.js +186 -186
- package/dist/ihabdevteam-core.d.ts +37 -1
- package/dist/packages/core/src/components/Training/TrainingPagePopup.js +52 -2
- package/dist/packages/core/src/components/Training/trainingPopupUtils.d.ts +18 -0
- package/dist/packages/core/src/components/Training/trainingPopupUtils.js +28 -0
- package/dist/packages/core/src/components.d.ts +1 -1
- package/dist/packages/core/src/components.js +1 -1
- package/dist/packages/core/src/utils/trainingItemResults.d.ts +17 -0
- package/dist/packages/core/src/utils/trainingItemResults.js +28 -0
- package/dist/packages/core/src/version.d.ts +1 -1
- package/dist/packages/core/src/version.js +1 -1
- package/dist/utils.cjs.js +2 -2
- package/package.json +1 -1
package/CHANGELOG.md
CHANGED
|
@@ -7,6 +7,74 @@ All notable changes to this project will be documented in this file.
|
|
|
7
7
|
> 적은 글이라, 지금 이름으로 고쳐 놓으면 그 시절에 그 이름으로 받은 사람이
|
|
8
8
|
> 제 이야기를 못 찾는다.
|
|
9
9
|
|
|
10
|
+
## 0.259.0
|
|
11
|
+
|
|
12
|
+
### 스텝 payload 에 **때 둘을 얹는다** — `withStepTimes` (말귀 요청 (68) 후속)
|
|
13
|
+
|
|
14
|
+
0.258.0 으로 `TrainingItemResult` 에 두 칸을 열었더니 **앱이 직접 찍을 길이 없었다.** 앱의
|
|
15
|
+
`buildResults` 는 판이 끝난 뒤 `answersByPage` 를 한 번 받을 뿐이고, 답은 **코어 스텝이** 쓴다.
|
|
16
|
+
답·쪽 바뀜 콜백이 props 에 없고 `registerOnNext` 는 '다음' 누른 때라 **답한 때가 아니다**.
|
|
17
|
+
쪽 마운트로 `shownAt` 은 흉내 낼 수 있어도 `answeredAt` 은 지어낸 때가 된다.
|
|
18
|
+
|
|
19
|
+
이제 코어가 **스텝의 때**를 얹는다. 쪽↔문항 대응은 그대로 앱의 `buildResults` 가 한다 —
|
|
20
|
+
**스텝의 때는 그 스텝의 사실**이라, (68) 때 안 하기로 한 *"쪽 때를 문항 때라 적는"* 거짓이
|
|
21
|
+
안 생긴다(그건 "쪽을 넘긴 간격" 이 됐을 것이다).
|
|
22
|
+
|
|
23
|
+
- **`answeredAt` 은 payload 의 `__ts`** — 스텝이 고른 **바로 그 순간**이다. 저장이 끝난 뒤 다시
|
|
24
|
+
재면 답이 state 에 앉는 데 걸린 시간이 섞인다. 말귀가 잰 0.049초가 그런 값이었다.
|
|
25
|
+
- **`shownAt` 은 스텝이 설 때 미리 적어 둔 것** — 답이 놓이는 순간에는 이미 사람이 다 고른
|
|
26
|
+
뒤라 보인 때를 모른다. `쪽\0스텝` 하나당 한 번만 적고 **다시 와도 안 고친다**(다시 듣기
|
|
27
|
+
노력이 반응 시간에 들어가는 쪽이 실제에 가깝다). `0 ~ 지금` 을 다 적는다 — 한 쪽에 스텝이
|
|
28
|
+
여럿 서는 꼴(듣기 → 고르기)에서 앞 스텝의 때가 영영 비지 않게.
|
|
29
|
+
- **이미 들어 있는 때는 안 덮는다.** 스텝이 제 때를 찍어 보냈으면 그쪽이 더 정확하다.
|
|
30
|
+
글자로 온 것은 꼴도 안 고친다(`+09:00` 이 `Z` 로 바뀌면 어느 시계였는지 지워진다).
|
|
31
|
+
- **객체가 아닌 payload 는 그대로 둔다** — 없던 칸을 지어 붙이지 않는다.
|
|
32
|
+
|
|
33
|
+
얹는 자리는 **한 길목**이다(`setScenarioAnswer`) — 네 손잡이(시나리오·아이 × 바뀜·끝남)가
|
|
34
|
+
모두 그리로 지나므로 화면마다 따로 찍을 까닭이 없다.
|
|
35
|
+
|
|
36
|
+
> **셈을 조각 밖으로 뺐다**(`withStepTimes`, 공개). 조각 안에 두면 *"소스에 그 글자가 있나"*
|
|
37
|
+
> 로밖에 못 묻는데 **그런 시험은 셈이 틀려도 초록이다** — 오늘 여러 번 밟은 자리라, 처음에
|
|
38
|
+
> 쓴 소스 검사 시험을 버리고 실제 값으로 재는 쪽으로 다시 썼다.
|
|
39
|
+
>
|
|
40
|
+
> 코어가 **짓는** 때는 `Z` 다. epoch 하나라 지킬 지역 시계가 없다 — 앱이 *글자로* 보낸 때를
|
|
41
|
+
> 안 고치는 것(`utils/trainingItemResults` 의 `때`)과는 다른 자리다.
|
|
42
|
+
|
|
43
|
+
## 0.258.0
|
|
44
|
+
|
|
45
|
+
### 문항마다 **언제 보였고 언제 답했나** — `TrainingItemResult` (말귀 요청 (68))
|
|
46
|
+
|
|
47
|
+
반응 시간을 잴 길이 없었다. 앱은 판이 끝날 때 문항을 한꺼번에 적으므로 행의 `answered_at` 은
|
|
48
|
+
**"적은 때"** 다 — 말귀 실측(19행): 한 판 안 두 문항의 차가 중앙값 **0.049초**, 최대 0.216초.
|
|
49
|
+
**푼 간격이 아니라 줄을 쓴 간격**이다. 정답률이 같아도 빨라지면 듣는 노력이 줄었다는 근거가
|
|
50
|
+
되는데, 그 근거를 만들 수가 없었다.
|
|
51
|
+
|
|
52
|
+
```ts
|
|
53
|
+
shownAt: string | null // 보이거나 들리기 시작한 때(ISO 8601). 소리 문항이면 재생 시작
|
|
54
|
+
answeredAt: string | null // 답을 고른(확정한) 때. 안 골랐으면 null
|
|
55
|
+
```
|
|
56
|
+
|
|
57
|
+
**코어가 할 일은 "버리지 않는 것" 이었다.** 문항 배열은 앱의 `buildResults` 가 짓고
|
|
58
|
+
`TrainingPagePopup` 이 그걸 `toItemResults` 에 넘기는데, **`toItemResults` 는 제가 아는 칸만
|
|
59
|
+
베껴 쓴다.** 그래서 화면이 때를 찍어 넣어도 여기서 **조용히 떨어졌다.** 찍는 것은 화면의
|
|
60
|
+
몫이다 — 한 쪽이 곧 한 문항도 아니라(쪽 하나에 문항이 여럿 설 수 있다) 코어가 대신 못 찍는다.
|
|
61
|
+
|
|
62
|
+
**글자로 온 때는 고쳐 쓰지 않는다.** `new Date(s).toISOString()` 로 다시 쓰면 `+09:00` 이 `Z` 로
|
|
63
|
+
바뀌어 **앱이 가리킨 시계가 무엇이었는지 지워진다.** 이 저장소는 날짜를 KST 하나로 읽기로 해
|
|
64
|
+
두었고(`utils/date.ts` 머리글) 그 판단은 "어느 날인가" 를 지키려는 것이다 — 읽히는지만 보고
|
|
65
|
+
그대로 둔다. `Date`·숫자(epoch)로 오면 그때는 쓸 글자가 없으니 ISO 로 짓는다.
|
|
66
|
+
|
|
67
|
+
칸 이름은 **camelCase 와 snake_case 둘 다** 본다(`shown_at`) — 화면이 서버 꼴을 그대로 들고
|
|
68
|
+
있는 자리가 있다. **이름이 하나라고 믿었다가 조용히 떨어뜨리는 것**이 이 청의 뿌리다.
|
|
69
|
+
|
|
70
|
+
> 못 읽는 값(빈 글자·`어제`·`NaN`·객체)은 `null` 이다 — **없는 때를 지어내지 않는다.**
|
|
71
|
+
> 깨진 때가 섞이면 반응 시간 셈이 통째로 거짓이 된다.
|
|
72
|
+
>
|
|
73
|
+
> **지금 쓰는 화면은 기록이 전과 똑같다** — 안 찍으면 두 칸이 `null` 이고 나머지는 그대로다.
|
|
74
|
+
>
|
|
75
|
+
> 꼴 전체를 빠짐없이 적던 시험(`toEqual`)이 함께 울었다 — 그대로 둔다. 기록은 치료 자료라
|
|
76
|
+
> **무엇이 남는지가 분명해야 하고**, 칸이 조용히 느는 것을 거기서 잡는다.
|
|
77
|
+
|
|
10
78
|
## 0.257.0
|
|
11
79
|
|
|
12
80
|
> **이 판은 그 사이 main 에 쌓인 "미배포" 와 PR #10 도 함께 싣는다** — 아래 ★ 두 꼭지와
|