Sprint 115 · Trogiang.ai

Đăng nhập bằng tài khoản FLYER trên Trogiang.ai

Giáo viên đã có tài khoản FLYER đăng nhập Trogiang.ai bằng chính tài khoản đó và vào thẳng ứng dụng với đúng tên trong hồ sơ FLYER.

Sprint
115
Trạng thái
Đã triển khai, chưa kích hoạt
Sản phẩm
trogiang.ai
Cập nhật
03/11/2026
Chờ đặt khóa SESSION_SECRET trên hai Worker
Xuất xứ / Prompt / Giới hạn

Prompt. Ngày 03/11/2026, yêu cầu được đặt ra nguyên văn: "feature image đang bị bugs https://trogiang.ai", sau đó "Bổ sung button login ở landing page nhé https://trogiang.ai", "đồng bộ database với giaovien.phongthiao.com, nếu có account rồi thì chỉ login thôi" và "trogiang.ai sẽ dùng logo giống giaovien.phongthiao.com nhé".

Ai soạn. Tài liệu do trợ lý AI soạn từ phần việc đã bàn giao trên trogiang.ai, dùng làm cơ sở để đội sản phẩm thảo luận.

Nguồn: mã Worker ~/partner-web-trogiang-kit/demo-auth.ts; các tệp src/demo/engine.ts, src/components/Logo.tsx và public/home/index.html của ~/partner-web-trogiang; kiểm thử đơn vị 17 điểm cho mô-đun đăng nhập; ảnh chụp và kiểm tra trực tiếp trên trogiang.ai ngày 03/11/2026.

Giới hạn:

  • Đăng nhập bằng tài khoản FLYER chưa chạy trên bản live. Ngày 03/11/2026, /api/demo-session trả mã 404 vì chưa có khóa SESSION_SECRET.
  • Luồng đăng nhập mới được kiểm bằng kiểm thử đơn vị, chưa thử với tài khoản production thật trên trogiang.ai.
  • Ảnh trang Đăng nhập chụp ở trạng thái đã đăng xuất, đặt bằng một cờ trong trình duyệt. Người xem mới hiện được chuyển thẳng vào ứng dụng với dữ liệu mẫu.
  • Ảnh "trước khi sửa" của phần ảnh tính năng chụp từ bản live lúc còn lỗi, có bong bóng Bingo che một phần.
  • Chưa có số liệu sử dụng. Mục Chỉ số thành công chỉ nêu cách đo và mục tiêu đề xuất.
  • Tab Thiết bị nạp trực tiếp trang trogiang.ai, nên nội dung đổi theo bản đang chạy.

Nút Đăng nhập nằm trên thanh điều hướng của trang giới thiệu trogiang.ai, giữa Vào ứng dụng và Dùng thử miễn phí. Trên điện thoại, thanh điều hướng chỉ giữ logo, Đăng nhập và Dùng thử. Nút dẫn tới trang đăng nhập sẵn có của ứng dụng (/vi/login); không thêm màn hình mới.

1 · Thanh điều hướng của trang giới thiệu

Thanh điều hướng trên máy tính với nút Đăng nhập

Máy tính: Môn học · Tính năng · Cách dùng · Dạng câu hỏi · Promax 2, rồi ba nút Vào ứng dụng · Đăng nhập · Dùng thử miễn phí. Nút Đăng nhập nền trắng, viền và chữ tím.

Thanh điều hướng trên điện thoại với nút Đăng nhập

Điện thoại 390px: logo, Đăng nhập, Dùng thử.

2 · Trang đăng nhập

Trang đăng nhập của Trogiang.ai

Trang /vi/login khi giáo viên chưa đăng nhập: ô số điện thoại hoặc tên đăng nhập, ô mật khẩu, Ghi nhớ tài khoản, Quên mật khẩu, nút Đăng Nhập, nút Đăng Nhập Với Google và liên kết Đăng ký. Logo trên khung là logo mới.

3 · Logo giống giaovien.phongthiao.com

Logo cũ trên thanh bên
Trước 03/11/2026
Logo mới trên thanh bên
Từ 03/11/2026
Tệp new-icon.png
new-icon.png

Thanh bên của ứng dụng và trang giới thiệu dùng /static/images/new-icon.png, cùng tệp với giaovien.phongthiao.com; trang đăng nhập hiển thị cùng biểu tượng.

4 · Ảnh tính năng trên trang giới thiệu

Trước khi sửa

Ảnh tính năng bị bóp méo, hiển thị 515 × 800

Ảnh co theo chiều ngang nhưng giữ chiều cao 800px nên bị bóp méo.

