Skip to content

Quản trị dữ liệu ​

Nạp dữ liệu thật ​

Giai đoạn 1 chưa có giao diện quản trị. Dữ liệu nạp bằng SQL qua wrangler d1 execute.

bash
cd chuyenchon.com/apps/api
npx wrangler d1 execute chuyenchon --remote --file=./data/truong-2027.sql

Sau mỗi lần nạp hoặc sửa hàng loạt, bắt buộc dựng lại chỉ mục tìm kiếm:

bash
curl -X POST https://api.chuyenchon.com/v1/admin/reindex \
  -H "Authorization: Bearer $ADMIN_TOKEN"

Bỏ bước này thì bản ghi mới không xuất hiện trong ô tìm kiếm dù trang chi tiết vẫn truy cập được.

Quy tắc khi thêm bản ghi ​

  1. slug không dấu, viết thường, nối bằng dấu gạch ngang — dùng slugify() trong packages/shared.
  2. verification bắt đầu ở unverified; chỉ nâng lên verified khi đã đối chiếu nguồn gốc.
  3. Có source_url thì luôn điền — giao diện hiển thị đường dẫn đó cho người dùng.
  4. Ngày tháng theo YYYY-MM-DD.
  5. Số liệu tuyển sinh luôn gắn với một năm cụ thể; không sửa đè bản ghi năm cũ mà thêm dòng mới.

Thay dữ liệu mẫu bằng dữ liệu thật ​

  1. Xoá các bảng nội dung (giữ provinces và subjects nếu vẫn dùng được).
  2. Nạp dữ liệu thật.
  3. Gọi /v1/admin/reindex.
  4. Gỡ component SampleDataNotice khỏi apps/web/src/components/layout.tsx.
  5. Build lại website để prerender bám theo dữ liệu mới.

Sao lưu ​

bash
npx wrangler d1 export chuyenchon --remote --output=backup-$(date +%F).sql

Nên chạy trước mỗi lần nạp hàng loạt.

Thêm một thực thể mới ​

  1. Viết migration mới trong apps/api/migrations (đánh số tăng dần, không sửa file cũ).
  2. Thêm file route trong apps/api/src/routes và đăng ký ở src/index.ts.
  3. Bổ sung vào rebuildSearchIndex() nếu thực thể cần tìm kiếm được.
  4. Thêm kiểu dữ liệu ở apps/web/src/types.ts, trang ở apps/web/src/pages, route ở App.tsx.
  5. Thêm vào scripts/prerender.mjs nếu trang chi tiết cần lên chỉ mục tìm kiếm.

Tài liệu nội bộ dự án Chuyên Chọn.