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. 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ữ provincessubjects 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.