SDD-038 · Learning Setup: trở lại hub và còn hai chặng
Một phần của SDD-038 Cổng IELTS, phần tiếp của Learning Setup. Phần đầu là đặc tả đang áp dụng, mỗi mục giữ số § cũ; diễn biến và lý do nằm ở mục Lịch sử quyết định cuối trang.
57. Learning Setup trở lại hub, trong ba ngày đầu (SRC-945, 2026-09-21)
57a. Đây không phải đảo lại SRC-860
SRC-860 đẩy Learning Setup lên menu avatar, và lý do ấy vẫn đúng: với learner đã thiết lập xong, nó thuộc về tài khoản chứ không thuộc về màn luyện. Nhưng nó chỉ đúng SAU ba ngày đầu. Người vừa vào chưa biết avatar có menu, chưa có lý do bấm vào đó, và thứ duy nhất họ cần làm lúc ấy - nói cho Nemo biết mình đang ở đâu - lại nằm sau đúng cái cửa họ không mở.
Khối ở hub (SetupProgressCard, apps/learn/src/IeltsPathway.tsx) hiện khi learner còn trong ba ngày đầu hoặc khi thiết lập còn dở, và biến mất hẳn khi hết cả hai - không thu nhỏ, không để lại một dòng "Setup ✓". Một khối dẫn đường ngày nào cũng thấy thì nó không còn dẫn đường, nó chỉ là một hàng rào đứng giữa learner và bốn kỹ năng.
Vế "còn dở" đi kèm vế "ba ngày" vì một mình cái mốc thời gian sẽ gạt đúng người cần nó nhất: ai mở Nemo lần đầu vào ngày thứ tư thì ngày đầu tiên của HỌ đã nằm ngoài cửa sổ ấy.
Khối đứng trên dashboard: ba ngày đầu thì dashboard còn rỗng gần hết (không chuỗi ngày, không vốn từ, không tỉ lệ đúng), nên đặt nó bên dưới ba thẻ trống là bắt người mới cuộn qua đúng những con số nói rằng họ chưa làm gì.
57b. "Làm dở" là một trạng thái, và nó được tính ở SERVER
SetupPhase nay mang thêm status: "done" | "in_progress" | "not_started" | "locked" (workers/api/src/modules/ielts/setup.ts). Ba cờ done/locked/optional đã có đủ dữ kiện, nhưng "làm dở" không nằm trong cờ nào - nó là "chưa xong mà đã có phần con xong rồi", và mỗi màn hình tự bắc cầu ấy là mỗi màn hình có một định nghĩa "làm dở" riêng.
Hai luật đáng nhớ:
lockedđứng trước cả ba mức kia. Một chặng chưa tới lượt mà gọi là "not started" là trách learner về một việc họ chưa được phép làm.- "Đã đụng vào" đếm trên MỌI phần con, không riêng phần bắt buộc. Learner
has_scorelàm xong Writing Sample trong khi chỉ Speaking là bắt buộc vẫn đang làm dở chặng ấy; bảo họ "chưa bắt đầu" là xoá đi một việc họ vừa làm thật.
Bốn nhãn dùng chung một bảng (SETUP_STATUS) cho cả khối ở hub lẫn trang /ielts/setup, nên hai màn không thể gọi cùng một trạng thái bằng hai chữ khác nhau. Bốn hình thức khác nhau HẲN chứ không phải bốn sắc độ của một màu - cùng luật với §52c.
57c. Cửa sổ ba ngày đo ở server, không đo bằng đồng hồ máy learner
SetupState.days_since_start đếm số ngày TRỌN từ learners.created_at; null khi không đọc được, và khi ấy màn hình rơi về luật "còn dở thì còn bày". Client tự đếm được nếu được trao ngày bắt đầu, nhưng khi ấy nó đếm bằng đồng hồ của máy learner - một máy lệch giờ là một learner nhìn thấy (hoặc mất) đúng cái khối mà chỉ đạo này sinh ra để bày.
Mốc là learners.created_at chứ không phải ngày mở Learning Setup lần đầu: bảng learner_ielts_setup chỉ có dòng SAU khi learner đã khai một thứ gì đó, nên đo từ đó là đo từ một mốc chỉ tồn tại với người đã bắt đầu làm - đúng những người ít cần khối dẫn đường này nhất.
Kiểm: setup.test.ts (trạng thái bốn mức, phép đếm ngày trọn, mốc hỏng, mốc ở tương lai) và setupRoutes.test.ts (route có thật sự nối learners.created_at vào buildSetup) - sợi dây ấy đứt thì mọi test khác vẫn xanh và days_since_start chỉ lặng lẽ là null.
57d. Gập được, và nhớ (vòng 2, 21.09.2026)
Cụp lại thì còn đúng một dòng, và dòng ấy vẫn mang con số n of m done - gập không phải là giấu, cùng luật với các chặng ở /ielts/setup (§57a của SRC-860 vòng gập 20.09.2026).
Lựa chọn nhớ lại qua localStorage, khoá theo learner (nemo12.ielts.setupCard.<learnerId>): một nút cụp mà mở trang sau lại bung ra thì nó không giải quyết được gì, và cái hỏng ấy không lộ ra trong một lượt xem bằng mắt - nên nó có ca e2e riêng. Đọc và ghi đều bọc try/catch: cửa sổ ẩn danh và máy chặn site data ném ngay ở lượt đọc, và một khối dẫn đường không đáng làm trắng trang chủ.
57e. Thẻ bốn kỹ năng rộng nửa trang (vòng 3, 21.09.2026)
Bốn dòng ấy mỗi dòng chỉ có một con số, một icon và một chữ. Kéo hết chiều ngang màn hình thì giữa chữ và mũi tên là một khoảng trống dài bằng cả màn, và mắt phải đi hết quãng ấy mới tới được chỗ bấm - đúng thứ luật tối giản SRC-048 gọi là chữ loãng ra trong một khung quá rộng.
sm:w-1/2 chứ không w-1/2: dưới 640px thì một nửa của một màn hẹp là một cột chữ vỡ. Căn trái chứ không căn giữa, để thẻ thẳng mép với Live class ngay trên nó và với khối Learning Setup.
65. Bỏ hẳn ba chặng Starting Point · Diagnosis · Calibration (SRC-957, 22.09.2026)
65a. Learning Setup còn hai chặng
Goal (target band + test date + study context) và Learning Plan (các mốc). Không chặng nào bị khoá nữa: mắt xích duy nhất còn lại là Starting Point chờ Goal, và chặng ấy đã bỏ. Khoá Learning Plan theo Goal thì sai chiều — learner xem bản kế hoạch để CHỌN đích.
Study context quay lại chặng Goal. Ở §63 nó vừa chuyển sang Starting Point vì nó trả lời "con đang ở đâu"; lý do ấy vẫn đúng, nhưng chặng ấy không còn, và một câu trả lời không có chỗ đứng thì learner mất luôn đường khai nó.
65b. Tám trang con đi theo
quiz · skills · assessment · reading · listening · writing · speaking · booking. Địa chỉ của chúng không còn nhận ở pathToRoute, nên link cũ đổ về Learning Setup thay vì thành trang trắng. IeltsSkillsCheck.tsx (dựng ở SRC-950 cùng ngày) đã xoá; WritingBlock và SpeakingBlock cũng vậy.
65c. Những gì KHÔNG bị xoá, và vì sao
| Còn nguyên | Lý do |
|---|---|
Bảng assessment_sessions, ielts_diagnostic_items, ielts_productions, slot_bookings | Xoá dữ liệu không hoàn tác được, và chủ dự án không yêu cầu điều đó |
Các endpoint ielts-diagnostic, ielts-exam-quiz, ielts-productions, slots | Trang Hồ sơ IELTS và Learner Model còn đọc bằng chứng từ đây |
readDiagnosticStrands, evidenceBySkill | Bằng chứng theo kỹ năng vẫn nuôi Learner Model |
focus_skills, sổ ba lần thi | Sống ở /ielts/settings và ở thẻ "Latest test" trang Goal |
Nói thẳng hệ quả: không còn đường nào trên giao diện dẫn tới bài đo hay tới đặt lịch gặp thầy cô. Learner không làm được hai việc ấy nữa. Đó là điều chủ dự án chọn sau khi được hỏi rõ, không phải một mất mát lọt qua.
65d. Hai chỗ suýt gãy theo
/ielts/settingsẩn mất sổ điểm. Nó bày sổ chỉ khistart_mode === "has_score", mà lối vào ấy khai ở chặng Starting Point. Bỏ chặng mà giữ điều kiện thì sổ điểm biến mất với TẤT CẢ mọi người. Nay sổ hiện cho mọi learner; ai chưa có điểm thì thấy một sổ rỗng, đúng như nó là.- Danh sách loại trừ trong
pathToRoute. Nó dài ra ở SRC-950 và SRC-952 để các khoá việc không nuốt mất địa chỉ mạch luyện. Nay chỉ còn ba khoá việc, không khoá nào trùng, nên danh sách ấy biến mất cùng tám trang con.
69. Bỏ trang Goal, và Learning Setup còn hai đường dẫn (SRC-961, SRC-962, 22.09.2026)
/ielts/setup/goalđã bỏ. Mục tiêu, ngày thi và điểm hiện tại vẫn khai được ở/ielts/settings, nơi chúng đứng cạnh sổ ba lần thi thay vì đứng một mình trong một trang chỉ có chúng.- Chặng 1 đổi tên thành Learner Profile (khoá
goalgiữ nguyên — nó là khoá của một bước ởpathway.ts, không phải một cái nhãn). "Goal" đứng trên một dòng nói về cách learner học là một cái tên nói sai nội dung của chính nó. - Learning Setup bỏ hẳn cấu trúc chặng: gập ra gập vào, dấu xong, danh sách phần con. Cấu trúc ấy sinh ra khi trang có năm chặng và hơn chục việc; nay còn hai, và một cái khung năm-chặng bọc quanh hai dòng chỉ là khung.
- Trang Learning Plan đổi địa chỉ:
/ielts/plan-board→/ielts/learning-plan. Địa chỉ cũ vẫn NHẬN VÀO nhưng không còn được sinh ra — một trang có hai địa chỉ là số liệu về nó bị chẻ đôi. IeltsLatestTest.tsx(ba lối vào "đã thi / tự đoán / không đoán") ở lại nhưng hiện không có màn nào dẫn tới. Ghi rõ trong đầu file: nếu chủ dự án chốt bỏ, xoá cả file, đừng để nó nằm lại thêm một vòng.
Lịch sử quyết định
Từ mục 57. Learning Setup trở lại hub, trong ba ngày đầu (SRC-945, 2026-09-21)
Chỉ đạo chủ dự án 21.09.2026: "Trong 3 ngày đầu tiên sử dụng hệ thống NEMO IELTS, thì learner cần nhìn thấy mảng Learning Setup. Learner cần biết với mỗi phần nhỏ trong Learning Setup, thì phần nào xong rồi, phần nào làm dở, phần nào chưa xong."
Chỉ đạo vòng hai cùng ngày: "Learner có thể collapse cái Learning Setup card lại." Khối đứng trên cả bốn kỹ năng, nên với learner đang trong ba ngày đầu mà hôm nay chỉ muốn vào luyện, nó là một màn chữ phải cuộn qua mỗi lần mở trang.
Chỉ đạo: "Cho cái card ở dưới cùng màn hình (chứa link tới 4 skills), chiều ngang ngắn lại 50% so với hiện nay."
Từ mục 65. Bỏ hẳn ba chặng Starting Point · Diagnosis · Calibration (SRC-957, 22.09.2026)
Chỉ đạo chủ dự án 22.09.2026: "Bỏ cụm 2, 3, 4 vì chúng không cần thiết nữa." Hỏi lại phạm vi và chủ dự án chốt: bỏ hẳn cả tính năng, không phải chỉ giấu khỏi màn hình.
Từ mục 69. Bỏ trang Goal, và Learning Setup còn hai đường dẫn (SRC-961, SRC-962, 22.09.2026)
"Cần bỏ trang này (GOAL), và bỏ link tới 'target band and test date'.""Màn hình này sẽ chỉ còn 2 links thôi, click là vào thẳng trang đó luôn, đó là: Learning Plan và Learner Profile. Với trang Learning Plan, hãy chỉnh URL."