Sau khi sửa

Ảnh tính năng đúng tỉ lệ

Ảnh giữ đúng tỉ lệ 16:10, chụp lại không còn lớp phủ.

Trên điện thoạiCập nhật 03/11/2026

03/11/2026: ba màn chụp từ trogiang.ai ở khổ 390 × 844: đầu trang giới thiệu, trang đăng nhập, phần ảnh tính năng.

Đầu trang giới thiệu trên điện thoại
Trang đăng nhập trên điện thoại
Phần Trình soạn hiểu từng môn với ảnh tính năng

Nút Đăng nhập luôn hiện trên thanh điều hướng dính ở đầu trang; ảnh tính năng co theo bề ngang màn hình và giữ đúng tỉ lệ.

1Vấn đề & mục tiêu03/11/2026

  • Trang giới thiệu trogiang.ai chỉ có lối vào bản dùng thử với dữ liệu mẫu, chưa có lối cho giáo viên đã có tài khoản.
  • Đăng nhập trên trogiang.ai trước đây chỉ diễn ra trong trình duyệt: mật khẩu không được kiểm với cơ sở dữ liệu tài khoản FLYER và tên giáo viên không lấy từ hồ sơ thật.
  • Logo của trogiang.ai khác logo của giaovien.phongthiao.com dù hai trang dùng chung mã nguồn.
  • Ảnh tính năng trên trang giới thiệu bị bóp méo.

Mục tiêu: giáo viên đã có tài khoản FLYER chỉ cần đăng nhập, không phải đăng ký lại; một số điện thoại không tạo được tài khoản thứ hai; Trogiang.ai không lưu mật khẩu; nhận diện thống nhất với giaovien.phongthiao.com; trang giới thiệu hiển thị đúng.

2Giải pháp tổng quan03/11/2026

Hạng mụcThay đổiTrạng thái 03/11/2026
Nút Đăng nhậpThêm vào thanh điều hướng của trang giới thiệu, hiện cả trên điện thoạiĐã lên
Đăng nhập bằng tài khoản FLYERWorker kiểm mật khẩu với API production rồi giữ phiên riêng của Trogiang.aiĐã triển khai, chưa kích hoạt
LogoDùng /static/images/new-icon.png như giaovien.phongthiao.comĐã lên
Ảnh tính năng, số dạngSửa ảnh bị bóp méo, chụp lại ảnh không lớp phủ; cập nhật số dạng thành 115Đã lên
Nguyên tắcKhông sao chép tài khoản sang nơi khác. Trogiang.ai hỏi thẳng cơ sở dữ liệu tài khoản FLYER mỗi lần đăng nhập, chỉ giữ lại tên giáo viên trong phiên riêng của Trogiang.ai.

3Vị trí trong điều hướng03/11/2026

Nút trên trang giới thiệuĐíchHiện trên điện thoại
Vào ứng dụng/api/demo-guest?next=/vi/exploreKhông
Đăng nhập/vi/loginCó
Dùng thử miễn phí/api/demo-guest?next=/vi/onboarding?mock=new-teacherCó, nhãn "Dùng thử"
Xem kho đề mẫu và các nút khác vào ứng dụngQua /api/demo-guest?next=…Có

/api/demo-guest xóa dấu "đã đăng xuất" rồi chuyển tới trang đích, nên người xem chọn nút trên trang giới thiệu luôn vào được ứng dụng. Đường này hoạt động cả khi chưa có khóa SESSION_SECRET.

4Cơ sở nghiên cứu: tài khoản của giaovien.phongthiao.com nằm ở đâu03/11/2026

Yêu cầu "đồng bộ database với giaovien.phongthiao.com" được làm rõ bằng cách đọc mã nguồn của bản giaovien trước khi viết mã.

Câu hỏiKết quả
giaovien.phongthiao.com có cơ sở dữ liệu tài khoản riêng không?Không. Đây là bản chạy dữ liệu mẫu; đăng nhập chỉ lưu trong trình duyệt.
Tài khoản giáo viên thật nằm ở đâu?Trong cơ sở dữ liệu tài khoản FLYER, nơi tạo tài khoản từ admin.flyer.vn và teacher.flyer.us. Mã nguồn bản dùng thử đã ghi cơ sở dữ liệu dự kiến là tài khoản production của FLYER.
Bản dùng thử đã có chỗ nối chưa?Có. src/demo/engine.ts đã gọi sẵn các đường /api/demo-* cho đăng nhập, đăng ký, đăng xuất và kiểm tra số điện thoại, nhưng chưa có máy chủ trả lời.
Vậy "đồng bộ" nghĩa là gì?Trogiang.ai kiểm tài khoản trực tiếp với cơ sở dữ liệu tài khoản FLYER qua API production (api.flyer.us/v2/graphql). Hai trang cùng dựa vào một nguồn tài khoản, không cần chép dữ liệu.
Logo và luồng đăng nhập dùng lại được không?Được. Trogiang.ai dựng từ chính mã nguồn của giaovien với cờ thương hiệu riêng.

