Status - ntphiep/zhesen-main GitHub Wiki

Status

Cập nhật 2026-10-08. Việc còn lại nằm ở bảng ZHESEN.

Sản phẩm làm được gì

Trang "Dịch" (route /dictionary) cho hai ô cạnh nhau, mỗi ô một chiều: tiếng Việt sang Anh, Trung, Tây Ban Nha và ngược lại, đổi chỗ được, ghi nhớ theo trình duyệt. Dán cả cụm từ, cả câu hay cả đoạn vào một ô thì tách ra tra từng từ, kèm bản dịch cả đoạn qua Azure AI Translator khi bản triển khai có cấu hình. Dưới hai ô là một dải từ thông dụng xoay vòng theo ngôn ngữ và dải từ người dùng vừa tra hoặc vừa lưu. Lưu từ vào wordlist; ôn lại theo lịch FSRS; luyện tập bằng 11 mode. Trợ lý AI chỉ mở cho tài khoản email và mật khẩu, gọi model qua 9router, một model router chạy trên EC2, và tách riêng khỏi Azure Translator.

Chạy tại https://zhesen.net. Function và database cùng đặt ở Seoul. Mỗi lần push lên nhánh master là một bản deploy mới.

Dữ liệu Số lượng
Entry 965.179: tiếng Anh 821.803, Tây Ban Nha 128.565, Trung 14.811
Sense 1.367.464
Sense tiếng Anh có nghĩa tiếng Việt 1.162.388 trên 1.171.097
Câu ví dụ 992.072
File phát âm 116.917
Liên kết giữa các từ (lex.lex_relations) 2.659.837, trong đó 2.429.433 trỏ tới một entry có trong từ điển
Họ từ tiếng Anh (word family) 59.362 liên kết cho 26.982 từ
Phiên âm IPA ghép cho cụm từ tiếng Anh 183.534 dòng cho 131.370 cụm
Dạng biến đổi của từ (lex.inflections) 3.601.068
Dòng trong chỉ mục tra ngược (lex.gloss_terms) 427.895
Nguồn gốc và nhãn ngữ pháp từ Wiktionary (lex.entry_notes) 498.522 entry tiếng Anh
Cấu trúc câu của Oxford Learner's (lex.entry_patterns) 1.136 entry, 6.082 cấu trúc, tính đến 2026-10-08. Service zhesen-oxford-patterns dịch sang tiếng Việt kèm một câu ví dụ, và tiếp tục điền khi service zhesen-oxford crawl thêm
Dung lượng database 3.600 MB, tự host trên AWS EC2 từ 2026-09-23, đĩa 30 GB (issue #57)

Đếm bằng scripts/status-counts.sql trên database production.

Latency, đo từ Hà Nội 2026-09-18

Sàn của đường mạng là khoảng 130 ms, là thời gian lấy một file tĩnh đã nằm trong cache. Không con số nào xuống dưới mức đó được.

Thao tác Trước Sau
Mở lại trang đã có người xem trong vòng một giờ 108 tới 144 ms 138 tới 219 ms
Mở một entry lần đầu 441 tới 3.467 ms 288 tới 1.339 ms
Search tiếng Anh, Trung hoặc Tây Ban Nha, cache miss 176 tới 513 ms 357 tới 697 ms
Search tiếng Việt, cache miss 334 tới 4.078 ms 334 tới 719 ms
Search lại đúng từ vừa có người gõ khoảng 59 ms 126 tới 158 ms
Phản hồi sau khi bấm một link tới entry không có 3 ms

Hai chiều tra cứu giờ tốn như nhau. Trước đợt sửa, search tiếng Việt tốn gấp bảy lần search xuôi; hiện hai dòng nằm cùng một khoảng.

Điểm yếu còn lại

Nguồn model miễn phí gần cạn. Ngày 2026-10-06, mỗi model được gọi thử một lần: 8 trên 791 model của 9router và 4 trên 794 model của OmniRoute trả lời. Batch làm giàu dữ liệu vì vậy chạy rất chậm cho tới khi quota hằng ngày hồi lại. Vì cùng lý do, trang từ chưa có phần do AI viết: lỗi thường gặp, mẹo nhớ và cách dùng trong IELTS.

Đã làm trong đợt 2026-10-08

  • Nguồn gốc từ. Trang từ tiếng Anh có khối "Nguồn gốc" ở cả 6 bố cục: chuỗi từ tổ tiên, các thành phần cấu tạo, cách hình thành và từ song song. discretion đi từ Middle English discrecioun qua Old French discretion tới Late Latin discrētiō. 381.836 trên 498.522 entry có nguồn gốc (e36e9ae).
  • Trang từ. Thuật ngữ ngữ pháp kèm tên tiếng Anh trong ngoặc, như "Cụm từ (phrase)". Bỏ các dòng ghi nguồn của nghĩa và khối "Cách đọc" (âm tiết). Thêm khối "Cấu trúc câu (sentence pattern)", như "accuse sb of sth", ở cả 6 bố cục (a999604, 0d27f27, 61a4a04).
  • Nghĩa tiếng Việt. 281.610 nghĩa tiếng Anh và tiếng Tây Ban Nha mất chữ "Một" Google dịch sát ở đầu: "Một người công chứng" thành "người công chứng". 53.986 nghĩa khác được viết lại công thức dịch sát: "Thuộc hoặc liên quan đến X" thành "liên quan đến X", "Chất lượng của sự X" thành "tính X", "Bất kỳ loài X nào" thành "các loài X". Bản sao lưu: s3://zhesen-db-backups-014498663963/backups/senses_gloss_vi_mot_20261008.tsv.gz và senses_gloss_vi_style_20261008.tsv.gz.
  • Model router. Token Harbor và B.AI của 9router chuyển sang provider có sẵn trong 9router, Token Harbor trả lời được. OmniRoute giữ image không có Chromium, vì image -web bị OOM kill khi chạy batch (2b1294f).
  • Nhãn ngữ pháp. Mỗi nghĩa có nhãn như đếm được, không đếm được, ngoại động từ, đi với to. 288.930 entry có nhãn, trên 399.667 nghĩa (e36e9ae).

Đã làm trong đợt 2026-10-06

  • Cụm từ tiếng Anh. 131.370 phrasal verb, idiom và cụm từ chưa có phiên âm nay có IPA giọng Anh và giọng Mỹ, ghép từ phiên âm của từng từ: "on the spot" đọc /ɒn ðə ˈspɒt/. Trợ từ của phrasal verb mang trọng âm chính, như /ˌɡɪv ˈʌp/.
  • Sổ tay. Mỗi mục ghi loại: từ, cụm động từ (phrasal verb), thành ngữ (idiom), kết hợp từ (collocation) hoặc cụm từ, và lọc được theo loại. Cột phát âm bỏ chữ "nguồn".
  • Luyện tập. Thêm 5 mode, xếp theo nhóm Nghe, Đọc, Viết: điền từ vào câu ví dụ, đọc IPA rồi gõ từ, gõ dạng từ (quá khứ, số nhiều, so sánh), nghe rồi chọn nghĩa, chọn trợ từ hoặc động từ còn thiếu trong cụm đã lưu. Mọi mode ghi vào lịch FSRS. Câu hỏi chọn nghĩa không còn đưa ra một phương án đúng thứ hai.
  • Họ từ. 26.982 từ tiếng Anh có họ từ lấy từ Open English WordNet (CC BY 4.0): decide có decision, decisive, decisively, indecisive. Họ từ đứng đầu khối "Họ từ" trên trang từ và hiện trong chi tiết từ của sổ tay.
  • Đồng nghĩa, trái nghĩa. 688.368 liên kết đồng nghĩa và trái nghĩa tiếng Anh được xếp hạng: cặp WordNet cũng công nhận đứng trước, rồi từ đơn, rồi từ thông dụng hơn. big mở đầu bằng great, large, huge thay cho consequential, broad, behemothic.

Đã làm trong đợt 2026-10-05

  • Ôn tập. Mỗi từ có hai trạng thái FSRS: "Nhớ ra" cho ôn, viết, nghe chép và nói, "Nhận ra" cho kiểm tra và ghép cặp. Từ mới đi qua learning step (bước học) 1 phút và 10 phút, và phiên ôn chờ đủ bước rồi mới hỏi lại.
  • Ngày học. Ngày học bắt đầu lúc 04:00 giờ Hà Nội, có giới hạn từ mới mỗi ngày. Từ đánh dấu "Đã biết" rời phiên ôn nhưng vẫn có trong các bài luyện khác.
  • Nhắc ôn. Trình duyệt nhận thông báo web push nhắc ôn mỗi ngày theo giờ người học chọn. Còn chờ kiểm tra trên điện thoại thật (#91).
  • Tra từ. Tra ngược từ tiếng Việt đưa từ người học mong đợi lên đầu: "nhà" trả house ở vị trí 2, trên 225 lượt đo có 37 lượt tốt hơn và 0 lượt kém đi (#98).
  • TOEIC. Mỗi chủ đề và mỗi Part của TOEIC có trang riêng (#93).
  • Dữ liệu. Trình độ và dạng biến đổi của từ được sửa. Số từ A1, mức CEFR thấp nhất, tăng từ 1.053 lên 1.105 với tiếng Tây Ban Nha và từ 1.058 lên 1.078 với tiếng Anh. Phrasal verb lấy trình độ theo động từ gốc.
  • AI. 14 learner layer (phần giải thích cho người học) do model Claude viết hoặc duyệt đã bị ẩn và đang được viết lại bằng model khác. Trợ lý AI lưu sẵn câu trả lời và giới hạn lượt dùng mỗi ngày.
  • Hạ tầng. OmniRoute, model router dự phòng, từng trả lỗi cho mọi lượt gọi vì bộ nhớ đệm file chạm giới hạn bộ nhớ. Một timer giải phóng bộ nhớ đệm đó mỗi phút, và combo dự phòng chuyển sang model miễn phí của OpenCode.

Đã sửa trong đợt 2026-09-18

Latency. Query search tiếng Việt siết pg_trgm.similarity_threshold từ 0,3 lên 0,45: database đọc ít hơn ba lần, một query mẫu chạy nguội xuống từ 3.461 ms còn 189 ms, chất lượng kết quả không đổi trên 18 lượt đo. Hai hướng tra chạy song song thay vì nối tiếp. Trang dictionary, grammar và learn được cache ở CDN. Header bỏ prefetch bốn trang cần đăng nhập. Mọi link tới entry có phản hồi sau 3 ms.

Lỗi. Tra một chữ Hán không phải entry chính xác trả lỗi 500. Ký tự đặc biệt như a(( trong ô search trả lỗi. Một lỗ hổng open redirect sau khi đăng nhập. URL trong sitemap và thẻ chia sẻ trỏ về localhost. CSV parser hiểu sai dấu nháy kép và ký tự xuống dòng. AI assistant dùng chung một rate limit cho tất cả mọi người.

Đợt 2026-09-20. Từ loại hiển thị ba kiểu khác nhau trên ba màn hình, giờ dùng chung một dạng viết tắt n., v., adj., giữ tên tiếng Việt khi rê chuột. Một từ có nhiều từ loại trước đây chỉ hiện một, và thường là loại sai, vì câu query lấy sense đầu tiên; tentative giờ trả về cả adj. lẫn n.. Nghĩa tiếng Việt viết hoa thống nhất ở mọi chỗ. Nút "Xem" trong sổ tay đọc qua cache thay vì hỏi thẳng database: lần đầu 2.475 ms, hai lần sau 14 ms và 6 ms. Hai migration 0045 và 0046 đã chạy lên database ngày 2026-09-20; 0046 ghi lại 40 trong 425 từ đã lưu, phần còn lại vốn đã đúng hoặc do người dùng tự sửa.

Tra cứu, 2026-09-20. Ô tra cứu có thêm ô chọn ngôn ngữ đích, mặc định cả ba, nhớ theo trình duyệt. Chiều Việt sang ba ngôn ngữ tách thành trang riêng, không còn phụ thuộc vào việc đoán ngôn ngữ của câu hỏi. Đây là bước đệm; hình dạng cuối cùng nằm ở mục dưới.

Đợt 2026-09-22. Trang tách hẳn thành hai ô cố định thay vì đoán hướng: box "Tiếng Việt sang Anh, Trung, Tây Ban Nha" và box ngược lại, chọn được "2 chiều" hoặc chỉ một ô, đổi chỗ được bằng nút riêng. Lý do là "an", "ban", "con" đều là headword thật ở cả tiếng Việt lẫn tiếng Anh, nên đoán sai đủ nhiều để tra "cá" trả về cả ca, can và called. Trang riêng /dictionary/text bị bỏ; tra một đoạn văn giờ nằm ngay trong mỗi ô, kèm bản dịch cả đoạn qua Azure AI Translator (POST /dictionary/translate) thay vì qua AI assistant, giới hạn 5.000 ký tự. Trang A-Z duyệt theo chữ cái bị bỏ, thay bằng dải từ thông dụng xoay vòng và dải từ người dùng vừa tra dưới hai ô.

Nghĩa tiếng Việt còn thiếu trên các sense tiếng Anh được dịch máy qua Azure: 27.964 sense được ghi, nâng số sense tiếng Anh có nghĩa tiếng Việt từ 85.128 lên 109.182 trên tổng 146.071. Chỉ mục tra ngược (lex.gloss_terms) sau đó được lọc bớt các sense chỉ nêu tên riêng, địa danh hoặc trỏ sang entry khác, từ 211.562 xuống còn 186.430 dòng, vì bản dịch máy đã đưa cả những dòng như "sông battle" hay "bang new york" vào chỉ mục. Trang chi tiết một từ được cache một tuần thay vì một giờ: đo trên production, một từ chưa ai mở tốn 542 tới 1.723 ms, mở lại tốn 128 tới 159 ms.

Đợt 2026-09-19. Mười ba lỗi phía client: năm nút giữ nguyên trạng thái disabled khi request hỏng, nút phát âm tự tắt suốt phiên khi danh sách voice về chậm, practice speaking không báo gì khi microphone bị chặn, CSV preview hứa import những dòng database sẽ từ chối, nút gắn tag sinh tag trùng khi wordlist đã có từ 40 tag trở lên.

Đợt 2026-09-23. Database chuyển sang Supabase tự host trên AWS EC2 (issue #57), khép lại vấn đề shared_buffers 224 MB của gói Free. Đo lại tám lượt tra tiếng Việt gửi đồng thời trên production: cả tám trả HTTP 200 trong 0,60 tới 1,13 giây; cùng phép đo trước cutover cho sáu trên tám lượt trả HTTP 503 sau khoảng 5,5 giây (issue #7, đóng).

Sổ tay chuyển sang phân trang thật, chọn 25, 50, 100 hoặc 200 từ mỗi trang, có nút tới trang đầu, trước, sau, cuối và dòng cho biết đang xem những dòng nào trên tổng số bao nhiêu; trước đó phải bấm "Xem thêm" chín lần mới hết một sổ tay 425 từ. Bảng có mười lăm cột thay vì chín cột cố định, bật tắt từng cột được, sắp xếp được theo mọi cột có thứ tự, và ghim tối đa ba cột vào mép trái để từ vẫn nằm trong tầm nhìn khi cuộn ngang. Trên điện thoại chỉ giữ một cột ghim, vì ba cột ghim chiếm 524 px trong khi màn hình 390 px chỉ có 342 px nội dung. Mọi lựa chọn nhớ theo trình duyệt (issue #61).

Trang tài khoản có nút chọn giao diện Sáng, Tối hoặc Theo máy, nhớ theo trình duyệt và áp trước khi trang vẽ ra, đo trên 31 lượt tải trang không lượt nào nháy sai màu. Trang cũng hiện tiến độ ôn tập và cho tải toàn bộ sổ tay về máy dạng CSV hoặc Anki TSV (issue #60).

Bảng điều khiển quản trị chỉ chủ sở hữu vào được (profiles.role = 'admin'), mở từ trang /account thay vì thanh đầu trang. Toàn bộ chữ trong admin là tiếng Anh (issue #58, #62 tới #67, #74). Menu có 8 mục chia 2 nhóm:

Nhóm Mục Nội dung
Observe Overview Trạng thái 5 thành phần, KPI (users, entries, database size, AWS cost tháng này), sơ đồ kiến trúc Vercel, AWS region, VPC, EC2, phiên bản stack
Observe Monitor Postgres mỗi 10 giây, server và container mỗi 5 giây, biểu đồ 24 giờ và 7 ngày, query chậm, alarm, log container
Observe Containers Từng container trên EC2 mỗi 5 giây: vai trò của nó, image, CPU kèm biểu đồ 1 giờ, memory so với giới hạn, log, restart; port, mount và healthcheck gần nhất nằm trong Details
Observe Database ERD và danh sách bảng theo schema, mở dòng để xem cột; SQL chỉ đọc hoặc được ghi; restore bản dump ra database riêng
Operate Infrastructure Thông tin EC2, đổi instance type, start, stop, reboot, backup, shell, bảng AWS services kèm chi phí từng service, cấu hình cảnh báo Slack hoặc Telegram
Operate Users Danh sách account, xoá, gộp
Operate Content Độ phủ theo ngôn ngữ, sửa nghĩa, đánh dấu entry
Operate Audit log Mọi thao tác của admin

/rescue bật lại server bằng khoá cứu hộ khi database đã tắt. Cảnh báo Slack hoặc Telegram chưa gửi thử lần nào vì owner chưa lưu kênh nào (#74).

Đợt 2026-09-26. Toàn bộ phần tiếng Anh của bản dump Wiktionary đã lên production: entry tiếng Anh tăng từ 21.004 lên 767.662, gồm từ đơn, cụm từ, thành ngữ và tên riêng (issue #36). Các từ tiếng Anh nối với nhau qua 2,35 triệu liên kết, trong đó Open English WordNet thêm ba nhóm mới trên trang một từ: khái niệm rộng hơn, khái niệm hẹp hơn và cùng nhóm. Nghĩa tiếng Việt do người viết giữ đủ 16.313 trên 16.313, và 445 từ trong sổ tay vẫn trỏ đúng entry. Từ hiếm chưa có nghĩa tiếng Việt thì hiện định nghĩa tiếng Anh, không dịch máy.

Bản ghi phát âm tiếng Anh tăng từ 696 lên 96.765, gồm cả giọng Úc và bản ghi của Lingua Libre, một dự án thu âm cộng đồng (issue #40). Mỗi bản ghi trên trang một từ có link "nguồn" tới trang file trên Wikimedia Commons, nơi ghi tác giả và giấy phép (issue #29). Trình độ CEFR có trên 37.196 entry tiếng Anh: 13.150 theo danh sách CEFR có sẵn, phần còn lại ước lượng theo tần suất (issue #39). Mục "Cụm từ chứa từ này" giờ xếp cụm quen thuộc lên đầu, như "let the cat out of the bag" cho cat, và dòng "Dạng gốc của" không còn ghi give là dạng của gyve hay water là dạng của this (#73).

Trang một từ có bố cục mới, rộng 1.200 px, quyết định ở Decisions: nghĩa nhóm theo từ loại, mỗi từ loại 5 nghĩa, nghĩa nào có câu ví dụ gắn sẵn thì hiện ngay dưới nghĩa đó. Cột phải gom dạng từ, từ liên quan chia tab, ngôn ngữ khác và ngữ pháp. 455 từ tiếng Trung lấy lại 2.275 nghĩa bị bỏ sót lúc nạp CC-CEDICT, trong đó 水 giờ là "nước" (#52). Ngữ pháp tiếng Anh có thêm trình độ C1 với 16 điểm ngữ pháp và 75 câu ví dụ.

Đợt 2026-09-26, tối. Ô tiếng Việt giờ tới được từ tiếng Anh chưa có nghĩa tiếng Việt (#75). Cụm từ hai âm tiết trở lên như "người tham dự" hiện thêm các entry của bản dịch máy Azure, ở đây là attendee, dưới nhãn "Dịch máy". Từ một âm tiết có dưới 3 kết quả thì dịch một lần cho mọi ngôn ngữ đích rồi tra thêm, nên "bàn" có thêm desk. Mọi chỗ phát bản ghi Wikimedia Commons, gồm trang một từ, sổ tay và các trang luyện tập, giờ có link "nguồn" (#29). Riêng bài nghe chép chỉ hiện link sau khi chấm, vì tên file chứa đáp án.

Trợ lý AI chạy thật trên production. 9router cài trên EC2 cùng dữ liệu của owner, gồm các provider đã đăng nhập, và website gọi nó qua /ai/v1/ sau CloudFront bằng một API key riêng. Model là combo zhesen: Gemini 3.8 Flash qua Antigravity, rồi lần lượt Gemini 3.8 Flash Low, DeepSeek V4 Flash bản miễn phí, GLM-5 và gpt-oss-120b khi model trước lỗi. Không dùng model Claude. Ba task thật trả JSON đúng khuôn trong 7 tới 9 giây. Chỉ tài khoản email và mật khẩu thấy nút trợ lý (permanentUser, lib/auth/guard.ts).

Trang /admin/secrets liệt kê mọi key và secret của dự án, xem được nguyên giá trị và đổi được cả key hạ tầng. Xem cần đăng nhập trong 10 phút gần nhất, đổi cần gõ lại tên key, và cả hai ghi audit log trước khi làm. Key của Azure và 9router nằm trong SSM Parameter Store, đổi xong có hiệu lực sau tối đa 60 giây mà không cần deploy lại. Container database có 256 MB shared memory thay vì 64 MB, sau khi một query thống kê lớn lỗi vì thiếu.

Lý thuyết tiếng Anh có thêm khối "Luyện thi TOEIC" tại /theory/en/toeic, đứng trước khối Từ vựng:

Phần Nội dung
Cấu trúc đề và điểm 7 part, số câu, thời gian, thang 10 tới 990, mốc CEFR, lấy từ cẩm nang thí sinh và đề mẫu của ETS
Từng part Mẹo làm bài và bẫy hay gặp cho Part 1 tới Part 7
Ngữ pháp và paraphrase 12 điểm ngữ pháp hay ra ở Part 5 và 6, 11 điểm nối sang bài ngữ pháp có sẵn, 20 cặp câu viết lại
Từ vựng 152 từ theo 12 chủ đề công sở, mỗi từ mở trang từ điển để nghe và lưu vào sổ tay
Luyện tập 30 câu Part 5 tự viết, chấm ngay, có giải thích và bản dịch
Ôn và ngày thi Phân bổ thời gian, lộ trình theo mục tiêu điểm, tuần cuối, quy định phòng thi, tóm tắt Speaking và Writing

Chữ trên giao diện, 2026-09-26. Mọi chữ tiếng Việt người học thấy, trừ khu admin, được viết lại theo giọng tối giản mà owner chọn: không xưng hô, không giải thích, chỉ nói việc vừa xảy ra và việc làm tiếp, như "Chưa lưu được. Thử lại." (#68). Luật viết và bảng thuật ngữ nằm trong repo, và một test chặn câu sai luật trước khi deploy. Sổ tay, luyện tập và trang tài khoản đã được kiểm tra trên production bằng một tài khoản thử, ở cỡ màn hình máy tính và điện thoại.

Lưu từ không còn tự tạo tài khoản ẩn danh, vì tài khoản đó chỉ nằm trong cookie của một trình duyệt và mất theo cookie. Lưu từ giờ cần tài khoản email. Tài khoản ẩn danh có từ trước vẫn dùng được và gắn email được mà giữ nguyên sổ tay, chi tiết ở Technical.

Đợt 2026-09-27. Trang một từ có thêm nút chọn ba bố cục: Tổng quan, Song ngữ và Cổ điển, chi tiết ở Decisions. proper_noun giờ gán nhãn "Danh từ riêng" thay vì rơi vào nhóm khác. Mục từ liên quan bỏ các dòng là tiêu đề mục Wiktionary hoặc trỏ chéo sang mục khác thay vì là một từ thật, như "Informal and slang terms" từng chen vào từ liên quan của take: 2.003 dòng trên 1.805 entry bị lọc. Một dạng từ dùng chung cho cả danh từ và động từ giờ gọi tên theo từ loại đứng đầu mục từ, nên "takes" ở trang động từ ghi "Ngôi thứ ba số ít" thay vì "Số nhiều". Nghĩa đọc theo đúng thứ tự sense_order; trước đó một lần cập nhật nghĩa có thể đảo thứ tự PostgREST trả về, khiến mô tả trang của chicken bắt đầu bằng một nghĩa sâu.

Trợ lý AI đã viết xong 3.965 trên 17.427 entry tiếng Anh trình độ A1-B2, xếp theo tần suất; 13.462 entry còn lại chờ. 16.433 sense được xếp vào nhóm nghĩa chính (1 tới 5, cột lex.senses.sense_frequency), trang đã sắp theo cột này. 2.025 nghĩa tiếng Việt của các sense chính được viết: 172 nghĩa trước đó trống, 1.853 nghĩa được sửa lại. 18.391 câu ví dụ Tatoeba được gắn vào đúng sense (lex.examples.sense_id); 225 câu trong số đó có thêm bản dịch tiếng Việt. Mỗi lần ghi chỉ chạm dòng còn nguyên trạng thái trước khi sửa. Có script hoàn tác tại s3://zhesen-infra-assets-014498663963/data-loads/enrich-a-3965-undo.sql; bản dump đêm trước khi nạp nằm ở s3://zhesen-db-backups-014498663963/postgres/postgres-20260927T033003Z.dump.

13.462 entry còn lại và bản dịch tiếng Việt cho câu ví dụ của toàn bộ entry bị chặn vì hạn mức Gemini miễn phí của AI router (ag/gemini-3.8-flash) báo hết quota. Owner cần chọn giữa chờ hạn mức hồi phục (khoảng 4.000 entry một ngày), duyệt một model trả phí, hoặc thêm key Azure Translator riêng cho phần dịch câu ví dụ.

Trang admin có thêm mục 9router (/admin/router) để mở dashboard của 9router trên EC2 mà không cần SSM tunnel. Trang hiện link và mật khẩu dashboard, cùng combo zhesen và 5 model trong đó mà mọi task của trợ lý AI dùng. Dashboard chỉ có màn hình đăng nhập của 9router chắn trước. Mật khẩu đổi được trên /admin/secrets và có hiệu lực khi container khởi động lại. Đã kiểm tra trên production: mở link, đăng nhập bằng mật khẩu trên trang, và danh sách model khớp dashboard.

Hai kết quả đo rồi bỏ

Ghi lại để không ai thử lại.

  • Cắt phần giải thích trong nghĩa tiếng Việt trước khi tìm từ tương đương. Đo trên 30 entry: cả chuỗi trả 88 dòng, chuỗi đã cắt trả 84. Cắt không tốt hơn.
  • Chạy hai bước tìm từ tương đương song song. Đo trên 300 entry thông dụng nhất: 189 entry, tức 63 phần trăm, không cần tới bước thứ hai.