Skip to content

SDD-038 · Mục tiêu và Learner Profile ​

Một phần của SDD-038 Cổng IELTS. Phần đầu là đặc tả đang áp dụng, mỗi mục giữ số § cũ; diễn biến và lý do các vòng quyết định nằm ở mục Lịch sử quyết định cuối trang.

37. Hồ sơ riêng của IELTS Learner, và hai chỗ gập lại (SRC-910, 2026-09-20) ​

37a. /ielts/profile — hồ sơ của người luyện IELTS, không phải hồ sơ học sinh ​

Menu tài khoản ở cả hai mạch IELTS đang trỏ sang /profile của learn. Trang ấy phục vụ một learner phổ thông: trường, lớp, tỉnh thành, ba nguyện vọng trường chuyên. Không dòng nào trong đó trả lời câu hỏi mà một người đang luyện IELTS đặt ra về chính mình, và learner phải lướt qua cả ba cụm để tìm ra rằng ở đây không có band mục tiêu của họ.

Trang mới trả lời đúng ba câu, theo thứ tự learner hỏi:

ThẻTrả lờiNguồn
Aiảnh, tên, email, ngày sinh, trườngme + GET /profile
Đứng đâuOverall hiện tại kèm nguồn, Overall mục tiêu, ngày thi, khoảng cách, kỹ năng đang nângielts-setup + ielts-goal
Đã khai gìtám dòng lời khai, gập, đóng sẵnielts-profile

Trang chỉ đọc. Điểm hiện tại và band mục tiêu sửa ở /ielts/settings, lời khai sửa ở /ielts/setup, và mỗi thẻ mang một đường dẫn sang đúng chỗ ấy. Dựng bộ form thứ hai cho cùng mấy giá trị là tạo hai chỗ ghi một thứ, và ngày chúng lệch thì không có cách nào biết bên nào đúng.

Overall mục tiêu đọc từ ielts-goal chứ không tự trung bình bốn band trong ielts-profile.target: luật làm tròn về 0,5 nằm ở server, và một bản sao ở client sẽ lệch khỏi đúng con số learner vừa nhìn thấy ở Settings.

Địa chỉ /ielts/profile đứng trước nhánh legacy /ielts/<task> trong pathToRoute. Nhánh ấy nhận mọi khoá lạ dưới /ielts/ rồi rơi về mạch luyện, nên một địa chỉ mới đặt sau nó sẽ mở ra một trang khác mà không báo lỗi gì. Test ieltsRoutes.test.ts ghim cả hai chiều.

37b. Hộp thoại tài khoản bị cắt mất nửa trên ​

Nguyên nhân không nằm ở thẻ mà ở tổ tiên của nó: position: fixed bám vào khung chứa gần nhất có filter hoặc backdrop-filter, không phải khung nhìn. Thanh trên của mọi cổng mang .n12-nav-deep, tức là có backdrop-filter: blur(10px), và hộp thoại của AvatarMenu nằm bên trong thanh ấy. inset-0 của nó vì thế là chiều cao THANH.

Sửa bằng createPortal ra thẳng document.body: ngoài đó không có tổ tiên nào lọc nền, nên fixed lại đúng nghĩa. Đây là luật chung cho mọi lớp phủ trong dự án, không riêng menu này.

37c. Learning Setup gập lại ​

Hai chỗ gập, và cả hai đều gập thứ để ĐỌC chứ không gập thứ để LÀM:

  • Năm chặng: chỉ chặng current (server chỉ ra) mở sẵn; các chặng khác thu về một dòng đầu chặng kèm con số 2/3 thay cho cả danh sách bên trong. Learner vẫn biết chặng nào còn dở mà không phải mở ra đếm, và một cú bấm là mở lại — gập không phải là giấu.
  • Ghi chú của Nemo (reveal): đoạn văn dài, nay chỉ hiện dòng đầu làm mồi.