5Nút Đăng nhập trên trang giới thiệu03/11/2026

Thành phầnQuy tắc
Vị tríThanh điều hướng dính ở đầu trang, nhóm nút bên phải: Vào ứng dụng · Đăng nhập · Dùng thử miễn phí.
KiểuNền trắng, viền và chữ tím #6a309b, cao 40px; nền tím nhạt khi rê chuột.
Điện thoạiLuôn hiện. Các liên kết Môn học, Tính năng, Cách dùng, Dạng câu hỏi, Promax 2 và nút Vào ứng dụng ẩn đi.
Đích/vi/login, trang đăng nhập sẵn có của ứng dụng.
Mã kiểm thửdata-testid="landing-login"

6Đăng nhập bằng tài khoản FLYER03/11/2026

Luồng đăng nhập

  1. Giáo viên nhập số điện thoại hoặc tên đăng nhập và mật khẩu tại /vi/login.
  2. Worker gửi thông tin tới viewerLogIn của API production, thiết bị WEB_TEACHER. Mật khẩu chỉ đi qua Worker, không được lưu hay ghi log.
  3. Mật khẩu đúng: Worker đọc tên trong hồ sơ giáo viên (teacherProfile), rồi đăng xuất ngay phiên production vừa tạo. Không giữ token production nào.
  4. Worker ghi phiên riêng của Trogiang.ai vào cookie tg_sess.
  5. Tài khoản có hồ sơ giáo viên vào thẳng ứng dụng với đúng tên, không qua bước thiết lập ban đầu. Tài khoản chưa có hồ sơ giáo viên đi theo luồng giáo viên mới.
  6. Mật khẩu sai: trang đăng nhập nhận nguyên lỗi của production (mã INVALID).

Đăng ký

Trường hợpKết quả
Số đã có tài khoản FLYERThông báo "Số điện thoại này đã có tài khoản FLYER. Vui lòng đăng nhập." (mã ALREADY_EXIST).
Số mớiVào bản dùng thử với vai trò giáo viên mới. Không tạo tài khoản production, vì đăng ký trên production cần mã OTP qua SMS và phần này chưa được nối.
Ô nhập OTP kiểm tra sốWorker hỏi identifierExists của production, thử ba dạng: đúng như đã nhập, dạng 0xxx và dạng +84xxx.

Vai trò của phiên

Vai tròKhi nàoNội dung trong ứng dụng
guestChưa đăng nhậpDữ liệu mẫu như trước
sampleTài khoản mẫu của bản dùng thửDữ liệu mẫu; không hỏi production
existingTài khoản FLYER có hồ sơ giáo viênKhông gian dùng thử trống (chưa có lớp, học sinh, bài), gói Basic, mang tên giáo viên; bỏ qua bước thiết lập ban đầu
newTài khoản FLYER chưa có hồ sơ giáo viên, hoặc số mới đăng kýLuồng giáo viên mới, bắt đầu từ bước chọn vai trò
Phạm viĐăng nhập chỉ xác thực tài khoản và lấy tên. Lớp, học sinh và bài trên teacher.flyer.us không được tải về; dữ liệu sau khi đăng nhập vẫn là dữ liệu của bản dùng thử.

An toàn

Biện phápChi tiết
Mật khẩuChỉ chuyển tiếp tới production; không lưu, không ghi log.
Token productionĐăng xuất ngay sau khi đọc tên giáo viên.
Cookie phiêntg_sess, ký HMAC-SHA256, HttpOnly, Secure, SameSite=Lax, hạn 30 ngày. tg_lo đánh dấu đã đăng xuất.
Giới hạn số lần thử10 lần trong 15 phút cho mỗi địa chỉ IP, tính riêng cho đăng nhập, đăng ký và kiểm tra số. Quá giới hạn: "Bạn đã thử đăng nhập quá nhiều lần. Vui lòng thử lại sau 15 phút."
Yêu cầu từ trang khácYêu cầu POST có Origin khác trogiang.ai bị từ chối (403).
Máy chủ tài khoản lỗi"Không kết nối được máy chủ tài khoản FLYER. Vui lòng thử lại sau." (502)
Độ dài đầu vàoTên đăng nhập tối đa 120 ký tự, mật khẩu tối đa 200 ký tự.

