Skip to content

WF-19 — Hai cửa vào: luồng bố mẹ và luồng con ​

Mở rộng WF-02 và WF-03. Chỉ đạo SRC-202: tách hai luồng ngay từ trang chủ, xưng hô riêng cho từng bên, bố mẹ khai hộ con phần tối thiểu, và trọng số khai báo đổi theo cấp học.

1. Vì sao phải tách ngay ở cửa ​

Hiện tại www.nemo12.com có một hero chung với nút chính "Bố mẹ bắt đầu" và một link phụ "Vào cổng học tập". Ba vấn đề:

  1. Người đọc phải tự phân loại mình giữa một trang nói chuyện với cả hai. Câu chữ vì thế phải trung tính, mà trung tính thì không thuyết phục được ai.
  2. Xưng hô không thể đúng cho cả hai. Tiếng Việt bắt buộc chọn: nói với bố mẹ thì con là "con", nói với học sinh thì bố mẹ là "bố mẹ". Một trang không làm được cả hai.
  3. Hai bên vào hệ thống bằng hai cách khác nhau — bố mẹ tự đăng nhập, con vào bằng lời mời — nhưng trang chủ đang che mất sự khác biệt đó.

2. Cửa vào (www.nemo12.com) ​

Hai cửa ngang hàng, trên màn đầu, không cửa nào là nút chính:

CửaĐi tớiTrạng thái người bấm
Tôi là bố mẹmarlins.nemo12.com/#/bat-dauChưa có gì, cần khai hộ con
Con vào họclearn.nemo12.comKhông cần gì cả — đăng nhập là học được (SRC-964)

Dưới hai cửa, một dòng nhỏ: "Đã có tài khoản? Đăng nhập".

Quyết định: không dùng chữ "học sinh" ở cửa thứ hai mà dùng "Con vào học", vì người bấm nút đó phần lớn là bố mẹ đang cầm máy đưa cho con, hoặc chính đứa trẻ đang được bố mẹ chỉ. "Học sinh" là ngôn ngữ hành chính; "con" là ngôn ngữ trong nhà.

2b. Mã mời KHÔNG còn là điều kiện vào học (SRC-964, 22.09.2026) ​

Chỉ đạo chủ dự án: "Tôi muốn bỏ luôn việc cần mã mời, mà learner có thể vào học thẳng luôn."

Đổi đúng một thứ, và là thứ ở giao diện chứ không ở quyền:

TrướcSau
Hành động chính màn Joinô "MÃ MỜI" + nút "Vào học"nút "Vào học ngay" — một bấm là có hồ sơ
Đường không mãlink mờ "Tự học thử một bài"không còn cần tới: đó LÀ đường chính
Vai của mã mờicái chắn giữa learner và bài họcnối hồ sơ vào gia đình bố mẹ đã lập

Vì sao mã mời vẫn ở lại. Nó chưa bao giờ làm đúng một việc: một hồ sơ do bố mẹ lập đã gắn sẵn gia đình, người theo dõi, mục tiêu thi và môn hổng (§4 bước 1-4). Bỏ hẳn mã là bỏ luôn sợi dây nối hai bản khai ấy với đứa trẻ, và §6 — "hai giả thuyết cần đo" — mất một vế. Nên mã lui xuống hàng hai, đổi nhãn nút thành "Nối hồ sơ", và link learn.nemo12.com/join?code=... bố mẹ gửi vẫn tự điền như cũ.

Backend không đổi. POST /v1/learners/self đã có từ 05.09 và đã idempotent (gọi lại trả về chính hồ sơ cũ, không ném 409). Cái chắn nằm hoàn toàn ở chỗ đặt nút — đúng loại rào đắt nhất vì nó vô hình trong mã nguồn.

2c. Màn nào cũng phải tự khai mình thuộc khu nào (SRC-964) ​