Chặng dùng useState chứ không dùng <details> như khối ghi chú: Starting Point chứa form có EditGate, và một <details> đóng lại sẽ ẩn cả cây con — một cú bấm nhầm vào đầu chặng là mất trạng thái đang sửa dở, đúng cái hỏng mà SRC-861 vừa gỡ.

62. Trang Goal và đầu trang Learning Setup, dọn lần nữa (SRC-954, 22.09.2026) ​

62a. Ở chế độ đọc thì nút cộng trừ BIẾN MẤT, không phải mờ đi ​

EditGate vốn đã khoá chúng bằng <fieldset disabled>, nhưng khoá không đủ. Tám cái nút tròn nằm quanh bốn con số vẫn đọc ra như một lời mời bấm, learner bấm thì không có gì xảy ra, và một màn hình im lặng không phản hồi là cách chắc nhất để người ta nghĩ nó hỏng.

Phân biệt với luật cũ ở §BandStepper: nút TẮT vì chạm trần 4.0/9.0 thì vẫn hiện (giữ hàng nút khỏi nhảy chỗ). Nút ở chế độ đọc thì ẩn hẳn — ở đó cả thao tác ấy không tồn tại.

62b. Save và Cancel đứng đúng chỗ nút Edit ​

Trước: bấm Edit ở góc trên, rồi phải cuộn xuống dưới một lưới bốn ô để tìm nút Save. Nay EditGate nhận nút Save từ form con qua useRegisterSave và vẽ nó cùng Cancel ngay chỗ Edit vừa đứng.

Vì sao là đăng ký chứ không phải EditGate tự vẽ một nút Save: lưu là việc của FORM (mỗi form một API, một điều kiện hợp lệ, một trạng thái "đang lưu"). Đổi chỗ một cái nút thì rẻ; chuyển luồng lưu vào component bọc ngoài thì đắt và sẽ hỏng đúng ở chỗ form nào cũng khác nhau một tí. Form nào KHÔNG đăng ký thì header chỉ có Cancel và nút Lưu của nó vẫn nằm dưới như cũ — đường lùi có chủ ý cho CurrentScore và DeclarationBlock, vốn chưa đổi.

62c. Ngày thi lên đầu, có nhãn; thẻ còn 40% chiều ngang ​

Ngày thi đóng khung mọi con số bên dưới: cùng mục tiêu 8.5, thi sau ba tháng và thi sau hai năm là hai kế hoạch không giống nhau ở chỗ nào cả. Trước đó nó nằm cuối thẻ như một chi tiết phụ, và là một chuỗi 17/12/2027 trần không có nhãn — learner phải đoán đó là ngày thi, ngày đặt mục tiêu hay ngày sửa gần nhất.

Thẻ hẹp lại còn sm:w-2/5: kéo hết một màn desktop thì giữa nhãn LISTENING và con số 8.5 là một khoảng trống dài nửa gang tay. Dưới 640px vẫn full, vì 40% của một màn hẹp là một cột chữ vỡ.

62d. Đầu trang Learning Setup bỏ hai khối, và đổi dòng đếm bước ​

  • Dòng đếm bước thành "Tell Nemo about you. The more it knows, the better it can help." Một con số đếm việc trả lời "còn mấy việc nữa" nhưng không trả lời câu learner hỏi trước đó: khai mấy thứ này để làm gì. Và khi xong hết thì 5 of 5 steps done không còn nói gì cả. Số việc còn lại vẫn đọc được ở chính từng chặng, nơi learner sắp bấm vào.
  • Bỏ thẻ "How well does Nemo know your level?": nó nói về chất lượng dữ liệu của Nemo, không nói learner phải làm gì; với người mới, dòng đầu tiên họ đọc là lời thú nhận rằng hệ chưa biết gì về họ. Mức bằng chứng vẫn được server tính và vẫn quyết định ai phải đo lại.
  • Bỏ khối ghi chú của Nemo (reveal): nó trả lời một câu learner chưa hỏi, ngay trên đường tới việc họ vào đây để làm. Chỗ của nhận định là trang Hồ sơ và buổi gặp với thầy cô.