8Ảnh tính năng và số dạng trên trang giới thiệu03/11/2026

Hạng mụcNội dung
Nguyên nhânBa ảnh /home/img/builder.png, editor.png, subjects.png khai báo width="1280" height="800". CSS có img{max-width:100%} nhưng thiếu height:auto, nên ảnh co chiều ngang mà vẫn cao 800px: hiển thị 515 × 800.
Cách sửaimg{max-width:100%;height:auto;display:block}
Ảnh mớiChụp lại ở 1920 × 1200, gói Promax 2, không còn bong bóng Bingo, nút góp ý và dải hướng dẫn.
Kết quảMáy tính 515 × 322, điện thoại 348 × 218, đúng tỉ lệ 16:10.
Số dạng"115 dạng câu hỏi: 16 dạng chung cho ngoại ngữ và 99 dạng riêng của 8 môn". Thẻ từng môn ghi số dạng: Tiếng Anh 16, Tiếng Việt +13, Tiếng Trung +13, Tiếng Nhật +14, Tiếng Hàn +13, Toán +13, Vật lý +9, Hóa học +10, Ngữ văn +14.

9Dữ liệu & kỹ thuật03/11/2026

Các đường do Worker trả lời

ĐườngVai trò
GET /api/demo-sessionTrả vai trò, tên đăng nhập và tên của phiên; { role: null } khi đã đăng xuất; { role: 'guest' } khi chưa đăng nhập
POST /api/demo-loginKiểm mật khẩu bằng viewerLogIn, ghi phiên, đăng xuất phiên production
POST /api/demo-signupSố đã có tài khoản: ALREADY_EXIST; số mới: vào bản dùng thử
POST /api/demo-existsidentifierExists của production cho ô nhập OTP
POST /api/demo-logoutXóa phiên, đánh dấu đã đăng xuất
GET /api/demo-guest?next=…Bỏ dấu đã đăng xuất, chuyển tới next; chỉ nhận đường dẫn nội bộ

Thành phần

TệpNội dung
~/partner-web-trogiang-kit/demo-auth.tsMô-đun đăng nhập, chạy trên cả hai Worker, được deploy.sh chép vào khi triển khai
src/demo/engine.tsHỏi Worker khi đăng nhập, đăng ký, đăng xuất; dựng không gian cho giáo viên đã có tài khoản
public/home/index.htmlTrang giới thiệu: nút Đăng nhập, logo, ảnh tính năng, số 115 dạng
src/components/Logo.tsxLogo trong ứng dụng
WorkerPhục vụ
flyer-teacher-trogiangỨng dụng
flyer-teacher-trogiang-frontTên miền trogiang.ai và tệp tĩnh, gồm trang giới thiệu
  • Khóa SESSION_SECRET: chưa có khóa thì mọi đường /api/demo-* trừ demo-guest trả 404, không cấp phiên nào; engine giữ cách đăng nhập trong trình duyệt như trước.
  • Giới hạn số lần thử dùng Cache API của Cloudflare, tính riêng ở từng trung tâm dữ liệu, đủ để chặn dò mật khẩu hàng loạt.
  • Trang giới thiệu là tệp tĩnh do Worker front phục vụ, nên sửa trang giới thiệu không cần dựng lại ứng dụng.
  • Kiểm thử đơn vị: 17 điểm cho mô-đun đăng nhập.

10Lộ trình triển khai03/11/2026

#Nội dungNgười thực hiệnTrạng thái
1Mô-đun đăng nhập, nút Đăng nhập, logo, ảnh tính năng, số 115 dạng—Đã lên 03/11/2026
2Đặt khóa SESSION_SECRET cho flyer-teacher-trogiang và flyer-teacher-trogiang-front (wrangler secret put SESSION_SECRET). Trước bước này, trang hoạt động như cũ.Chủ sản phẩmChờ
3Kiểm tra trên bản live sau khi kích hoạt: tài khoản giáo viên thật, mật khẩu sai, số đã có tài khoản ở trang đăng ký, giới hạn 10 lầnQCSau bước 2
4Nối đăng ký production có OTP để số mới thành tài khoản FLYER thậtBackendCâu hỏi mở
5Chụp lại /home/img/builder.png: ảnh hiện tại chụp trước đợt 99 dạng, còn hiện 50 dạng và logo cũ—Cần làm

11Chỉ số thành công03/11/2026