Cùng một tài khoản Google mở được cả learn (con) lẫn marlins (bố mẹ), nên người đứng trước một màn đăng nhập không có cách nào biết mình đang ở nửa nào. Màn Join của learn nay mang nhãn "KHU HỌC SINH" đặt TRÊN tên sản phẩm — câu hỏi đầu tiên của người lạ không phải "đây là gì" mà là "đây có phải chỗ của tôi không" — và một dòng cuối màn chỉ sang marlins.nemo12.com cho bố mẹ vào nhầm cửa.

Lưu ý vai không gắn vào tài khoản Google mà sinh ra từ dữ liệu: có dòng trong learners là học sinh, là owner/guardian trong family_members là phụ huynh. Một tài khoản vừa đăng nhập chưa là bên nào cả — đó chính là lúc nó đứng ở màn này.

3. Xưng hô — luật bắt buộc ​

Đây là phần dễ làm sai nhất và cũng là phần người dùng cảm nhận rõ nhất.

Bề mặtGọi người đọc làGọi người kia là
marlins (bố mẹ)không gọi trực tiếp, hoặc "anh/chị"con
learn, lớp 1-9conbố mẹ
learn, lớp 10-12bạnbố mẹ

Vì sao lớp 10-12 đổi sang "bạn": một học sinh 16 tuổi bị phần mềm gọi là "con" sẽ thấy bị coi là trẻ con — đúng lứa tuổi đang cần được công nhận là tự chủ. Ngược lại gọi một đứa lớp 3 là "bạn" thì lạnh và xa cách. Ngưỡng lớp 10 trùng với ngưỡng đổi trọng số khai báo ở §5, nên chỉ có một đường ranh trong cả hệ.

4. Luồng bố mẹ — 5 bước, mục tiêu dưới 90 giây ​

Nguyên tắc: một câu hỏi một màn, câu trả lời trước quyết định câu hỏi sau. Không có màn nào là một rừng ô nhập.

mermaid
flowchart TD
  A[Đăng nhập Google] --> B[1. Con tên gì · sinh năm nào]
  B --> C{2. Con có định thi chuyên không?}
  C -- Có --> D[Trường nào · lớp chuyên nào]
  C -- Chưa biết / Không --> E
  D --> E[3. Môn nào con đang hổng]
  E --> F[4. Ưu tiên: lấp lỗ hổng hay bám mục tiêu thi]
  F --> G[5. Mời con · hoặc để sau]
  G --> H[Bảng của bố mẹ, đã có nội dung thật]

Bước 1 — tên + năm sinh. Từ năm sinh suy ra lớp, hiện ra để bố mẹ xác nhận chứ không hỏi lại. Bố mẹ nhớ năm sinh chắc hơn nhớ "cháu đang lớp mấy" khi có nhiều con, và năm sinh không bị cũ đi sau mỗi tháng 9.

Bước 2 — thi chuyên. Ba lựa chọn: Có · Chưa biết · Không. "Chưa biết" phải là một lựa chọn thật, vì phần lớn bố mẹ lớp 6-7 chưa quyết. Nếu "Có" mới hỏi trường và lớp chuyên.

Bước 3 — môn hổng. Chọn nhiều trong các môn của đúng lớp đó, kèm lựa chọn "Chưa rõ, nhờ hệ thống đo" — đây không phải cách né câu hỏi mà là câu trả lời đúng nhất với nhiều bố mẹ.

Bước 4 — ưu tiên. Lấp lỗ hổng trước · Bám mục tiêu thi · Cân bằng. Câu này quyết định Planning Engine xếp việc, nên phải hỏi thẳng thay vì đoán.

Bước 5 — mời con. Sinh mã + link. Nút phụ "Để sau" ngang hàng, không phải link mờ.

Lưu từng bước, không lưu một lần cuối ​