Cả evidence lẫn reveal VẪN nằm trong payload /ielts-setup — CurrentScore còn đọc evidence, và gỡ chúng khỏi API là một việc khác, có giá khác.

63. Hai cột, dấu tròn đặc, và Study context về đúng chặng (SRC-955, 22.09.2026) ​

63a. Study context thuộc về Starting Point ​

Nó luôn là câu trả lời cho "con đang ở đâu" — mỗi tuần học mấy giờ, kỹ năng nào thấy khó nhất — chứ không phải cho "con muốn tới đâu". Đứng ở Goal, nó làm chặng ấy hỏi hai câu khác nhau trong khi chặng bên cạnh chỉ hỏi đúng câu nó thuộc về.

Khoá declarations giữ nguyên, chỉ đổi chặng chứa nó: khoá ấy còn là part của bước "goal" ở pathway.ts và là đích của một IeltsTaskKey. Đổi khoá thì phải đổi cả hai chỗ đó cộng mọi link đã gửi đi, để đổi đúng một chỗ đứng trên màn hình.

Chỗ suýt hỏng, và e2e bắt được: nhánh starting_point trong PhaseCard vốn thay TOÀN BỘ danh sách parts bằng form chọn lối vào. Chuyển Study context sang chặng ấy mà không sửa nhánh này thì dòng ấy biến mất khỏi màn hình — learner không còn đường nào tới trang khai. Nay nhánh ấy vẽ form rồi vẽ tiếp những part có trang riêng, qua PartRow dùng chung cho cả hai chỗ.

63b. Hai cột chia theo nghĩa, không theo số ​

Cột trái là hai chặng learner tự khai (đích và chỗ đứng); cột phải là ba chặng có việc phải làm (đo, gặp thầy cô, kế hoạch). Đó cũng là thứ tự thời gian, đọc từ trái sang phải. Mỗi thẻ vì thế còn khoảng nửa chiều ngang, đúng khoảng 45-50% chỉ đạo nói tới, và cả năm chặng vào vừa một màn.

Dưới 1024px về một cột theo đúng thứ tự 1-2-3-4-5: hai cột trên màn hẹp thì dòng tóm tắt "Band 8.5 · 17.12.2027" vỡ làm ba dòng.

63c. Dấu tròn đặc — đảo lại SRC-909, có chủ ý ​

SRC-909 (20.09.2026) đổi dấu xong từ đĩa đặc sang nét check mảnh, vì "các chấm màu da cam hơi quá to, và quá nhiều". Nay chỉ đạo đảo lại, và đây không phải một lần quên luật cũ — đừng "sửa lại cho đúng" bằng cách trả về nét check.

Thứ đã đổi giữa hai lần chỉ đạo: hồi ấy năm chặng nằm trong một cột dài với mọi phần con mở sẵn, nên hơn chục chấm đặc cùng hét lên một lúc. Nay các chặng gập lại và xếp hai cột, số dấu trên màn ít hẳn, và một vòng tròn đặc đọc được từ xa hơn mọi nét mảnh.

Dòng chưa xong là vòng tròn RỖNG cùng đường kính, nên hàng chữ thẳng cột dù dòng nào xong trước.

64. Trang Goal thành hai thẻ, và ba lối vào cho "lần thi gần nhất" (SRC-956, 22.09.2026) ​

64a. Ba lối vào, và vì sao lối thứ ba tồn tại ​

Hỏi gìNguồn lưu
takenBốn band, nguồn (thi thật / thi thử), ngày thiofficial hoặc mock_test
guessBốn band, không hỏi ngàyself_estimate
no_guessKhông hỏi gì; bốn ô BIẾN MẤTxoá dòng self_estimate nếu có

