Skip to content

Trình đọc sách: người đọc cần làm gì ​

Trang này đóng vai người đọc sách nghề trên tokyo (chủ quán, trưởng nhóm, nhân viên văn phòng, đọc trên điện thoại giữa hai ca hoặc trên máy tính buổi tối) và viết ra các việc họ cần làm khi đọc, kèm điểm vướng của từng việc. Mỗi tính năng của trình đọc phải trỏ về được một việc ở đây; tính năng không trỏ về việc nào là đồ trang trí.

Đối chiếu: Apple Books là trình đọc mà phần đông người đọc trên iPhone/Mac đã quen, nên những gì nó làm tốt là mức người đọc kỳ vọng sẵn.

Bảy việc của người đọc ​

#Việc (Job to be done)Điểm vướng (Pains)
1Quay lại đúng chỗ đang đọc sau một khoảng gián đoạn (hết giờ nghỉ, chuyển máy)Mở lại quyển là về trang bìa; phải tự nhớ đang ở chương nào; tải lại trang là mất chỗ; nút Back của trình duyệt thoát hẳn khỏi quyển
2Đọc liền mạch hết một chươngĐọc xong một section phải quay ra trang chương rồi chọn tiếp; không biết chương còn dài bao nhiêu nên không dám bắt đầu khi chỉ có 10 phút
3Đọc dễ chịu trên thiết bị và giờ giấc của mìnhChữ nhỏ trên điện thoại; nền trắng chói khi đọc tối; dòng chữ sát nhau khó dò
4Biết mình đã đi được bao xaKhông có tiến độ cả quyển hay cả chương; không thấy section nào đã đọc, section nào chưa
5Định hướng và nhảy tới phần cần (tra lại một mục, đọc không theo thứ tự)Mục lục chỉ ở trang tổng quan; đang đọc giữa section muốn nhảy phải quay ra
6Nhớ và mang ý ra dùng (giữ lại câu đáng nhớ, ghi chú việc phải làm)Không đánh dấu được câu nào; ghi chú phải chép sang ứng dụng khác
7Hình dung được vấn đề trước khi đọc chữMỗi section là một tường chữ; mười section trông y hệt nhau nên khó nhớ section nào nói gì

Đối chiếu Apple Books ​

Apple BooksViệcConan (03.10.2026)
Mở là về đúng trang đang đọc; "Continue reading" ở thư viện1Có: nút "Đọc tiếp" đầu trang quyển, vị trí đọc nằm trên URL (?c=2&s=3) nên tải lại/Back/gửi link đều đúng chỗ
Lật trang liên tục sang chương sau2Có: cuối section có "Trước / Tiếp", sang được cả chương kế
"X phút còn lại trong chương"2, 4Có: ước lượng theo 200 chữ/phút trên thân bài thật của các section còn lại
Nút "Aa": cỡ chữ, phông, nền (trắng/sepia/tối), giãn dòng3Có: bốn cỡ chữ, ba mức giãn dòng, ba nền (Sáng/Giấy/Tối), nhớ theo thiết bị
Thanh tiến độ cả quyển4Có: ở khối "Đọc tiếp" (số section đã đọc / tổng) và trong mục lục từng chương
Mục lục mở đè lên trang đang đọc5Có: nút "Mục lục" mở ngăn bên, có dấu đã đọc
Đánh dấu câu nhiều màu, ghi chú, trang Ghi chú6Chưa: cần bảng lưu và cách neo đoạn chọn vào Portable Text (xem dưới)
Bookmark trang6Chưa, gộp chung với đánh dấu câu
Tìm trong quyển5Chưa
Đọc to (Speak Screen)3Chưa, dùng tính năng đọc màn hình của hệ điều hành
Mục tiêu đọc mỗi ngày, chuỗi ngày đọc4Chưa, dữ liệu đã có (sự kiện đọc), chỉ thiếu giao diện
Ảnh minh hoạ trong sách7Có (thí điểm "Đêm trống"): mỗi chương và section một ảnh, xem Ảnh minh hoạ chương/section

Lỗi đã gặp khi làm: dữ liệu đọc chưa từng được ghi ​

Trước khi làm "Đọc tiếp", bảng legacy_ebook_learning_events có 0 dòng, tức trình đọc chưa từng ghi được một sự kiện đọc nào. Hai chỗ chặn cùng lúc:

  1. Lệnh ghi là upsert ... ON CONFLICT (event_id) nhưng bảng không có ràng buộc duy nhất trên event_id, nên SQLite ném lỗi ở mọi lượt ghi (migration 20261007a thêm chỉ mục duy nhất).
  2. Schema API bắt ebook_id, section_id là UUID, mà 216/245 quyển có id dạng food-book-03.

Client nuốt lỗi, nên trang đọc chạy trơn tru và không ai thấy. Hệ quả kéo dài: không có tiến độ đọc, và Learner Model không nhận được bằng chứng đọc sách nào. Xem known-risks.

Kiểm trên production (03.10.2026): bốn lỗi chỉ thấy khi dùng thật ​

Thấy gìVì saoSửa
Ảnh minh hoạ mất ~4 giây mới hiệnmiddleware chung của api ghi đè mọi Cache-Control thành no-store, Worker vẽ lại SVG mỗi lượtbỏ qua /api/book-art/* (src/index.ts)
"Hết chương" ở section 1/4section sau bị khoá (chưa Pro) trả thân bài rỗng, đếm ra 0 chữđếm không được thì nói "còn N section"
Nền Tối thành hộp đen giữa trang trắngthuộc tính chủ đề đặt trên div bọc nội dungđặt lên <main> (không phải <html>, vì thanh trên dùng token foreground làm nền)
Link ?c=&s= sau đăng nhập về trang bìaroot.tsx chỉ chuyển pathname vào nextchuyển cả pathname + search

Đã xác nhận cùng lượt kiểm: sự kiện đọc vào D1 thật (book_open, chapter_view, section_view), và SVG phục vụ trên production khớp từng byte với bản xem trước ở máy.

Việc kế tiếp, theo thứ tự đáng làm ​

  1. Đánh dấu và ghi chú (việc 6): bảng ebook_highlights (user, section, khối _key, vị trí ký tự, màu, ghi chú); neo theo _key của khối Portable Text vì khối có khoá ổn định qua các lần sửa chữ.
  2. Mục tiêu đọc mỗi ngày (việc 4): tính từ reading_heartbeat đã có.
  3. Tìm trong quyển (việc 5).
  4. Ảnh minh hoạ cho 244 quyển còn lại (việc 7): xem skill book-illustrations.

Tài liệu nội bộ nền tảng Conan School.