Các mức dưới đây là mục tiêu đề xuất để đội thảo luận, áp dụng sau khi kích hoạt; chưa có số liệu nền.

Chỉ sốCách đoMục tiêu đề xuất
Đăng nhập thành côngLượt đăng nhập thành công trên tổng lượt thử≥ 85%
Chuyển từ đăng ký sang đăng nhậpTỷ lệ lượt nhận thông báo "đã có tài khoản FLYER" đăng nhập thành công trong cùng phiên≥ 70%
Lỗi máy chủ tài khoảnTỷ lệ phản hồi 502 trên tổng lượt đăng nhập< 1%
An toànSự cố lộ mật khẩu hoặc token production0
Dùng nút Đăng nhậpTỷ lệ người xem trang giới thiệu nhấn Đăng nhậpĐo 2 tuần đầu để đặt mốc

12Câu hỏi mở03/11/2026

  • Đăng ký production có OTP. Có nối luồng OTP qua SMS để số mới trở thành tài khoản FLYER thật không? Hiện số mới chỉ vào bản dùng thử.
  • Đăng nhập bằng Google. Nút "Đăng Nhập Với Google" trên trang đăng nhập không hoạt động với cách đăng nhập này, vì Worker chỉ kiểm mật khẩu. Ẩn nút trên trogiang.ai, hay nối đăng nhập Google qua production?
  • giaovien.phongthiao.com. Trang này vẫn dùng mã truy cập và đăng nhập trong trình duyệt. Có chuyển sang cùng cách đăng nhập với Trogiang.ai không?

Trang trogiang.ai chạy thật bên trong khung iPhone và iPad. Cùng một địa chỉ nạp vào cả hai khung để thấy thanh điều hướng và nút Đăng nhập đổi theo bề ngang.

Trang đăng nhậpCho tới khi khóa SESSION_SECRET được đặt (bước 2, mục 10 của tab PRD), /vi/login chuyển người xem vào ứng dụng với dữ liệu mẫu.
Màn
iPad
9:41
iPhone 15 · 393 × 852
9:41
iPad Air 11" · 820 × 1180

Mở riêng trang đang xem: trogiang.ai/

Tab này ghi lại bản đang chạy trên https://trogiang.ai. Ảnh chụp và kiểm tra ngày 03/11/2026.

Đã triển khai, chưa kích hoạtNút Đăng nhập, logo, ảnh tính năng và số 115 dạng đã lên. Đăng nhập bằng tài khoản FLYER chờ khóa SESSION_SECRET trên hai Worker.

Kiểm tra trực tiếp ngày 03/11/2026

Hạng mụcKết quả
Nút Đăng nhập (máy tính, điện thoại)Đạt Hiển thị, dẫn tới /vi/login
/api/demo-guest?next=/vi/exploreĐạt 302 tới /vi/explore
/api/demo-sessionChưa kích hoạt 404
/vi/login với người xem mớiChưa kích hoạt Chuyển vào ứng dụng, dữ liệu mẫu
LogoĐạt new-icon.png, trùng tệp của giaovien.phongthiao.com
Ảnh tính năngĐạt 515 × 322 trên máy tính, 348 × 218 trên điện thoại
Số dạng trên trang giới thiệuĐạt 115 dạng: 16 chung và 99 theo môn
Nội dung ảnh builder.pngCần làm Còn hiện 50 dạng và logo cũ

Màn hình production · 03/11/2026

Đầu trang giới thiệu trogiang.ai

Trang giới thiệu · https://trogiang.ai/. Thanh điều hướng có nút Đăng nhập; ảnh Builder bên phải đúng tỉ lệ. Chụp 03/11/2026.

Chín thẻ môn học với số dạng

Chín môn học · mỗi thẻ ghi số dạng câu hỏi của môn. Chụp 03/11/2026.

Phần Một trợ giảng, trọn vòng dạy học với số 115 dạng

Một trợ giảng, trọn vòng dạy học · thẻ "Soạn đề theo môn" ghi 115 dạng câu hỏi. Chụp 03/11/2026.

Phần Trình soạn hiểu từng môn với ảnh tính năng đúng tỉ lệ

Trình soạn hiểu từng môn · ảnh editor.png sau khi sửa. Chụp 03/11/2026.

Mở /vi/login khi chưa kích hoạt: chuyển vào trang Khám phá

Mở /vi/login khi chưa kích hoạt · người xem được chuyển vào trang Khám phá với dữ liệu mẫu. Chụp 03/11/2026.

VVideo giới thiệu · hoạt hình 2D

Video giới thiệu dạng hoạt hình 2D của tính năng này sẽ được bổ sung sau.