Lối thứ ba không phải để cho đủ bộ. Thiếu nó, learner chưa thi chỉ còn một đường: gõ đại bốn con số. Bốn con số ấy đi thẳng vào Learner Model và vào kế hoạch học, và một phỏng đoán bịa ra còn tệ hơn không có gì — Nemo sẽ tự tin về một chỗ đứng không có thật. Thà để trống rồi đo.

guess không hỏi ngày vì một phỏng đoán không có ngày thi; bắt điền là bắt bịa ra một sự kiện chưa xảy ra.

64b. "Không đoán" xoá điểm tự đoán cũ, và CHỈ điểm tự đoán ​

Learner đã đoán 6.5 rồi đổi ý thì con số ấy phải biến mất thật, nếu không màn hình nói một đằng còn Learner Model dùng một nẻo. Nhưng chỉ xoá dòng self_estimate: điểm thi THẬT là một sự kiện đã xảy ra, không phải một phỏng đoán, và không ai được xoá nó bằng một cú bấm ở màn này. Màn hình nói trước khi lưu rằng nó sắp xoá.

64c. Mỗi thẻ một EditGate, không phải một cổng chung ​

Hai thẻ lưu vào hai API khác nhau, và useRegisterSave (§62b) chỉ giữ được MỘT nút Save cho mỗi cổng — gộp lại thì thẻ đăng ký sau ghi đè nút của thẻ trước, và một trong hai thẻ mất đường lưu mà không có lỗi nào hiện ra. Cái giá là hai nút Edit trên một màn; đổi lại, sửa mục tiêu không kéo theo mở khoá cả điểm thi, và bấm Cancel ở thẻ này không vứt thứ đang gõ dở ở thẻ kia.

Mỗi thẻ mang aria-label riêng (Latest test, Target): hai thẻ bày cùng một thứ — một Overall, bốn ô band, một nút Edit — nên không có cách nào chỉ đúng một thẻ nếu chúng không tự xưng tên. Trình đọc màn hình cần đúng điều đó, và e2e gác theo cùng cái tên ấy.

70. Learner Profile thay hẳn Study context (SRC-963, 22.09.2026) ​

70a. Hai trang trả lời hai câu khác nhau ​

Câu hỏi
Study context (đã bỏ)"con học IELTS trong hoàn cảnh nào"
Learner Profile"con là người học như thế nào, và Nemo cần biết gì để giúp cho trúng"

Sáu thẻ: động lực · cách học · hoàn cảnh học · tự tin và lo lắng · lịch sử ôn thi · cản trở và hỗ trợ. Mười chín câu, /ielts/learner-profile.

Cố ý KHÔNG có ở đây: điểm hiện tại, điểm mục tiêu, ngày thi, số giờ mỗi tháng, tiến độ từng kỹ năng. Chúng thuộc /ielts/settings và Learning Plan; hỏi lại ở đây là hai chỗ cùng giữ một sự thật, và hai chỗ ấy sẽ lệch nhau ngay lần đầu learner sửa một bên.

70b. Ba tầng, và tầng 3 được đối xử khác ​

identity (hiếm khi đổi) · context (vài tháng một lần) · state (theo tuần). Nhãn tầng hiện ngay trên thẻ, vì nó nói cho learner biết vì sao Nemo hỏi lại thẻ này mà không hỏi thẻ kia.

Tầng state không nên để learner vào sửa tay thường xuyên: tự tin là thứ họ đã trả lời bằng chính hành vi, và một ô bắt họ tự chấm điểm mình mỗi tuần sẽ bị bỏ trống sau lần thứ hai. Vòng này vẫn cho khai; đường đi đúng về sau là Nemo suy ra rồi hỏi lại — cột source trong migration 0271 để sẵn cho đúng việc ấy (learner và nemo).

70c. Một bảng khoá-giá trị, không phải ba chục cột ​

learner_ielts_profile_facts(learner_id, key, value, source, updated_at). Câu chọn nhiều thì nhiều dòng cùng key. Thêm một câu hỏi mới không cần migration.