Mỗi bước ghi ngay khi bấm Tiếp. Bỏ dở ở bước 3 thì bước 1-2 vẫn còn. Lý do: bố mẹ khai trên điện thoại, giữa lúc nấu cơm — mất giữa chừng là chuyện thường, và bắt khai lại từ đầu là cách nhanh nhất để mất người dùng.

Hạ tầng đã sẵn: POST /v1/invitations tạo learners với status='invited', nên hồ sơ con tồn tại độc lập với việc con có vào hay không. Đây chính là yêu cầu "thông tin bố mẹ khai vẫn được lưu lại".

5. Luồng con — đổi theo cấp học ​

Cùng một mô hình dữ liệu, khác ai là tác giả mặc định và khác số màn phải qua.

Lớp 1-9Lớp 10-12
Vai của conxác nhậnkhai
Số màn trước khi học13-4
Dữ liệu bố mẹ khaihiện ra như sự thậthiện ra như giá trị điền sẵn, sửa được
Mục tiêu thibố mẹ đặt, con chỉ xemcon sửa được
Xưng hôconbạn

Lớp 1-9: con vào bằng link → một màn duy nhất "Bố mẹ đã chuẩn bị sẵn cho con" liệt kê tên, lớp, mục tiêu → một nút "Bắt đầu học". Không hỏi gì thêm. Trẻ nhỏ dùng máy tính chưa thạo, mỗi ô nhập là một chỗ bỏ cuộc.

Lớp 10-12: con vào → thấy phần bố mẹ khai đã điền sẵn → đi qua bản khai đầy đủ (mục tiêu, môn hổng, quỹ thời gian) và sửa được mọi thứ. Học sinh cấp 3 biết rõ mình hổng gì hơn bố mẹ, và bắt các em nhận một bản khai của người khác mà không sửa được là cách tốt nhất để các em không tin hệ thống.

6. Khi bố mẹ và con khai khác nhau ​

Không bên nào thắng. Cả hai được lưu kèm tác giả, và hệ thống coi đó là hai giả thuyết cần đo, không phải hai sự thật cần chọn.

Ví dụ: bố mẹ nói "con hổng Toán", con nói "không hổng". Hệ thống không im lặng chọn bên nào mà cho một bài đo ngắn phần Toán đang nghi ngờ, rồi ghi vào evidence. Sau đó Learner Model nói bằng bằng chứng chứ không bằng lời khai.

Đây không phải né tránh — đó là đúng kiến trúc đã có: lời khai là declaration, kết luận là evidence.

7. Việc phải xây ​

PhầnViệcĐã có gì
webTrang chủ hai cửahero hiện tại, phải viết lại
marlinsWizard /bat-dau 5 bước, lưu từng bướcmới có form mời 2 ô
apiNhận thêm birth_year, mục tiêu chuyên, môn hổng, ưu tiênPOST /v1/invitations mới nhận tên + lớp
D1Chỗ chứa "môn hổng" + "ưu tiên" theo tác giảlearner_exam_targets đã có cho mục tiêu thi
learnMàn xác nhận cho lớp 1-9, bản khai điền sẵn cho lớp 10-12Onboarding.tsx chưa phân theo cấp
cả hệXưng hô theo §3chưa có

8. Chưa quyết ​

  • Bố mẹ có nhiều con: wizard hiện thiết kế cho một con. Con thứ hai đi lại wizard hay có đường tắt "giống anh/chị nó"?
  • Con lớp 9 lên lớp 10: xưng hô và trọng số khai báo đổi giữa năm học. Đổi ngay khi lên lớp hay đợi đầu năm?
  • Con không có email riêng (rất phổ biến ở cấp 1): hiện luồng bắt đăng nhập Google. Cần một cách vào bằng mã mà không cần email?

Trace ​

NguồnYêu cầuKiểm
SRC-202REQ-ACC-01, REQ-PAR-01, REQ-PAR-05, REQ-LRN-01QG-008
SRC-964REQ-ACC-01, REQ-LRN-01QG-008