Cái giá, nói ra để sau không ai ngạc nhiên: CSDL không ràng buộc key phải là câu có thật. Luật ấy nằm ở learnerProfile.ts, và đó là chỗ DUY NHẤT được quyết câu nào tồn tại — server đọc nó để lọc đầu vào, màn hình đọc nó (qua API) để vẽ. Màn hình chỉ giữ phần CHỮ tiếng Việt.

70d. Lưu theo TỪNG THẺ ​

Sáu thẻ, sáu EditGate, sáu nút Save. Một nút cho cả trang thì learner phải cuộn qua mười chín câu mới tới nó, và bấm Cancel ở cuối trang sẽ vứt luôn thẻ đầu tiên họ vừa điền. PUT vì thế chỉ thay trọn những CÂU được gửi lên, không đụng câu nào khác — có ca gác riêng, vì một lượt ghi xoá nhầm năm thẻ kia vẫn trả 200.

70e. Hai lỗi thật tìm ra khi dựng trang này ​

  1. useRegisterSave tạo vòng vẽ vô tận. Form con viết run: () => {...}, tức một hàm mới ở mỗi lượt vẽ; để nó trong danh sách phụ thuộc thì effect chạy lại → setSave ở EditGate → vẽ lại → hàm mới → lặp. Nó không làm màn hình đứng, chỉ làm giao diện chập chờn. Nay run đi qua một ref.
  2. Bấm Save xong vẫn ở chế độ sửa. Learner nhìn một màn hình không đổi gì và tự hỏi mình đã lưu chưa. Nay EditGate chờ Promise của run rồi đóng; lưu hỏng thì GIỮ chế độ sửa, để thứ vừa gõ còn nguyên mà thử lại.

70f. Năm ca e2e bị xoá nhầm, đã khôi phục ​

Script dọn ca của tôi ở SRC-957 và SRC-960 lùi quá xa khi tìm đầu một test(, nên nó nuốt luôn ca đứng trước ca cần xoá. Mất năm ca: ba ca /ielts/settings, một ca Learning Setup, một ca Learning plan — trang của chúng vẫn đang chạy. Đã khôi phục từ lịch sử git và chỉnh cho khớp hành vi hôm nay.

79. Chưa đo điểm thì bắt đầu từ 5.0 (SRC-977, 22.09.2026) ​

Chỉ đạo chủ dự án: "nếu điểm Current không có, thì hệ thống mặc định cả 4 skills đều ở mức 5.0".

Mặc định này KHÔNG được im lặng, vì một con số bịa trông y hệt một con số đo được: thẻ Current ghi thẳng "not measured yet, starting at 5.0", và learner sửa ngay tại chỗ bằng nút Edit của chính thẻ ấy. Nó cũng không ghi xuống ielts-baseline - chỉ là điểm khởi đầu để vẽ bảng, không phải một lời khai thay learner. Target thì vẫn bắt buộc: đích đến là thứ duy nhất hệ thống không đoán hộ được.

86. Ngày sinh, trường, lớp: khai ở đầu Learner Profile (SRC-983, 22.09.2026) ​

Chủ dự án hỏi ba thông tin này nên khai ở đâu. Câu trả lời bắt đầu bằng một điều đã có sẵn: chúng không phải dữ liệu mới. Bảng learners đã có birth_date, grade, current_school, province từ SRC-518; trang Hồ sơ của learn (/profile) đã khai đủ; và chúng còn là điều kiện profile_complete của onboarding. Vấn đề thật là learner vào thẳng sân IELTS thì không bao giờ đi qua trang ấy: menu tài khoản trong /ielts/** trỏ sang /ielts/profile, một trang nói về IELTS chứ không về danh tính. Ba ô kia vô hình, nên với learner chúng cũng như không tồn tại.

Chỗ khai: một thẻ "Con là ai" đứng đầu /ielts/learner-profile. Đó là trang vừa dựng ở SRC-963 làm chỗ learner tự mô tả mình, và mô hình của nó đã có sẵn tầng identity. Thẻ ghi thẳng vào learners qua PATCH /profile.

KHÔNG chép sang learner_ielts_profile_facts. Một bản sao nghĩa là một đứa trẻ có hai ngày sinh, và không lỗi nào nổ ra cho tới ngày hai bản ấy lệch. Đây cũng là lý do thẻ không có ô sửa tên hiển thị: đổi tên là việc của trang Hồ sơ.

Không chặn, chỉ nhắc (chỉ đạo cùng lúc). Thiếu thì thẻ đeo một nhãn "còn thiếu N mục" và ô trống ghi "chưa điền"; learner vẫn luyện bài được ngay. Chặn một đứa trẻ ở cửa bằng một biểu mẫu hành chính là cách nhanh nhất để nó không quay lại.

Phép kiểm dùng lại validateProfile (SRC-327), gồm cả luật tuổi phải khớp lớp: hồ sơ rác không chỉ xấu, nó là đầu vào của bộ chọn bài. Ngày cho người đọc vẫn DD.MM.YYYY, ô nhập vẫn type=date.

102. Learner Profile tối giản, tám câu, có ảnh thật (SRC-1016, 23.09.2026) ​

  • 19 câu, sáu thẻ → 8 câu, bốn thẻ. Giữ câu đổi được việc Nemo làm ngày mai: mục đích + câu tự viết, cách học + khi bí, giờ học + độ dài buổi, cản trở + kiểu giúp. Bỏ thẻ Confidence và Experience cùng các câu phụ của Environment/Motivation. Câu trả lời cũ không bị xoá (writeProfileFacts chỉ thay khoá được gửi), nhưng server không nhận khoá đã bỏ nữa.
  • Tối giản: bỏ đoạn giới thiệu, ghi chú dưới tên thẻ, nhãn "ít khi đổi"; bộ đếm còn 0/8 câu.
  • Ảnh thật đứng trong thẻ "Con là ai", bấm vào ô tròn để chọn, không cần Edit/Save. Dùng lại /v1/learners/{id}/photo (SRC-739): chỉ người nhà và thầy cô xem được.
  • Nén dưới 200 KB trên máy (apps/learn/src/compressImage.ts): canvas, JPEG, hạ chất lượng trước rồi mới thu nhỏ, cạnh dài tối đa 800 px. Nén nằm trong selfProfile.uploadPhoto nên mọi chỗ tải ảnh đều qua. Server hạ trần từ 5 MB xuống 200 KB để client cũ không lách được.

104. Learner Profile nói tiếng Anh đơn giản (SRC-1019, 24.09.2026) ​

Chủ dự án: "Chuyển toàn bộ sang tiếng Anh, nhưng kiểu tiếng Anh đơn giản, mà 10 tuổi vẫn hiểu được." Đây là ngoại lệ có chủ ý với SRC-953 (chữ hướng dẫn trong sân luyện nói tiếng Việt), chỉ cho /ielts/learner-profile. Luật viết: câu ngắn, từ thông dụng, không thành ngữ, không danh từ trừu tượng (thẻ "Why IELTS?", "How you like to learn", "When you study", "What stops you"). Lỗi kiểm hợp lệ và lỗi ảnh từ các module dùng chung (vốn tiếng Việt) được thay bằng câu tiếng Anh ngay tại trang, không sửa module gốc vì trang Hồ sơ và onboarding vẫn nói tiếng Việt.

Lịch sử quyết định ​

Từ mục 37. Hồ sơ riêng của IELTS Learner, và hai chỗ gập lại (SRC-910, 2026-09-20) ​

Vòng feedback chiều 2026-09-20, ba việc từ hai ảnh chụp màn hình.

Chỉ đạo: "Có link tới trang Profile, nhưng đó là trang Profile chung, có quá nhiều thông tin. Tôi cần một trang profile khác, tương tự như trang Profile chung hiện nay, nhưng URL nằm trong khu vực ielts, và nó là Profile cho IELTS Learners."

Chỉ đạo: "Sign-out thì nhìn bị lỗi." Ảnh chụp cho thấy thẻ "Account" treo lơ lửng dưới thanh trên, mất nửa trên, nền mờ chỉ phủ một dải.

Chỉ đạo: "Trang này cần collapse nhiều chỗ lại, cho gọn gàng. Giảm 50% elements trên trang (lúc hiển thị ban đầu)."

Từ mục 62. Trang Goal và đầu trang Learning Setup, dọn lần nữa (SRC-954, 22.09.2026) ​

Hai chỉ đạo chủ dự án 22.09.2026, kèm ảnh chụp /ielts/setup/goal và /ielts/setup.

"Khi mới vào trang này, thì cần không hiển thị mấy dấu cộng hay trừ. (…) lúc đó learner mới đổi được ngày và lúc đó các icon cộng và trừ mới hiển thị và hoạt động được."

"Đổi label này '5 of 5 steps done' thành từ tiếng Anh siêu đơn giản cho học sinh 10 tuổi cũng hiểu, đại ý là 'chỗ này giúp NEMO hiểu bạn (…) để hỗ trợ bạn được sát hơn'. Bỏ hết các labels và cụm này đi (…)"

Từ mục 63. Hai cột, dấu tròn đặc, và Study context về đúng chặng (SRC-955, 22.09.2026) ​

"Các icon ở đầu các dòng, cần là dạng icon tròn. Completed thì là hình tròn đặc màu da cam. Cho nhỏ chiều ngang của các card lại để chỉ còn 45% tới 50% so với chiều ngang hiện nay. Cột trái hiển thị cụm 1 và 2. Còn cột phải hiển thị cụm 3, 4, 5. Chuyển cụm nhỏ 'Study Context' vào trong cụm 2 'Starting Point'."

Từ mục 64. Trang Goal thành hai thẻ, và ba lối vào cho "lần thi gần nhất" (SRC-956, 22.09.2026) ​

"Bên trái là 'lần thi gần nhất', bên phải là card 'điểm mục tiêu'. Trong card 'lần thi gần nhất', learner có thể chọn ngay từ đầu là tôi chưa thi IELTS bao giờ, và đây là điểm dự đoán của tôi (khi đó hệ thống sẽ hiển thị 4 skills để đoán), hoặc 'tôi không dự đoán' và khi đó hệ thống sẽ không hiển thị 4 điểm skills để đoán nữa. Những cái này hiển thị sau khi bấm nút Edit. Còn mặc định khi mới vào thì màn hình là Read-Only hết."

Từ mục 70. Learner Profile thay hẳn Study context (SRC-963, 22.09.2026) ​

Chỉ đạo: "Bỏ luôn trang Study Context hiện tại. Tạo trang Learner Profile mới tinh để thay thế." Bản mô tả đi kèm (sáu thẻ, ba tầng thông tin) là của chính chủ dự án; phần dưới ghi những chỗ bản dựng khác bản mô tả, và vì sao.

Từ mục 79. Chưa đo điểm thì bắt đầu từ 5.0 (SRC-977, 22.09.2026) ​

Trước đây thiếu điểm hiện tại là cả trang Learning Plan không dựng bảng, và learner mới - đúng những người cần một kế hoạch nhất - gặp một màn trống bảo họ đi đo điểm trước. 5.0 là mức khởi đầu thông thường của learner Việt Nam vào ôn IELTS.

Từ mục 102. Learner Profile tối giản, tám câu, có ảnh thật (SRC-1016, 23.09.2026) ​

Chủ dự án: "Cần chỉnh màn hình này để minimal. Giảm 50% lượng thông tin cần lấy. Cần cho phép learners upload ảnh thật lên. Trước khi lưu trên server, thì ảnh cần được nén để không lớn quá 200KB."